Fallback subproject Pango and GDK-PixBuf build configuration errors
I am trying to install GTK+3.94 with the broadway backend on a headless CentOS-7 server with hopes. This probably isn't very well supported, but I have almost got it built. I don't think my setup is too terribly bad though.
Current behavior
Misconfigured git URLs cause the git clone to fail for Pango and GDK-PixBuf, and when I think I have fixed that the GIR files for those subprojects are misplaced.
Looking for a fallback subproject for the dependency pango
Cloning into 'pango'...
error: RPC failed; result=22, HTTP code = 404
fatal: The remote end hung up unexpectedly
Couldn't use fallback subproject in subprojects/pango for the dependency pango
Reason: Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2957, in dependency_fallback
self.do_subproject(dirname, sp_kwargs)
File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2230, in do_subproject
resolved = r.resolve(dirname)
File "/usr/lib/python3.6/site-packages/mesonbuild/wrap/wrap.py", line 148, in resolve
self.get_git(p)
File "/usr/lib/python3.6/site-packages/mesonbuild/wrap/wrap.py", line 211, in get_git
p.get('directory')], cwd=self.subdir_root)
File "/usr/lib64/python3.6/subprocess.py", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['git', 'clone', 'https://git.gnome.org/browse/pango', 'pango']' returned non-zero exit status 128.
Looking for a fallback subproject for the dependency gdk-pixbuf-2.0
Cloning into 'gdk-pixbuf'...
error: RPC failed; result=22, HTTP code = 404
fatal: The remote end hung up unexpectedly
Couldn't use fallback subproject in subprojects/gdk-pixbuf for the dependency gdk-pixbuf-2.0
Reason: Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2957, in dependency_fallback
self.do_subproject(dirname, sp_kwargs)
File "/usr/lib/python3.6/site-packages/mesonbuild/interpreter.py", line 2230, in do_subproject
resolved = r.resolve(dirname)
File "/usr/lib/python3.6/site-packages/mesonbuild/wrap/wrap.py", line 148, in resolve
self.get_git(p)
File "/usr/lib/python3.6/site-packages/mesonbuild/wrap/wrap.py", line 211, in get_git
p.get('directory')], cwd=self.subdir_root)
File "/usr/lib64/python3.6/subprocess.py", line 291, in check_call
raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['git', 'clone', 'https://git.gnome.org/browse/gdk-pixbuf', 'gdk-pixbuf']' returned non-zero exit status 128.
subprojects/pango.wrap
[wrap-git]
directory=pango
url=https://git.gnome.org/browse/pango
push-url=ssh://git.gnome.org/git/pango
revision=origin/master
subprojects/gdk-pixbuf.wrap
[wrap-git]
directory=gdk-pixbuf
url=https://git.gnome.org/browse/gdk-pixbuf
push-url=ssh://git.gnome.org/git/gdk-pixbuf
revision=origin/master
After I fix the git URLs (and fix that graphene thing) meson will configure everything, but ninja complains about the pango and gdk-pixbuf .gir missing from /usr/share/gir-1.0
Sure enough, they exist in the wrong locations. _build/subprojects/gdk-pixbuf/gdk-pixbuf/GdkPixbuf-2.0.gir
_build/subprojects/pango/pango/Pango-1.0.gir
I'm not sure if this is related to the git repo misconfiguration or an entirely different issue.
[2042/2659] Generating Gsk-4.0.gir with a custom command.
FAILED: gtk/Gsk-4.0.gir
/usr/bin/g-ir-scanner -pthread -I/usr/include/gobject-introspection-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include --no-libtool --namespace=Gsk --nsversion=4.0 --warn-all --output gtk/Gsk-4.0.gir --c-include=gsk/gsk.h --quiet -DGSK_COMPILATION -I/tmp/gtk+-3.94.0/gtk -I/tmp/gtk+-3.94.0/_build/gtk -I./. -I../. -I./gdk/. -I../gdk/. -I./gsk -I../gsk -I./gtk -I../gtk -I./subprojects/glib/gmodule -I../subprojects/glib/gmodule -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./. -I../. -I./gdk/x11 -I../gdk/x11 -I./gdk/. -I../gdk/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./. -I../. -I./. -I../. -I./gdk/x11 -I../gdk/x11 -I./gdk/. -I../gdk/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. --filelist=/tmp/gtk+-3.94.0/_build/gtk/gtk@@gtk-4@sha/Gsk_4.0_gir_filelist --include-uninstalled=gtk/Gdk-4.0.gir --include-uninstalled=subprojects/graphene/src/Graphene-1.0.gir --symbol-prefix=gsk --identifier-prefix=Gsk --pkg-export=gtk+-4.0 --cflags-begin -DG_LOG_USE_STRUCTURED=1 -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_54 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_56 '-DGTK_VERSION="3.94.0"' -D_GNU_SOURCE -DG_ENABLE_DEBUG -I./. -I../. -I./gdk/. -I../gdk/. -I./gsk -I../gsk -I./gtk -I../gtk -I./subprojects/glib/gmodule -I../subprojects/glib/gmodule -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./gdk/x11 -I../gdk/x11 -I./subprojects/gdk-pixbuf/gdk-pixbuf/pixops -I../subprojects/gdk-pixbuf/gdk-pixbuf/pixops -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -pthread -I/usr/include/atk-1.0 --cflags-end -L/tmp/gtk+-3.94.0/_build/gtk -L/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -lgraphene-1.0 --add-include-path=/tmp/gtk+-3.94.0/_build/gtk --add-include-path=/tmp/gtk+-3.94.0/_build/subprojects/graphene/src --add-include-path=/tmp/gtk+-3.94.0/_build/gtk --add-include-path=/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gio -L/tmp/gtk+-3.94.0/_build/subprojects/glib/glib -L/tmp/gtk+-3.94.0/_build/subprojects/libepoxy/src -L/tmp/gtk+-3.94.0/_build/subprojects/pango/pango -L/tmp/gtk+-3.94.0/_build/subprojects/gdk-pixbuf/gdk-pixbuf -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gmodule -L/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gobject --library gtk-4 -lm -lgobject-2.0 -lglib-2.0 -lfribidi -lharfbuzz -lfontconfig -lfreetype -lcairo -lcairo-gobject -pthread -lgmodule-2.0 -lgio-2.0 -latk-1.0 -ldl -lrt
Couldn't find include 'GdkPixbuf-2.0.gir' (search path: '['/tmp/gtk+-3.94.0/_build/gtk', '/tmp/gtk+-3.94.0/_build/subprojects/graphene/src', '/tmp/gtk+-3.94.0/_build/gtk', '/tmp/gtk+-3.94.0/_build/subprojects/graphene/src', u'gir-1.0', u'/usr/share/gir-1.0', u'/usr/share/gir-1.0', u'/usr/share/gir-1.0']')
[1/617] Generating Gsk-4.0.gir with a custom command.
FAILED: gtk/Gsk-4.0.gir
/usr/bin/g-ir-scanner -pthread -I/usr/include/gobject-introspection-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include --no-libtool --namespace=Gsk --nsversion=4.0 --warn-all --output gtk/Gsk-4.0.gir --c-include=gsk/gsk.h --quiet -DGSK_COMPILATION -I/tmp/gtk+-3.94.0/gtk -I/tmp/gtk+-3.94.0/_build/gtk -I./. -I../. -I./gdk/. -I../gdk/. -I./gsk -I../gsk -I./gtk -I../gtk -I./subprojects/glib/gmodule -I../subprojects/glib/gmodule -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./. -I../. -I./gdk/x11 -I../gdk/x11 -I./gdk/. -I../gdk/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./. -I../. -I./. -I../. -I./gdk/x11 -I../gdk/x11 -I./gdk/. -I../gdk/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. --filelist=/tmp/gtk+-3.94.0/_build/gtk/gtk@@gtk-4@sha/Gsk_4.0_gir_filelist --include-uninstalled=gtk/Gdk-4.0.gir --include-uninstalled=subprojects/graphene/src/Graphene-1.0.gir --symbol-prefix=gsk --identifier-prefix=Gsk --pkg-export=gtk+-4.0 --cflags-begin -DG_LOG_USE_STRUCTURED=1 -DGLIB_MIN_REQUIRED_VERSION=GLIB_VERSION_2_54 -DGLIB_MAX_ALLOWED_VERSION=GLIB_VERSION_2_56 '-DGTK_VERSION="3.94.0"' -D_GNU_SOURCE -DG_ENABLE_DEBUG -I./. -I../. -I./gdk/. -I../gdk/. -I./gsk -I../gsk -I./gtk -I../gtk -I./subprojects/glib/gmodule -I../subprojects/glib/gmodule -I./subprojects/glib/. -I../subprojects/glib/. -I./subprojects/glib/glib -I../subprojects/glib/glib -I./subprojects/glib/gobject -I../subprojects/glib/gobject -I./subprojects/glib/gio -I../subprojects/glib/gio -I./subprojects/pango/. -I../subprojects/pango/. -I./subprojects/pango/pango/. -I../subprojects/pango/pango/. -I./subprojects/gdk-pixbuf/. -I../subprojects/gdk-pixbuf/. -I./subprojects/libepoxy/include -I../subprojects/libepoxy/include -I./subprojects/libepoxy/src -I../subprojects/libepoxy/src -I./subprojects/graphene/src/. -I../subprojects/graphene/src/. -I./gdk/x11 -I../gdk/x11 -I./subprojects/gdk-pixbuf/gdk-pixbuf/pixops -I../subprojects/gdk-pixbuf/gdk-pixbuf/pixops -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng15 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/libdrm -pthread -I/usr/include/atk-1.0 --cflags-end -L/tmp/gtk+-3.94.0/_build/gtk -L/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -lgraphene-1.0 --add-include-path=/tmp/gtk+-3.94.0/_build/gtk --add-include-path=/tmp/gtk+-3.94.0/_build/subprojects/graphene/src --add-include-path=/tmp/gtk+-3.94.0/_build/gtk --add-include-path=/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gio -L/tmp/gtk+-3.94.0/_build/subprojects/glib/glib -L/tmp/gtk+-3.94.0/_build/subprojects/libepoxy/src -L/tmp/gtk+-3.94.0/_build/subprojects/pango/pango -L/tmp/gtk+-3.94.0/_build/subprojects/gdk-pixbuf/gdk-pixbuf -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gmodule -L/tmp/gtk+-3.94.0/_build/subprojects/graphene/src -L/tmp/gtk+-3.94.0/_build/subprojects/glib/gobject --library gtk-4 -lm -lgobject-2.0 -lglib-2.0 -lfribidi -lharfbuzz -lfontconfig -lfreetype -lcairo -lcairo-gobject -pthread -lgmodule-2.0 -lgio-2.0 -latk-1.0 -ldl -lrt
Couldn't find include 'Pango-1.0.gir' (search path: '['/tmp/gtk+-3.94.0/_build/gtk', '/tmp/gtk+-3.94.0/_build/subprojects/graphene/src', '/tmp/gtk+-3.94.0/_build/gtk', '/tmp/gtk+-3.94.0/_build/subprojects/graphene/src', u'gir-1.0', u'/usr/share/gir-1.0', u'/usr/share/gir-1.0', u'/usr/share/gir-1.0']')
I tried copying those files into the /usr/share/gir-1.0, but it then complains about lots of other stuff. It was worth a shot. :)
Expected outcome
subprojects/pango.wrap
[wrap-git]
directory=pango
url=https://gitlab.gnome.org/GNOME/pango.git
push-url=ssh://git@gitlab.gnome.org:GNOME/pango.git
revision=origin/master
subprojects/gdk-pixbuf.wrap
[wrap-git]
directory=gdk-pixbuf
url=https://gitlab.gnome.org/GNOME/gdk-pixbuf.git
push-url=ssh://git@gitlab.gnome.org:GNOME/gdk-pixbuf.git
revision=origin/master
I'm not sure what to expect from the subprojects and their .gir files, I am not familiar with GIR.
Configuration
CentOS-7 x86_64 minimal Linux 3.10.0-862.el7.x86_64 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
# Starting from a clean install of CentOS-7 x86_64 minimal, I install these packages.
yum install -y epel-release
yum install -y git wget gcc-c++ make python34 bison flex ninja-build
yum install -y http://dl.fedoraproject.org/pub/epel/testing/7/x86_64/Packages/m/meson-0.47.1-1.el7.noarch.rpm
yum install -y gettext libffi-devel zlib-devel libmount-devel libselinux-devel cairo-devel cairo-gobject-devel gobject-introspection-devel atk-devel cups-devel
# ninja-build 1.7.2-2.el7
# atk-devel 2.22.0-3.el7
# cairo-devel 1.14.8-2.el7
# cairo-gobject-devel 1.14.8-2.el7
# cups-devel 1:1.6.3-35.el7
# gettext 0.19.8.1-2.el7
# gobject-introspection-devel 1.50.0-1.el7
# libffi-devel 3.0.13-18.el7
# libmount-devel 2.23.2-52.el7
# libselinux-devel 2.5-12.el7
# zlib-devel 1.2.7-17.el7
# After all of those dependencies are installed, I compile some newer dependencies which did not exist in the official CentOS repos.
# All are configured with --prefix=/usr --libdir=/usr/lib64
https://github.com/fribidi/fribidi/archive/v1.0.4.tar.gz
https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.11.95.tar.gz
https://www.freedesktop.org/software/harfbuzz/release/harfbuzz-1.4.2.tar.bz2
https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-1.14.1.tar.xz
https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-1.14.1.tar.xz
https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.14.1.tar.xz
http://ftp.gnome.org/pub/gnome/sources/gtk+/3.94/gtk+-3.94.0.tar.xz
# I have some problems with the graphene subproject as well, but setting these to true works for me.
# meson.build:643:0: ERROR: Method "get_pkgconfig_variable()" is invalid for an internal dependency
# meson.build:644:0: ERROR: Method "get_pkgconfig_variable()" is invalid for an internal dependency
sed -i 's/^graphene_has_sse2 = .*$/graphene_has_sse2 = true/g' meson.build
sed -i 's/^graphene_has_gcc = .*$/graphene_has_gcc = true/g' meson.build
meson --prefix=/usr -Dbroadway-backend=true -Dx11-backend=false -Dwayland-backend=false _build .
cd _build && ninja-build