Thanks to the tireless efforts of @bilelmoussaoui and other Gnome devs across the core components, Gnome can now be built without various X11 dependencies, specifically Xwayland.
For the 46 and 47 releases I’d simply built mutter
with meson_options: xwayland=false. This is a quick and easy way to get a pure Wayland session.
Curiosity got the best of me today tho, so I built out gdm
, gnome-session
, mutter
, and gnome-shell
as I’ve described in detail on the Arch Forums here.
Everything went swimmingly and I was able to uninstall xorg-xwayland
and its gang. That was fun!
One single issue I noted was the inability to compile mutter
without cvt
. Specifically, I ended up adding a build-time dependency on libxcvt
.
Guessing this is some mistake on my part that Bilal, @fmuellner, @alatiera, or any number of other core devs could help clarify very quickly.
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program cvt found: NO
mutter/src/meson.build:1003:8: ERROR: Program 'cvt' not found or not executable
To be clear, I’m not looking for any distro-specific packaging help, just general build guidance for this issue.
Thanks in advance!
Build Log
+ exec meson setup --prefix /usr --libexecdir lib --sbindir bin --buildtype plain --auto-features enabled --wrap-mode nodownload -D b_pie=true -D python.bytecompile=1 mutter build -D docs=true -D egl_device=true -D installed_tests=false -D libdisplay_info=enabled -D tests=disabled -D wayland_eglstream=true -D xwayland=false -D x11=false
The Meson build system
Version: 1.6.0
Source dir: /build/mutter/src/mutter
Build dir: /build/mutter/src/build
Build type: native build
Project name: mutter
Project version: 47.1
C compiler for the host machine: cc (gcc 14.2.1 "cc (GCC) 14.2.1 20240910")
C linker for the host machine: cc ld.bfd 2.43.0
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports link arguments -Wl,--disable-new-dtags: YES
Library m found: YES
Found pkg-config: YES (/usr/bin/pkg-config) 2.1.1
Run-time dependency graphene-gobject-1.0 found: YES 1.10.8
Run-time dependency gdk-pixbuf-2.0 found: YES 2.42.12
Run-time dependency pango found: YES 1.54.0
Run-time dependency cairo found: YES 1.18.2
Run-time dependency pangocairo found: YES 1.54.0
Run-time dependency pixman-1 found: YES 0.43.4
Run-time dependency fribidi found: YES 1.0.16
Run-time dependency gsettings-desktop-schemas found: YES 47.1
Run-time dependency glib-2.0 found: YES 2.82.2
Run-time dependency gio-unix-2.0 found: YES 2.82.2
Dependency gio-unix-2.0 found: YES 2.82.2 (cached)
Run-time dependency gobject-2.0 found: YES 2.82.2
Dependency gobject-2.0 found: YES 2.82.2 (cached)
Run-time dependency gmodule-no-export-2.0 found: YES 2.82.2
Run-time dependency gnome-settings-daemon found: YES 47.1
Run-time dependency xkbcommon found: YES 1.7.0
Run-time dependency atk found: YES 2.54.0
Run-time dependency colord found: YES 1.4.7
Run-time dependency lcms2 found: YES 2.16
Run-time dependency harfbuzz found: YES 10.0.1
Run-time dependency libeis-1.0 found: YES 1.3.0
Run-time dependency libei-1.0 found: YES 1.3.0
Did not find CMake 'cmake'
Found CMake: NO
Run-time dependency gvdb found: NO (tried pkgconfig and cmake)
Looking for a fallback subproject for the dependency gvdb
Executing subproject gvdb
gvdb| Project name: gvdb
gvdb| Project version: 0.0
gvdb| C compiler for the host machine: cc (gcc 14.2.1 "cc (GCC) 14.2.1 20240910")
gvdb| C linker for the host machine: cc ld.bfd 2.43.0
gvdb| Run-time dependency gio-2.0 found: YES 2.82.2
gvdb| Build targets in project: 1
gvdb| Subproject gvdb finished.
Dependency gvdb found: YES 0.0 (overridden)
Run-time dependency libdisplay-info found: YES 0.2.0
Run-time dependency gnome-desktop-4 found: YES 44.1
Run-time dependency libcanberra found: YES 0.30
Run-time dependency gl found: YES 1.2
Run-time dependency egl found: YES 1.5
Run-time dependency glesv2 found: YES 3.2
Run-time dependency wayland-server found: YES 1.23.1
Run-time dependency wayland-client found: YES 1.23.1
Run-time dependency wayland-cursor found: YES 1.23.1
Run-time dependency wayland-protocols found: YES 1.38
Run-time dependency wayland-egl found: YES 18.1.0
Run-time dependency libudev found: YES 256
Run-time dependency gudev-1.0 found: YES 238
Run-time dependency udev found: YES 256
Run-time dependency libsystemd found: YES 256
Run-time dependency gbm found: YES 24.2.6-arch1.1
Run-time dependency libinput found: YES 1.26.2
Run-time dependency libdrm found: YES 2.4.123
Checking for type "struct drm_plane_size_hint" with dependency libdrm: YES
Run-time dependency wayland-eglstream-protocols found: YES 1.1.16
Library dl found: YES
Run-time dependency libwacom found: YES 2.13.0
Checking for function "libwacom_get_num_rings" with dependency libwacom: YES
Run-time dependency libpipewire-0.3 found: YES 1.2.6
Run-time dependency gobject-introspection-1.0 found: YES 1.82.0
Checking if "timerfd_create(2) system call" : links: YES
Checking for function "malloc_trim" : YES
Run-time dependency sysprof-capture-4 found: YES 47.0
Run-time dependency sysprof-6 found: YES 47.0
Checking for function "ffs" : YES
Checking for function "clz" : YES
Checking for function "memmem" : YES
Has header "sys/eventfd.h" : YES
Header "sys/prctl.h" has symbol "prctl" : YES
Checking for function "mkostemp" : YES
Checking for function "posix_fallocate" : YES
Checking for function "memfd_create" : YES
Configuring config.h using configuration
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Program /usr/bin/g-ir-scanner found: YES (/usr/bin/g-ir-scanner)
Dependency gobject-introspection-1.0 found: YES 1.82.0 (cached)
Program /usr/bin/g-ir-compiler found: YES (/usr/bin/g-ir-compiler)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-genmarshal found: YES (/usr/bin/glib-genmarshal)
Program msgfmt found: YES (/usr/bin/msgfmt)
Configuring org.gnome.mutter.gschema.xml using configuration
Configuring org.gnome.mutter.wayland.gschema.xml using configuration
Program get-state.py found: YES (/build/mutter/src/mutter/tools/get-state.py)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Dependency glib-2.0 found: YES 2.82.2 (cached)
Program /usr/bin/glib-mkenums found: YES (/usr/bin/glib-mkenums)
Program cvt found: NO
mutter/src/meson.build:1003:8: ERROR: Program 'cvt' not found or not executable
A full log can be found at /build/mutter/src/build/meson-logs/meson-log.txt