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 _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
