Subject: Re: bug#49122: gobject-introspection and not finding cairo

From: Maxim Cournoyer <[email-masked]>
Date: Sat, 20 Jan 2024 17:18:01 -0500

Hi John,

John Kehayias <[email-masked]> writes:

> I've managed to fix the initial problem I noted, but this would depend
> on having cairo as an input so that gobject-introspection can find the
> library to patch the typelib. Unfortunately, this would be a circular
> dependency. This is a long standing issue with how cairo is handled
> here (see, e.g.,
> https://gitlab.freedesktop.org/cairo/cairo/-/issues/141).
>
> I don't know how circular dependencies are solved in guix, so I'm not
> sure what to do to fix this. gobject-introspection doesn't need cairo
> to build or function, so the build depends is not really needed other
> than to fix this bug. So this could be done with a separate package or
> in two steps?

Upstream said:

--8<---------------cut here---------------start------------->8---
The Cairo API is not really introspectable, because its type system does
not use GObject.

We could generate the introspection data by using a filter script to
turn the snake case cairo_*_t types into the expected CamelCase Cairo*
types, but it's not entirely trivial, and it would still not by usable
by anything.
--8<---------------cut here---------------end--------------->8---

Introducing an extra dependency to the closure of gobject-introspection,
we'd have applications soft-linking to potentially different versions of
cairo (cairo and cairo-sans-poppler), which seems ugly.

Could we move the cairo.gir file to the cairo package, and this would be
picked up by gobject-introspection if at the right location?

It'd differ from upstream, but that'd be cleaner.  Perhaps we could
contribute such fix for inclusion upstream too.

-- 
Thanks,
Maxim