Bug#907306: configure: error: gdk-pixbuf-query-loaders not found in path

Simon McVittie smcv at debian.org
Sun Aug 26 11:50:02 BST 2018


Control: retitle -1 configure: error: gdk-pixbuf-query-loaders not found in path

On Sun, 26 Aug 2018 at 09:07:44 +0000, Santiago Vila wrote:
> [...]
>  debian/rules build-indep
> dh build-indep --with gnome,gir
>    dh_update_autotools_config -i
>    debian/rules override_dh_autoreconf
> make[1]: Entering directory '/<<PKGBUILDDIR>>'
> dh_autoreconf --as-needed
> libtoolize: putting auxiliary files in '.'.
> libtoolize: copying file './ltmain.sh'
> libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'm4'.
> libtoolize: copying file 'm4/libtool.m4'
> libtoolize: copying file 'm4/ltoptions.m4'
> libtoolize: copying file 'm4/ltsugar.m4'
> libtoolize: copying file 'm4/ltversion.m4'
> libtoolize: copying file 'm4/lt~obsolete.m4'
> 
> [... snipped ...]
> 
> mkdir_p='$(MKDIR_P)'
> oldincludedir='/usr/include'
> pdfdir='${docdir}'
> prefix='/usr'
> program_transform_name='s,x,x,'
> psdir='${docdir}'
> runstatedir='/run'
[...]
> configure: exit 1
> dh_auto_configure: ./configure --build=x86_64-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=\${prefix}/lib/x86_64-linux-gnu --libexecdir=\${prefix}/lib/x86_64-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --enable-pixbuf-loader --enable-introspection --enable-vala --enable-gtk-doc returned exit code 1
> make[1]: *** [debian/rules:14: override_dh_auto_configure] Error 2
> make[1]: Leaving directory '/<<PKGBUILDDIR>>'
> make: *** [debian/rules:8: build-indep] Error 2
> dpkg-buildpackage: error: debian/rules build-indep subprocess returned exit status 2

Unfortunately you removed the interesting part of this log. If you
are routinely reporting FTBFS in Autotools packages, please attach the
whole log, or quote the part of configure's output just before it starts
dumping config.log and the part of config.log just before it starts
dumping cache variables. Those are the actual failure.

Luckily, this package also FTBFS on reproducible-builds, so I was able
to find the interesting parts of the log:

----8<----
...
checking for gio-2.0 gio-unix-2.0 gdk-pixbuf-2.0 cairo pangocairo... yes
checking for strtok_r... yes
checking for gtk+-3.0 >= 3.10.0... yes
checking whether to build the GDK-Pixbuf SVG loader... yes
checking for gdk-pixbuf-2.0 >= 2.20... yes
checking for gdk-pixbuf-query-loaders... no
checking for gdk-pixbuf-query-loaders-64... no
checking for gdk-pixbuf-query-loaders-32... no
configure: error: gdk-pixbuf-query-loaders not found in path           <--HERE
	tail -v -n \+0 config.log
==> config.log <==
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
...
----8<----

and

----8<----
...
configure:14630: checking for gdk-pixbuf-2.0 >= 2.20
configure:14637: $PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED"
configure:14640: $? = 0
configure:14654: $PKG_CONFIG --exists --print-errors "gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED"
configure:14657: $? = 0
configure:14715: result: yes
configure:14724: checking for gdk-pixbuf-query-loaders               }
configure:14757: result: no                                          }
configure:14724: checking for gdk-pixbuf-query-loaders-64            }
configure:14757: result: no                                          } <--HERE
configure:14724: checking for gdk-pixbuf-query-loaders-32            }
configure:14757: result: no                                          }
configure:14768: error: gdk-pixbuf-query-loaders not found in path   }

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=x86_64-pc-linux-gnu
ac_cv_c_bigendian=no
ac_cv_c_compiler_gnu=yes
ac_cv_env_CC_set=
...
----8<----

This looks like fallout from gdk-pixbuf (2.36.12-2) which removed
gdk-pixbuf-query-loaders in order to make libgdk-pixbuf2.0-dev Multi-Arch:
same. I used codesearch.debian.net to try to find packages that depended
on gdk-pixbuf-query-loaders and did not find any, but I must have missed
this one.

I don't see a way for gdk-pixbuf-query-loaders to be in PATH
while allowing cross-compilation to use libgdk-pixbuf2.0-dev:
gdk-pixbuf-query-loaders queries the available loaders for its own
architecture, but when cross-compiling on a build architecture for a
host architecture, the build machine can't necessarily run the host
architecture's gdk-pixbuf-query-loaders. It also can't be in a
Multi-Arch: foreign package because its output is architecture-specific.

Looking at librsvg, it seems we might be able to reinstate
gdk-pixbuf-query-loaders in libgdk-pixbuf2.0-dev but rename it to
$(DEB_HOST_ARCH)-gdk-pixbuf-query-loaders, and then change librsvg to
use AC_CHECK_TOOL instead of AC_PATH_PROGS; or install
gdk-pixbuf-query-loaders in /usr/lib/$(DEB_HOST_MULTIARCH) instead of
/usr/bin, then add that to PATH when building librsvg. That would mean
we can't cross-compile librsvg on a build machine that can't run host
binaries, but we'd still be able to cross-compile other gdk-pixbuf users.

The worst case scenario would be that we have to reinstate
gdk-pixbuf-query-loaders, reopen #689125 and mark it wontfix, but
hopefully that won't be necessary.

    smcv



More information about the pkg-gnome-maintainers mailing list