On Tue, 11 Jun 2024 at 13:28:52 +0200, Chris Hofstaedtler wrote:
> Maybe smcv can chime in here.

(I am not a maintainer of gdk-pixbuf and I do not intend to be any
sort of single point of failure for Debian's use of gdk-pixbuf; I have
sometimes done team uploads of it as part of the GNOME team, but please
don't rely on me to keep the distribution working. Please consider using
@packages.debian.org addresses if you want to get an opinion from the
uploaders of a related package without blocking on a named individual.)

On Tue, 11 Jun 2024 at 13:28:52 +0200, Chris Hofstaedtler wrote:
> On Tue, Jun 11, 2024 at 01:04:06PM +0200, Julian Wollrath wrote:
> > > > Specifically, the problem is that debian/libjxl-gdk-pixbuf.postinst
> > > > and debian/libjxl-gdk-pixbuf.postrm have hardcoded the amd64
> > > > architecture

If true (I have not checked) then that's clearly a bug.

> > in principle [gdk-pixbuf-query-loaders]
> > should be called, to make gdk-pixbuf
> > aware of the jpeg-xl loader.
>
> I think there is a better way than running a
> postinst script in each individual package (triggers?).

Yes, there is a better way, and it is triggers.

libgdk-pixbuf-2.0-0 registers a trigger on
/usr/lib/MULTIARCH/gdk-pixbuf-2.0/2.10.0/loaders which should result
in it automatically running
/usr/lib/MULTIARCH/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders
every time a package that provides a gdk-pixbuf loader is installed,
removed or updated.

As a result, a jpeg-xl loader for gdk-pixbuf should not need to do
anything special in its postinst at all: it should install a loader
that matches the naming convention set by gdk-pixbuf, and that should be
enough for the gdk-pixbuf packaging to handle the rest. If the trigger
is not sufficient, please report a bug with steps-to-reproduce.

The naming convention is ${gdk_pixbuf_moduledir}/*.so, where
${gdk_pixbuf_moduledir} should be discovered at build-time from
the gdk-pixbuf-2.0 pkgconf module. Hopefully the upstream build system
already does this correctly.

heif-gdk-pixbuf from src:libheif, librsvg2-common from src:rsvg, and
webp-pixbuf-loader from src:webp-pixbuf-loader might be good examples of
a working gdk-pixbuf loader.

heif-gdk-pixbuf and webp-pixbuf-loader do not seem to have any
hand-written code in their postinsts at all, so they completely rely on
gdk-pixbuf's triggers, and that seems to work fine in practice.

librsvg2-common does have code in its postinst, but it seems to be a
workaround for an old bug
(https://bugs.launchpad.net/ubuntu/+source/librsvg/+bug/719861) and
is probably unnecessary now that gdk-pixbuf is using interest-noawait
triggers.

    smcv

Reply via email to