gnome-shell does not build on Fedora 33 without installing extra packages
I recently built gnome-shell on a clean Fedora 33 install and ran into a few extra things I had to install to get some of the packages to build.
First, what I guess is a Fedora-specific problem, I had to enable the RPMFusion free repository so that jhbuild sysdeps --install gnome-shell
could find ffmpeg
which seems to supply a few necessary libav...
things. Maybe this should be added as note to the jhbuild intro? (FWIW, I did not install the handful of packages mentioned in https://wiki.gnome.org/action/show/Projects/Jhbuild/Introduction#Setting_up_JHBuild where it says "If you are using Fedora 30:".)
Then, while running jhbuild build gnome-shell
, a few different packages will fail to build. I was able to resolve all of these by manually installing some other packages:
-
wayland
fails to build until you installexpat-devel
. -
libnotify
fails to build until you installdocbook5-style-xsl
. -
uhttpmock
fails to build until you installautoconf-archive
. -
mutter
fails to build until you installmesa-libEGL-devel
. -
gnome-shell
fails to build until you installappstream
.
I don't know if these are the 'proper' packages to add to wherever these dependencies are listed to resolve this issue, but they made the build succeed. Some were mentioned in other related issues I found - linked in the notes below.
Expand to see full notes
Build gnome-shell from scratch on Fedora 33 (2020-12-18)
Roughly following steps in https://wiki.gnome.org/Projects/Jhbuild/Introduction , but without installing the packages recommended for Fedora 30 or the extra jhbuild targets mentioned on that page ("a few useful packages that are always good to have").
-
Install jhbuild:
$ mkdir -p ~/jhbuild/checkout $ cd ~/jhbuild/checkout $ git clone https://gnome.gitlab.org/GNOME/jhbuild.git $ cd jhbuild $ ./autogen.sh --simple-install $ make $ make install
-
$ jhbuild sysdeps --install gnome-shell
:Problems:
-
This command will not be able to find / install these packages:
libavfilter (libavfilter.pc)
libavformat (libavformat.pc)
libavcodec (libavcodec.pc)
libavutil (libavutil.pc)
Fix: Enable RPMFusion free repository
-
Go to https://rpmfusion.org/Configuration, download & install the free repository.
-
Once enabled, rerun and
ffmpeg-devel
(ffmpeg-devel;4.3.1-11.fc33;x86_64;free
as of now) will be installed to satisfy them.
-
-
$ jhbuild build gnome-shell
:Problems:
-
wayland
fails to build:-- >8 -- Found CMake: /usr/bin/cmake (3.18.4) Using 'CMAKE_PREFIX_PATH' from environment with value: '/home/bicknellr/jhbuild/install' Run-time dependency expat found: NO (tried pkgconfig and cmake) ../../../../jhbuild/checkout/wayland/meson.build:61:0: ERROR: Dependency "expat" not found, tried pkgconfig and cmake A full log can be found at /home/bicknellr/.cache/jhbuild/build/wayland/meson-logs/meson-log.txt *** Error during phase configure of wayland: ########## Error running meson --prefix /home/bicknellr/jhbuild/install --libdir lib -Ddocumentation=false --buildtype=debugoptimized /home/bicknellr/jhbuild/checkout/wayland *** [30/93] [1] Rerun phase configure [2] Ignore error and continue to build [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" choice: 1
Fix:
sudo dnf install expat-devel
, then select 'Rerun phase configure'. I just guessed at this one; not sure if there are related issues somewhere. -
libnotify
fails to build:-- >8 -- Program xsltproc found: YES (/usr/bin/xsltproc) ../../../../jhbuild/checkout/libnotify/meson.build:72:4: ERROR: Problem encountered: DocBook stylesheet for generating man pages not found, you need to install docbook-xsl-ns or similar package. A full log can be found at /home/bicknellr/.cache/jhbuild/build/libnotify/meson-logs/meson-log.txt *** Error during phase configure of libnotify: ########## Error running meson --prefix /home/bicknellr/jhbuild/install --libdir lib --buildtype=debugoptimized /home/bicknellr/jhbuild/checkout/libnotify *** [40/93] [1] Rerun phase configure [2] Ignore error and continue to build [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" choice: 1
Fix:
sudo dnf install docbook5-style-xsl
, then select 'Rerun phase configure'.Related: libnotify#7 (closed)
-
uhttpmock
fails to build:-- >8 -- libtoolize: copying file 'm4/lt~obsolete.m4' autoreconf: running: /usr/bin/autoconf --force configure:16413: error: possibly undefined macro: AX_AC_PRINT_TO_FILE If this token and others are legitimate, please use m4_pattern_allow. See the Autoconf documentation. configure:16421: error: possibly undefined macro: AX_AC_APPEND_TO_FILE configure:16461: error: possibly undefined macro: AC_MSG_ERROR configure:16750: error: possibly undefined macro: AM_V_at configure:16768: error: possibly undefined macro: AM_DISTCHECK_CONFIGURE_FLAGS autoreconf: /usr/bin/autoconf failed with exit status: 1 *** Error during phase configure of uhttpmock: ########## Error running ./autogen.sh --prefix /home/bicknellr/jhbuild/install --disable-Werror --disable-static --disable-gtk-doc *** [61/93] [1] Rerun phase configure [2] Ignore error and continue to build [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" [7] Go to phase "clean" [8] Go to phase "distclean" choice: 1
Fix:
sudo dnf install autoconf-archive
, then select 'Rerun phase configure'. -
mutter
fails to build:-- >8 -- [10/890] Compiling C object cogl/cogl/libmutter-cogl-8.so.0.0.0.p/driver_gl_cogl-util-gl.c.o FAILED: cogl/cogl/libmutter-cogl-8.so.0.0.0.p/driver_gl_cogl-util-gl.c.o cc -Icogl/cogl/libmutter-cogl-8.so.0.0.0.p -Icogl/cogl -I../../../../jhbuild/checkout/mutter/cogl/cogl -Icogl -I../../../../jhbuild/checkout/mutter/cogl -I/home/bicknellr/jhbuild/install/include/glib-2.0 -I/home/bicknellr/jhbuild/install/lib/glib-2.0/include -I/home/bicknellr/jhbuild/install/include/gio-unix-2.0 -I/home/bicknellr/jhbuild/install/include/graphene-1.0 -I/home/bicknellr/jhbuild/install/lib/graphene-1.0/include -I/home/bicknellr/jhbuild/install/include/cairo -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libxml2 -I/home/bicknellr/jhbuild/install/include/pixman-1 -I/home/bicknellr/jhbuild/install/include/gdk-pixbuf-2.0 -I/home/bicknellr/jhbuild/install/include/sysprof-4 -fvisibility=hidden -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O2 -g -D_GNU_SOURCE -fno-strict-aliasing -Wpointer-arith -Wmissing-declarations -Wimplicit-function-declaration -Wformat=2 -Wformat-nonliteral -Wformat-security -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wundef -Wunused -Wcast-align -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-include-dirs -Wlogical-op -Wignored-qualifiers -Werror=redundant-decls -Werror=implicit -Werror=nonnull -Werror=init-self -Werror=main -Werror=missing-braces -Werror=sequence-point -Werror=return-type -Werror=trigraphs -Werror=array-bounds -Werror=write-strings -Werror=address -Werror=int-to-pointer-cast -Werror=pointer-to-int-cast -Werror=empty-body -Werror=write-strings -DG_ENABLE_DEBUG -fno-omit-frame-pointer -fPIC -pthread -mfpmath=sse -msse -msse2 '-DCOGL_LOCALEDIR="/home/bicknellr/jhbuild/install/share/locale"' -DCOGL_COMPILATION '-DCOGL_GL_LIBNAME="libGL.so.1"' '-DCOGL_GLES2_LIBNAME="libGLESv2.so.2"' -DCOGL_GL_DEBUG -DCOGL_OBJECT_DEBUG -DCOGL_ENABLE_DEBUG -fno-omit-frame-pointer -MD -MQ cogl/cogl/libmutter-cogl-8.so.0.0.0.p/driver_gl_cogl-util-gl.c.o -MF cogl/cogl/libmutter-cogl-8.so.0.0.0.p/driver_gl_cogl-util-gl.c.o.d -o cogl/cogl/libmutter-cogl-8.so.0.0.0.p/driver_gl_cogl-util-gl.c.o -c ../../../../jhbuild/checkout/mutter/cogl/cogl/driver/gl/cogl-util-gl.c In file included from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-texture-2d.h:44, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-texture-private.h:40, from ../../../../jhbuild/checkout/mutter/cogl/cogl/winsys/cogl-texture-pixmap-x11-private.h:45, from ../../../../jhbuild/checkout/mutter/cogl/cogl/winsys/cogl-winsys-private.h:39, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-fence-private.h:36, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-journal-private.h:37, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-framebuffer-private.h:37, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-driver.h:36, from ../../../../jhbuild/checkout/mutter/cogl/cogl/cogl-context-private.h:44, from ../../../../jhbuild/checkout/mutter/cogl/cogl/driver/gl/cogl-util-gl.c:36: cogl/cogl/cogl-egl-defines.h:38:10: fatal error: EGL/eglmesaext.h: No such file or directory 38 | #include <EGL/eglmesaext.h> | ^~~~~~~~~~~~~~~~~~ compilation terminated. ninja: build stopped: subcommand failed. *** Error during phase build of mutter: ########## Error running ninja *** [83/93] [1] Rerun phase build [2] Ignore error and continue to install [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" [7] Go to phase "configure" [8] Go to phase "clean" choice: 7 invalid choice [1] Rerun phase build [2] Ignore error and continue to install [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" [7] Go to phase "configure" [8] Go to phase "clean" choice: 6 Type "yes" to confirm the action: yes
Fix:
sudo dnf install mesa-libEGL-devel
, then select 'Go to phase "wipe directory and start over"'. Note: This was also a guess. Also, I'm not sure if wiping the whole directory is actually required, but selecting 'Go to phase "configure"' just printed 'invalid' choice, so wiping seemed like the safest option.Related:
-
gnome-shell
fails to build:-- >8 -- *** Building gnome-shell *** [93/93] ninja [17/164] Generating org.gnome.Extensions.metainfo.xml_subprojects@extensions-app@data@metainfo_merge with a custom command FAILED: subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml /home/bicknellr/jhbuild/install/bin/meson --internal msgfmthelper ../../../../jhbuild/checkout/gnome-shell/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml xml /home/bicknellr/jhbuild/checkout/gnome-shell/subprojects/extensions-app/../../po msgfmt: cannot locate ITS rules for ../../../../jhbuild/checkout/gnome-shell/subprojects/extensions-app/data/metainfo/org.gnome.Extensions.metainfo.xml.in [26/164] Generating Shew-0.gir with a custom command ninja: build stopped: subcommand failed. *** Error during phase build of gnome-shell: ########## Error running ninja *** [93/93] [1] Rerun phase build [2] Ignore error and continue to install [3] Give up on module [4] Start shell [5] Reload configuration [6] Go to phase "wipe directory and start over" [7] Go to phase "configure" [8] Go to phase "clean" choice: 1
Fix:
sudo dnf install appstream
, then select 'Rerun phase build'.Related: gnome-shell#2439 (closed)
-