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

Reply via email to