[PATCH 2/2] meson: Declare GLIB_VERSION_* macros at configure

Michal Privoznik posted 2 patches 4 years, 9 months ago
There is a newer version of this series
[PATCH 2/2] meson: Declare GLIB_VERSION_* macros at configure
Posted by Michal Privoznik 4 years, 9 months ago
So far we have three places where glib version is recorded:
meson.build and then in config.h. The latter is so well hidden
that it's easy to miss when bumping minimal glib version in the
former. With a bit of python^Wmeson string magic
GLIB_VERSION_MIN_REQUIRED and GLIB_VERSION_MAX_ALLOWED macros can
be defined to match glib_version from meson.build.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
---
 config.h    | 10 ----------
 meson.build |  7 +++++++
 2 files changed, 7 insertions(+), 10 deletions(-)

diff --git a/config.h b/config.h
index ca6720f37d..0eacfd139d 100644
--- a/config.h
+++ b/config.h
@@ -51,13 +51,3 @@
 #else
 # error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
 #endif
-
-/* Ask for warnings for anything that was marked deprecated in
- * the defined version, or before. It is a candidate for rewrite.
- */
-#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48
-
-/* Ask for warnings if code tries to use function that did not
- * exist in the defined version. These risk breaking builds
- */
-#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48
diff --git a/meson.build b/meson.build
index 951da67896..597e5d8a13 100644
--- a/meson.build
+++ b/meson.build
@@ -949,6 +949,13 @@ endif
 glib_dep = declare_dependency(
   dependencies: [ glib_dep, gobject_dep, gio_dep ],
 )
+glib_version_arr=glib_version.split('.')
+# Ask for warnings for anything that was marked deprecated in
+# the defined version, or before. It is a candidate for rewrite.
+conf.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_' + glib_version_arr[0] + '_' + glib_version_arr[1])
+# Ask for warnings if code tries to use function that did not
+# exist in the defined version. These risk breaking builds
+conf.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_' + glib_version_arr[0] + '_' + glib_version_arr[1])
 
 glusterfs_version = '3.4.1'
 glusterfs_dep = dependency('glusterfs-api', version: '>=' + glusterfs_version, required: get_option('glusterfs'))
-- 
2.26.3

Re: [PATCH 2/2] meson: Declare GLIB_VERSION_* macros at configure
Posted by Pavel Hrdina 4 years, 9 months ago
On Fri, Apr 30, 2021 at 07:18:49AM +0200, Michal Privoznik wrote:
> So far we have three places where glib version is recorded:
> meson.build and then in config.h. The latter is so well hidden
> that it's easy to miss when bumping minimal glib version in the
> former. With a bit of python^Wmeson string magic
> GLIB_VERSION_MIN_REQUIRED and GLIB_VERSION_MAX_ALLOWED macros can
> be defined to match glib_version from meson.build.
> 
> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
> ---
>  config.h    | 10 ----------
>  meson.build |  7 +++++++
>  2 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/config.h b/config.h
> index ca6720f37d..0eacfd139d 100644
> --- a/config.h
> +++ b/config.h
> @@ -51,13 +51,3 @@
>  #else
>  # error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
>  #endif
> -
> -/* Ask for warnings for anything that was marked deprecated in
> - * the defined version, or before. It is a candidate for rewrite.
> - */
> -#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48
> -
> -/* Ask for warnings if code tries to use function that did not
> - * exist in the defined version. These risk breaking builds
> - */
> -#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48
> diff --git a/meson.build b/meson.build
> index 951da67896..597e5d8a13 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -949,6 +949,13 @@ endif
>  glib_dep = declare_dependency(
>    dependencies: [ glib_dep, gobject_dep, gio_dep ],
>  )
> +glib_version_arr=glib_version.split('.')

s/=/ = /

In the spirit of removing duplicated code how about having another
variable:

glib_version_str = 'GLIB_VERSION_@0@_@1@'.format(glib_version_arr[0], glib_version_arr[1])

and using it in the following code?

> +# Ask for warnings for anything that was marked deprecated in
> +# the defined version, or before. It is a candidate for rewrite.
> +conf.set('GLIB_VERSION_MIN_REQUIRED', 'GLIB_VERSION_' + glib_version_arr[0] + '_' + glib_version_arr[1])
> +# Ask for warnings if code tries to use function that did not
> +# exist in the defined version. These risk breaking builds
> +conf.set('GLIB_VERSION_MAX_ALLOWED', 'GLIB_VERSION_' + glib_version_arr[0] + '_' + glib_version_arr[1])
>  
>  glusterfs_version = '3.4.1'
>  glusterfs_dep = dependency('glusterfs-api', version: '>=' + glusterfs_version, required: get_option('glusterfs'))

Otherwise looks good.

Pavel
Re: [PATCH 2/2] meson: Declare GLIB_VERSION_* macros at configure
Posted by Michal Prívozník 4 years, 9 months ago
On 5/3/21 10:17 AM, Pavel Hrdina wrote:
> On Fri, Apr 30, 2021 at 07:18:49AM +0200, Michal Privoznik wrote:
>> So far we have three places where glib version is recorded:
>> meson.build and then in config.h. The latter is so well hidden
>> that it's easy to miss when bumping minimal glib version in the
>> former. With a bit of python^Wmeson string magic
>> GLIB_VERSION_MIN_REQUIRED and GLIB_VERSION_MAX_ALLOWED macros can
>> be defined to match glib_version from meson.build.
>>
>> Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
>> ---
>>  config.h    | 10 ----------
>>  meson.build |  7 +++++++
>>  2 files changed, 7 insertions(+), 10 deletions(-)
>>
>> diff --git a/config.h b/config.h
>> index ca6720f37d..0eacfd139d 100644
>> --- a/config.h
>> +++ b/config.h
>> @@ -51,13 +51,3 @@
>>  #else
>>  # error You either need at least GCC 4.8 or Clang 3.4 or XCode Clang 5.1 to compile libvirt
>>  #endif
>> -
>> -/* Ask for warnings for anything that was marked deprecated in
>> - * the defined version, or before. It is a candidate for rewrite.
>> - */
>> -#define GLIB_VERSION_MIN_REQUIRED GLIB_VERSION_2_48
>> -
>> -/* Ask for warnings if code tries to use function that did not
>> - * exist in the defined version. These risk breaking builds
>> - */
>> -#define GLIB_VERSION_MAX_ALLOWED GLIB_VERSION_2_48
>> diff --git a/meson.build b/meson.build
>> index 951da67896..597e5d8a13 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -949,6 +949,13 @@ endif
>>  glib_dep = declare_dependency(
>>    dependencies: [ glib_dep, gobject_dep, gio_dep ],
>>  )
>> +glib_version_arr=glib_version.split('.')
> 
> s/=/ = /
> 
> In the spirit of removing duplicated code how about having another
> variable:
> 
> glib_version_str = 'GLIB_VERSION_@0@_@1@'.format(glib_version_arr[0], glib_version_arr[1])
> 
> and using it in the following code?

Sounds good. I was happy that it worked and did not think that much
about it. Let me send v2.

Michal