Pino Toscano
2020-Jun-01 07:44 UTC
[Libguestfs] [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
Richard W.M. Jones
2020-Jun-01 13:10 UTC
[Libguestfs] [v2v PATCH v2] libosinfo: do not declare OsinfoList auto-cleanup in certain situations
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
Reasonably Related Threads
- [v2v PATCH] libosinfo: declare autocleanup funcs with libosinfo < 1.8.0
- [v2v PATCH] libosinfo: remove auto-cleanup for OsinfoList
- [v2v PATCH] libosinfo: declare OsinfoList auto-cleanup with glib < 2.63.3
- [v2v PATCH v2 0/3] Use libosinfo for query device drivers
- [v2v PATCH 0/3] Use libosinfo for query device drivers