Background
While triaging tuna-os/github-copr#15, we identified that gnome-session-init-worker aborts on first boot because it cannot find org.gnome.Shell.target. An attempt was made to fix this by uncommenting the unit in gnome-shell.spec, but investigation showed:
org.gnome.Shell.target is not present in the GNOME 50.0 tarball — meson does not install it
- The line is also commented out in the Fedora 44 spec (
#{_userunitdir}/org.gnome.Shell.target)
- The unit was present in EL10 AppStream's GNOME 47/49 builds
The revert is tracked in tuna-os/github-copr@469fd1c.
The Problem
gnome-session-init-worker gnome-initial-setup crashes with SIGABRT because it expects org.gnome.Shell.target to exist as a systemd user unit. Without it, the GDM greeter session cannot register and the system hangs at a blank screen on first boot.
What We Don't Know
Where is this unit supposed to come from in GNOME 50? Possible explanations:
-
Removed upstream intentionally — GNOME 50 may have restructured session startup so this target is no longer needed, and gnome-session-init-worker should not be looking for it. Could be a gnome-session bug that needs an upstream fix or backport.
-
Moved to another package — It may have migrated to gnome-session or a new session-related package that we aren't shipping yet.
-
Needs to be a static file in gnome-shell — The .target file may not be generated by meson but should be shipped as a static source file. Worth checking whether the Fedora 44 gnome-shell package has it in the installed RPM even though meson doesn't build it (i.e., installed via a Source: + manual install in the spec).
-
gnome-session-init-worker has a graceful fallback on Fedora — Fedora 44 may ship a patched gnome-session that tolerates the missing target, and EL10 does not.
Suggested Investigation Steps
Related
Background
While triaging tuna-os/github-copr#15, we identified that
gnome-session-init-workeraborts on first boot because it cannot findorg.gnome.Shell.target. An attempt was made to fix this by uncommenting the unit ingnome-shell.spec, but investigation showed:org.gnome.Shell.targetis not present in the GNOME 50.0 tarball — meson does not install it#{_userunitdir}/org.gnome.Shell.target)The revert is tracked in tuna-os/github-copr@469fd1c.
The Problem
gnome-session-init-worker gnome-initial-setupcrashes with SIGABRT because it expectsorg.gnome.Shell.targetto exist as a systemd user unit. Without it, the GDM greeter session cannot register and the system hangs at a blank screen on first boot.What We Don't Know
Where is this unit supposed to come from in GNOME 50? Possible explanations:
Removed upstream intentionally — GNOME 50 may have restructured session startup so this target is no longer needed, and
gnome-session-init-workershould not be looking for it. Could be a gnome-session bug that needs an upstream fix or backport.Moved to another package — It may have migrated to
gnome-sessionor a new session-related package that we aren't shipping yet.Needs to be a static file in gnome-shell — The
.targetfile may not be generated by meson but should be shipped as a static source file. Worth checking whether the Fedora 44gnome-shellpackage has it in the installed RPM even though meson doesn't build it (i.e., installed via aSource:+ manualinstallin the spec).gnome-session-init-worker has a graceful fallback on Fedora — Fedora 44 may ship a patched
gnome-sessionthat tolerates the missing target, and EL10 does not.Suggested Investigation Steps
rpm -ql gnome-shellon a working Fedora 44 system — doesorg.gnome.Shell.targetappear?Source:file in the Fedora spec or is installed some other waygnome-sessionupstream git log around the GNOME 50 timeframe for changes tognome-session-init-workerand how it handles missing unitsgnome-sessionsource fororg.gnome.Shell.target— is the worker hardcoded to require it?gnome-session-init-workerlogs a specific error vs. unconditional abort — a graceful fallback patch may existgnome-session(GNOME 47) — does it ship aorg.gnome.Shell.targetthat our GNOME 50 session is accidentally inheriting/expecting?Related
gnome-initial-setupparts of Add just lint to git precommit #15: d9b8ee5