RPM packages bringing GNOME 50 to CentOS Stream 10 (EL10), hosted on COPR.
Packages are built in COPR (jreilly1821/c10s-gnome-50-fresh) targeting epel-10-x86_64.
Most packages build directly from Fedora Rawhide dist-git. A small set require local spec
modifications to work on EL10 — those are documented below.
dnf -y install dnf-plugins-core
dnf copr enable -y jreilly1821/c10s-gnome-50-fresh
dnf -y install gnome-shell gdm mutter gnome-session nautilus gnome50-el10-compatFedora Rawhide dist-git ──▶┐
├──▶ COPR (epel-10-x86_64) ──▶ repo.tunaos.org
Our GitHub repo (main) ──▶┘
- ~50 packages pull directly from Fedora Rawhide dist-git — no local spec needed.
- 8 packages require a modified spec checked into this repo (see below).
- 1 package (
gnome50-el10-compat) is EL10-specific, not in Fedora at all.
Build method per package is tracked in COPR-AUDIT.md.
These packages cannot use Fedora Rawhide dist-git directly and must be built from the specs in this repository. Each entry documents exactly what was changed and why.
Build method: SRPM upload Our version: 2.87.3 · Rawhide: 2.87.5
Changes from rawhide required for EL10:
- Manual meson invocation — replaced
%meson/%meson_build/%meson_installmacros with explicitmeson setup --prefix=/usr --libdir=/usr/lib64 --buildtype=plaincalls. TheBuildSystem: mesonmacro had EL10 compatibility issues. - Simplified BuildRequires — removed
pkgconfig(gi-docgen),/usr/bin/rst2man,shared-mime-info,dbus-daemon,update-desktop-database(not available or needed on EL10 at build time). AddedBuildRequires: gobject-introspection-develin their place. - Added
%transfiletriggerinscriptlets — runsglib-compile-schemaswhen schemas are installed. EL10's stock%postscriptlets from mock-installed RPMs may not fire; this ensures schemas are always compiled. - Removed
Conflicts: gobject-introspection < 1.79.1— avoids complications with EL10's stock gobject-introspection version. - Version lag — currently at 2.87.3; rawhide is at 2.87.5. Needs rebasing.
Build method: SCM (just copr-scm-build src/gnome-50/gdm)
Our version: 50rc · Rawhide: 50rc (same)
Changes from rawhide required for EL10:
- Added
Requires: gnome50-el10-compat— pulls in the PAM fix for GDM's dynamic greeter user allocation on EL10. GDM 50 allocates greeter users (gdm-greeter-N) dynamically via systemd's Varlink userdb API. EL10'spam_unix.socallsunix_chkpwdwhich cannot resolve these dynamic users, returningPAM_AUTHINFO_UNAVAILand preventing the greeter session from launching.gnome50-el10-compatoverrides/etc/pam.d/systemd-userwithaccount required pam_permit.soto work around this.
This is the only change from rawhide. All patches, build flags, and install sections are identical to Fedora's GDM spec.
Build method: SCM (just copr-scm-build src/gnome-50/gjs)
Our version: 1.87.90 · Rawhide: 1.87.90 (same)
Changes from rawhide required for EL10:
- Tests disabled (
%bcond_with tests) — rawhide unconditionally runs the gjs test suite viaxwfb-run, which requiresxwayland-run,dbus-x11,mesa-dri-drivers, andmutterat build time. None of these are available in the EL10 COPR buildroot. All test BuildRequires and the%meson_testcall are gated behind%{with tests}, which defaults to off. - Manual meson invocation — same pattern as glib2: explicit
meson setupinstead of%mesonmacro, for EL10 compat.
gjs-bootstrap.specalso exists in the same directory for breaking the circular dep with mutter during initial bootstrapping.just copr-scm-buildautomatically selectsgjs.spec(non-bootstrap).
Build method: SCM (just copr-scm-build src/gnome-50/gnome-desktop3)
Our version: 44.5 · Rawhide: 44.5 (same)
Changes from rawhide required for EL10:
- Removed
BuildRequires: pkgconfig(gtk+-3.0)— gtk3 is not available in EL10's COPR build environment. - Added
-Dlegacy_library=falseto meson options — disableslibgnome-desktop-3(the legacy gtk3 library). Without this, the build fails trying to link against gtk3. The gtk4 library (libgnome-desktop-4) is still built normally and is what GNOME 50 packages actually use. - Removed
Requires: gnome-desktop3from gnome-desktop4 subpackage — since the base package no longer ships a runtime library. - Removed
%filesentries forlibgnome-desktop-3*— not built.
Build method: SCM (just copr-scm-build src/gnome-50/gtk4)
Our version: 4.21.6-2 · Rawhide: 4.21.6 (same upstream)
Changes from rawhide required for EL10 (all gated behind %if !0%{?rhel}):
- Gated
BuildRequires: pkgconfig(gstreamer-player-1.0)—gstreamer1-plugins-bad-free-develdepends onlibgtk-3.so.0, which is not available in EL10. - Added
-Dmedia-gstreamer=disabled— the gstreamer media backend uses agstreamer-fullmeson wrap that isn't available in the EL10 COPR buildroot. With--wrap-mode=nodownloadenforced, meson would error out trying to fetch it. Gated behind%if 0%{?rhel}. - Gated
Requires: gstreamer1-plugins-bad-free-libs— runtime dep dropped on EL10 since the gstreamer backend is disabled.
Build method: SCM (just copr-scm-build src/deps/tinysparql)
Our version: 3.11rc · Rawhide: 3.11rc (same)
Changes from rawhide required for EL10 (all gated behind %if !0%{?rhel}):
- Gated
BuildRequires: asciidoc—asciidocrequiressource-highlight, which requireslibboost_regex.so.1.83.0. EL10 ships boost with an ABI-incompatible version andsource-highlighthas not been rebuilt against it, so the dep chain is broken. - Gated
-Dman-pagesmeson option — man page generation requiresasciidoc. On EL10 the option is set todisabled; on Fedora it usesauto. - Gated
%filesentries fortinysparql*.1man pages — not generated on EL10.
Build method: SCM (just copr-scm-build src/deps/gnome-autoar)
Our version: 0.4.5-4 · Rawhide: 0.4.5 (same upstream)
Changes from rawhide required for EL10:
- Added
-Dgtk=false— disables thegnome-autoar-gtkwidget subpackage, which requiresgtk+-3.0. gtk3 is not in EL10. - Added
-Dvapi=false— disables Vala bindings (tied to the gtk widget). - Added
-Dgtk_doc=falseand-Dtests=false— removes unnecessary gtk-doc and test dependencies. - Removed
BuildRequires: pkgconfig(gtk+-3.0)andvala. - Removed
%filesentries forlibgnome-autoar-gtk-0*,GnomeAutoarGtk-0.1.*, vala bindings, and gtk-doc.
nautilus uses
gnome-autoar-0(the core archive library), not the gtk widget. Disabling gtk has no functional impact.
Build method: SRPM upload Not in Fedora — EL10-specific workaround package
This package ships runtime fixes required to run GNOME 50 on EL10 that do not apply to Fedora:
-
/etc/pam.d/systemd-useroverride — replaces the account phase withaccount required pam_permit.so. EL10'spam_unixcallsunix_chkpwdwhich cannot resolve GDM 50's dynamically-allocated greeter users (gdm-greeter-N), causingPAM_AUTHINFO_UNAVAILand a broken greeter session. -
SELinux policy modules installed via
semodule -X 300:gdm-gnome50.pp— allowsxdm_tto create/unlink sockets insystemd_userdbd_runtime_tdirectories, writepasswd_file_t, createetc_tfiles. EL10's stockxdm_tpolicy does not permit GDM 50's Varlink userdb socket.gdm-userdb-connect.pp— allowssystemd_userdbd_t,chkpwd_t, and related domains to connect toxdm_tunix sockets.
Install
gnome50-el10-compatwhenever you installgdm. It is automatically pulled in as a dependency of the COPR-builtgdmpackage.
# Must use local spec (SCM or SRPM upload):
glib2 → SRPM src/gnome-50/glib2/
gdm → SCM src/gnome-50/gdm/
gjs → SCM src/gnome-50/gjs/
gtk4 → SCM src/gnome-50/gtk4/
gnome-desktop3 → SCM src/gnome-50/gnome-desktop3/
gnome-autoar → SCM src/deps/gnome-autoar/
tinysparql → SCM src/deps/tinysparql/
gnome50-el10-compat → SRPM src/deps/gnome50-el10-compat/
# Everything else uses Fedora Rawhide dist-git directly:
mutter, gnome-shell, gtk4, libadwaita, pipewire, pango, fontconfig,
xdg-desktop-portal, xdg-desktop-portal-gnome, gobject-introspection,
gsettings-desktop-schemas, gnome-session, gnome-control-center,
gnome-settings-daemon, nautilus, meson, glycin, mozjs140, gi-docgen,
localsearch, tinysparql, libnotify, avahi, cairo, blueprint-compiler, …
Full per-package audit with exact diffs: COPR-AUDIT.md
just copr-build <package> # Build from Fedora Rawhide dist-git
just copr-scm-build src/gnome-50/<package> # Build from our modified spec
just copr-scm-build src/deps/<package> # Build from our modified spec
just copr-status # Check recent build status
just copr-logs <build-id> # Download and view build logsSee CLAUDE.md for the full build workflow, known EL10 quirks, and
debugging tips.
All addressed by installing gnome50-el10-compat. See workarounds/README.md
for details.
| Issue | Fix |
|---|---|
SELinux: xdm_t policy blocks GDM 50's Varlink socket |
Custom policy modules in gnome50-el10-compat |
PAM: pam_unix can't resolve dynamic greeter users |
/etc/pam.d/systemd-user override |
| GLib schemas not compiled after install | %transfiletriggerin in our glib2 spec |
| No Wayland by default | Set WaylandEnable=true in /etc/gdm/custom.conf |
MIT