So an update on all this First I thought I might try and layout, what I was trying to do what I thought, having linked up the dependencies in the BLFS Book, might not require me to build Cairo.
I have a self-contained tarball of Firefox, but I when I came to run it, i am told that I need a fixup for libgtk-3.so. I thus looked to build GTK+-3.24.22. The dependency tree I arrived at where [] indicates that I already have the packages was (best viewed in monospaced text) GTK+-3.24.22 at-spi2-atk-2.34.2 [libepoxy-1.5.4] gdk-pixbuf-2.40.0 Pango-1.46.0 at-spi2-atk-2.34.2 gdk-pixbuf-2.40.0 Pango-1.46.0 | | / | | | at-spi2-core-2.36.0 ATK-2.36.0 / shared-mine-info-2.0 | FriBidi-1.0.9 | \ | / | | | +------+---------+ | Recomp Fontconfig-2.13.1 | | | | dbus-1.12.20 [GLib-2.64.4] | Recomp FreeType-2.10.2 | | | HarfBuzz-2.7.1 | itstool-2.0.6 and it was all looking good until my issue with Pango 1.46.0. OK, so using Pango 1.48.0, as Pierre's investigations suggest will allow one to 'turn off" Cairo, results in Run-time dependency freetype2 found: YES 23.2.17 Using 'PKG_CONFIG_PATH' from environment with value: '/opt/Xorg/lib/pkgconfig:/opt/Xorg/share/pkgconfig' Run-time dependency xft found: YES 2.3.3 Using 'PKG_CONFIG_PATH' from environment with value: '/opt/Xorg/lib/pkgconfig:/opt/Xorg/share/pkgconfig' Run-time dependency xrender found: YES 0.9.10 Run-time dependency cairo found: NO (tried pkgconfig and cmake) Run-time dependency cairo found: NO (tried pkgconfig and cmake) Looking for a fallback subproject for the dependency cairo Subproject directory not found and cairo.wrap file not found Subproject subprojects/cairo is buildable: NO (disabling) Dependency cairo from subproject subprojects/cairo found: NO Dependency sysprof-capture-4 skipped: feature sysprof disabled Configuring config.h using configuration Configuring pango-features.h using configuration Program glib-mkenums found: YES Program g-ir-scanner found: NO Program help2man found: NO Build targets in project: 20 pango 1.48.0 Subprojects cairo: NO Subproject directory not found and cairo.wrap file not found which as Pierre points out has used the "auto" to determine that Cairo isn't there and so doeswn't pull it into the build. So far, so good. Now we move through a few more packages gdk-pixbuf which seems to require an explicit -Dgir=false to avoid ERROR: Dependency "gobject-introspection-1.0" not found, tried pkgconfig and cmake I note that in a few places in the Book, -Dgir=false is explicitly listed as a possible switch but it wasn't for gdk-pixbuf ATK doesn't respect -Dgir=false and still gives ERROR: Dependency "gobject-introspection-1.0" not found, tried pkgconfig and cmake but it does respect (I'm learning to look in meson_options!) -Dintrospection=false Then at-spi2-core at-spi2-atk both seem to work as desribed in the Book, and finally we come to build the top of the tree GTK+-3.24.22 Note that, in the Book, GTK+-3.24.22 DOES NOT have a Required dependency on Cairo, and indeed doesn't even mention it as Recommeded nor Optional, and clearly, if we follow the dependencies through, there's no implied dependency either, however, what the Book's configure command generates is checking for BASE_DEPENDENCIES... no configure: error: Package requirements (glib-2.0 >= 2.57.2 atk >= 2.15.1 pango >= 1.41.0 fribidi >= 0.19.7 cairo >= 1.14.0 cairo-gobject >= 1.14.0 gdk-pixbuf-2.0 >= 2.30.0) were not met: No package 'cairo' found No package 'cairo-gobject' found and, if the "Prerequisites" section in the GTK readme/install docs is to be believed, vis: GTK+ requires the following packages: - The GLib, Pango, GdkPixbuf, ATK and cairo libraries, available at the same location as GTK+. GTK+ 3.24.22 requires at least GLib 2.57.2, Pango 1.41.0, GdkPixbuf 2.30.0, ATK 2.15.1 and cairo 1.14.0. then the suggestion is that GTK+-3.24.22 SHOULD have Cairo as a Required dependency. I'm using SHOULD there because the dependecy tree I followed suggests that it would be possible to build teh dependencies without Cairo, in which case as Cairo is NOT an implicit "Required" depdency it should be explict for GTK+. Going a bit deeper, I looked in the configure file (thankfully, GTK+ has not become a meson BS only build yet) and saw stanzas like this: ENABLE_ON_X11='%' if test "$enable_x11_backend" = "yes"; then # GDK calls the xlib backend "x11," cairo calls it "xlib." Other # backend names are identical. cairo_backends="$cairo_backends cairo-xlib" GDK_BACKENDS="$GDK_BACKENDS x11" backend_immodules="$backend_immodules,xim" GDK_WINDOWING="$GDK_WINDOWING #define GDK_WINDOWING_X11" ENABLE_ON_X11='' fi which suggest that a Cairo backend will be added even for the basic X11 target. I haven't been able to find a way to tell GTK+3 not to build against Cairo, so as I note, give the Prerequisites above, I think Cairo should be a Required dependency for GTK+3, in which case, all my attemptsto build the dependency tree without it have been in vain. Bugger! Hoping that info might be of some use in disentangling the rat's nest of dependencies, although I doubt it will do much to clear up those mulitple meson BS ways to turn off introspection, via -Dgir=false -Dintrospection=false although I appreciate that the 'g" in "gir" does imply gobject-introspection, whereas "introspection" is less specific and that there may be other introspection going on. Thanks again Pierre, for looking into this, but I guess I'll be rebuilding some, if not all, of it, with Cairo. Kevin -- http://lists.linuxfromscratch.org/listinfo/blfs-dev FAQ: http://www.linuxfromscratch.org/blfs/faq.html Unsubscribe: See the above information page