140 lines
5.2 KiB
Diff
140 lines
5.2 KiB
Diff
|
|
From 9a34c4ea55e0246c34896e48b8ecd637bc559ac7 Mon Sep 17 00:00:00 2001
|
|||
|
|
From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= <berrange@redhat.com>
|
|||
|
|
Date: Mon, 27 Sep 2021 14:58:17 +0100
|
|||
|
|
Subject: [PATCH] build: don't set glib version constraints for g-ir-scanner
|
|||
|
|
MIME-Version: 1.0
|
|||
|
|
Content-Type: text/plain; charset=UTF-8
|
|||
|
|
Content-Transfer-Encoding: 8bit
|
|||
|
|
|
|||
|
|
add_global_arguments() sets flags that apply to all invokations of the C
|
|||
|
|
compiler toolchain by meson. On the surface it sounds fine to use this
|
|||
|
|
for setting
|
|||
|
|
|
|||
|
|
-DGLIB_VERSION_MIN_REQUIRED=VER
|
|||
|
|
-DGLIB_VERSION_MAX_ALLOWED=VER
|
|||
|
|
|
|||
|
|
as we want all our code to be constrained by these declared glib
|
|||
|
|
versions to prevent us accidentally using APIS from newer glib by
|
|||
|
|
mistake.
|
|||
|
|
|
|||
|
|
A subtle problem was revealed with the arrival of gobject-introspection
|
|||
|
|
version 1.70. The g-ir-scanner program auto-generates some glib code
|
|||
|
|
for handling introspection, and this generated code uses glib APIs that
|
|||
|
|
are newer than our declared version and this triggers compile failures
|
|||
|
|
|
|||
|
|
/root/rpmbuild/BUILD/libvirt-glib-4.0.0/redhat-linux-build/tmp-introspectkrq1wuz9/LibvirtGLib-1.0.c:251:3: error: ‘G_TYPE_FLAG_FINAL’ is deprecated: Not available before 2.70 [-Werror=deprecated-declarations]
|
|||
|
|
251 | if (G_TYPE_IS_FINAL (type))
|
|||
|
|
| ^~
|
|||
|
|
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
|
|||
|
|
from /usr/include/glib-2.0/gobject/gbinding.h:29,
|
|||
|
|
from /usr/include/glib-2.0/glib-object.h:22,
|
|||
|
|
from /root/rpmbuild/BUILD/libvirt-glib-4.0.0/redhat-linux-build/tmp-introspectkrq1wuz9/LibvirtGLib-1.0.c:30:
|
|||
|
|
|
|||
|
|
This is actually harmless, because systems with an older glib will also
|
|||
|
|
have older g-ir-scanner and thus not be using these new APIs.
|
|||
|
|
|
|||
|
|
We need to exclude the glib version constraints from code generated by
|
|||
|
|
glib tools, and thus means we have to stop using add_global_arguments()
|
|||
|
|
and set cflags explicitly on each target.
|
|||
|
|
|
|||
|
|
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
|
|||
|
|
---
|
|||
|
|
examples/meson.build | 2 ++
|
|||
|
|
libvirt-gconfig/tests/meson.build | 3 +++
|
|||
|
|
meson.build | 5 ++---
|
|||
|
|
tests/meson.build | 2 ++
|
|||
|
|
4 files changed, 9 insertions(+), 3 deletions(-)
|
|||
|
|
|
|||
|
|
diff --git a/examples/meson.build b/examples/meson.build
|
|||
|
|
index 221356b..c1779e3 100644
|
|||
|
|
--- a/examples/meson.build
|
|||
|
|
+++ b/examples/meson.build
|
|||
|
|
@@ -1,5 +1,6 @@
|
|||
|
|
executable(
|
|||
|
|
'event-test',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['event-test.c'],
|
|||
|
|
dependencies: libvirt_glib_dep,
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
@@ -7,6 +8,7 @@ executable(
|
|||
|
|
|
|||
|
|
executable(
|
|||
|
|
'conn-test',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['conn-test.c'],
|
|||
|
|
dependencies: [libvirt_glib_dep, libvirt_gconfig_dep, libvirt_gobject_dep],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
diff --git a/libvirt-gconfig/tests/meson.build b/libvirt-gconfig/tests/meson.build
|
|||
|
|
index 7d85f03..2a1b252 100644
|
|||
|
|
--- a/libvirt-gconfig/tests/meson.build
|
|||
|
|
+++ b/libvirt-gconfig/tests/meson.build
|
|||
|
|
@@ -1,5 +1,6 @@
|
|||
|
|
test_domain_create = executable(
|
|||
|
|
'test-domain-create',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['test-domain-create.c'],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
dependencies: [libvirt_gconfig_dep]
|
|||
|
|
@@ -7,6 +8,7 @@ test_domain_create = executable(
|
|||
|
|
|
|||
|
|
test_domain_parse = executable(
|
|||
|
|
'test-domain-parse',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['test-domain-parse.c'],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
dependencies: [libvirt_gconfig_dep]
|
|||
|
|
@@ -14,6 +16,7 @@ test_domain_parse = executable(
|
|||
|
|
|
|||
|
|
test_capabilities_parse = executable(
|
|||
|
|
'test-capabilities-parse',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['test-capabilities-parse.c'],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
dependencies: [libvirt_gconfig_dep]
|
|||
|
|
diff --git a/meson.build b/meson.build
|
|||
|
|
index c4e69dd..eb1f313 100644
|
|||
|
|
--- a/meson.build
|
|||
|
|
+++ b/meson.build
|
|||
|
|
@@ -50,9 +50,6 @@ libvirt_dep = dependency('libvirt', version: '>=' + libvirt_version)
|
|||
|
|
libxml_min_version='>=2.9.1'
|
|||
|
|
libxml_dep = dependency('libxml-2.0', version: libxml_min_version)
|
|||
|
|
|
|||
|
|
-add_global_arguments('-DGLIB_VERSION_MIN_REQUIRED=@0@'.format(glib_min_version_symbol), language: 'c')
|
|||
|
|
-add_global_arguments('-DGLIB_VERSION_MAX_ALLOWED=@0@'.format(glib_min_version_symbol), language: 'c')
|
|||
|
|
-
|
|||
|
|
prefix = get_option('prefix')
|
|||
|
|
localedir = join_paths(prefix, get_option('localedir'))
|
|||
|
|
datadir = join_paths(prefix, get_option('datadir'))
|
|||
|
|
@@ -520,6 +517,8 @@ common_cflags = [
|
|||
|
|
'-DLOCALEDIR="@0@"'.format(localedir),
|
|||
|
|
'-DDATADIR="@0@"'.format(datadir),
|
|||
|
|
'-DLIBVIRT_GLIB_BUILD',
|
|||
|
|
+ '-DGLIB_VERSION_MIN_REQUIRED=@0@'.format(glib_min_version_symbol),
|
|||
|
|
+ '-DGLIB_VERSION_MAX_ALLOWED=@0@'.format(glib_min_version_symbol),
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
gnome = import('gnome')
|
|||
|
|
diff --git a/tests/meson.build b/tests/meson.build
|
|||
|
|
index df55930..444645f 100644
|
|||
|
|
--- a/tests/meson.build
|
|||
|
|
+++ b/tests/meson.build
|
|||
|
|
@@ -4,6 +4,7 @@ testenv.append('G_TEST_BUILDDIR', meson.current_build_dir())
|
|||
|
|
|
|||
|
|
test_gconfig = executable(
|
|||
|
|
'test-gconfig',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['test-gconfig.c'],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
dependencies: [libvirt_gconfig_dep]
|
|||
|
|
@@ -12,6 +13,7 @@ test('gconfig', test_gconfig, env: testenv)
|
|||
|
|
|
|||
|
|
test_events = executable(
|
|||
|
|
'test-events',
|
|||
|
|
+ c_args: common_cflags,
|
|||
|
|
sources: ['test-events.c'],
|
|||
|
|
include_directories: top_include_dir,
|
|||
|
|
dependencies: [libvirt_glib_dep]
|
|||
|
|
--
|
|||
|
|
2.27.0
|
|||
|
|
|