diff --git a/build-don-t-set-glib-version-constraints-for-g-ir-sc.patch b/build-don-t-set-glib-version-constraints-for-g-ir-sc.patch new file mode 100644 index 0000000000000000000000000000000000000000..5e8eae4eefdfaab9a518a31e3e7dab967317746d --- /dev/null +++ b/build-don-t-set-glib-version-constraints-for-g-ir-sc.patch @@ -0,0 +1,139 @@ +From 9a34c4ea55e0246c34896e48b8ecd637bc559ac7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= +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é +--- + 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 + diff --git a/libvirt-glib.spec b/libvirt-glib.spec index 3f3c0738d6791f0e6b5e1c530d51c8cf170a42f2..bc73ac63a159b09d55820e54163bc3c250d408f5 100644 --- a/libvirt-glib.spec +++ b/libvirt-glib.spec @@ -1,13 +1,15 @@ Name: libvirt-glib Version: 4.0.0 -Release: 1 +Release: 2 Summary: libvirt glib integration for events License: LGPLv2+ URL: http://libvirt.org/ Source0: https://libvirt.org/sources/glib/%{name}-%{version}.tar.xz BuildRequires: glib2-devel >= 2.48.0 libvirt-devel >= 1.2.8 gobject-introspection-devel BuildRequires: libxml2-devel >= 2.9.1 vala gettext gtk-doc meson -Patch0: libvirt-glib-4.0.0-cast-align.patch + +Patch00: libvirt-glib-4.0.0-cast-align.patch +Patch01: build-don-t-set-glib-version-constraints-for-g-ir-sc.patch Provides: libvirt-gconfig libvirt-gobject Obsoletes: libvirt-gconfig libvirt-gobject @@ -63,6 +65,9 @@ This package provides development header files and libraries for integration bet %{_datadir}/vala/vapi/libvirt-g* %changelog +* Fri Nov 11 2022 yezengruan - 4.0.0-2 +- build: don't set glib version constraints for g-ir-scanner + * Wed Jun 30 2021 weijin deng - 4.0.0-1 - Upgrade to 4.0.0 - Use meson rebuild