[v2v PATCH v2] libosinfo: do not declare OsinfoList auto-cleanup in certain situations
libosinfo changed the way OsinfoList is declared in 1.7.0, however that was changed back to the old way in 1.8.0; the change was an ABI break, and made OsinfoList a Module class. Starting from 2.63.3, Module classes have already auto-cleanup functions declared for them, leading to double declarations in certain setups. Hence, do some version check dance to declare the OsinfoList only when using "safe" versions of libosinfo and glib. Reported by: Kevin Locke. --- v2v/libosinfo-c.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/v2v/libosinfo-c.c b/v2v/libosinfo-c.c index 1ab6bb4d..e5327dff 100644 --- a/v2v/libosinfo-c.c +++ b/v2v/libosinfo-c.c @@ -44,7 +44,16 @@ G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoFilter, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoLoader, g_object_unref) +/* + * Because of a bug in OsinfoList in libosinfo 1.7.0 (fixed in 1.8.0), + * and a glib auto-cleanup addition for Module classes in 2.63.3, + * avoid declaring this when: + * - libosinfo is >= 1.7.0 and < 1.8.0 + * - glib is >= 2.63.3 + */ +#if !IS_LIBOSINFO_VERSION(1, 7, 0) || IS_LIBOSINFO_VERSION(1, 8, 0) || !GLIB_CHECK_VERSION(2, 63, 3) G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoList, g_object_unref) +#endif G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoOsList, g_object_unref) typedef OsinfoDb *OsinfoDb_t; -- 2.25.4
On Mon, Jun 01, 2020 at 09:44:50AM +0200, Pino Toscano wrote:
libosinfo changed the way OsinfoList is declared in 1.7.0, however that was changed back to the old way in 1.8.0; the change was an ABI break, and made OsinfoList a Module class. Starting from 2.63.3, Module classes have already auto-cleanup functions declared for them, leading to double declarations in certain setups.
Hence, do some version check dance to declare the OsinfoList only when using "safe" versions of libosinfo and glib.
Reported by: Kevin Locke. --- v2v/libosinfo-c.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/v2v/libosinfo-c.c b/v2v/libosinfo-c.c index 1ab6bb4d..e5327dff 100644 --- a/v2v/libosinfo-c.c +++ b/v2v/libosinfo-c.c @@ -44,7 +44,16 @@
G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoFilter, g_object_unref) G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoLoader, g_object_unref) +/* + * Because of a bug in OsinfoList in libosinfo 1.7.0 (fixed in 1.8.0), + * and a glib auto-cleanup addition for Module classes in 2.63.3, + * avoid declaring this when: + * - libosinfo is >= 1.7.0 and < 1.8.0 + * - glib is >= 2.63.3 + */ +#if !IS_LIBOSINFO_VERSION(1, 7, 0) || IS_LIBOSINFO_VERSION(1, 8, 0) || !GLIB_CHECK_VERSION(2, 63, 3) G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoList, g_object_unref) +#endif G_DEFINE_AUTOPTR_CLEANUP_FUNC(OsinfoOsList, g_object_unref)
typedef OsinfoDb *OsinfoDb_t;
Looks OK, ACK. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org
participants (2)
-
Pino Toscano -
Richard W.M. Jones