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