Skip to content

Add Fedora RPM packaging (spec + systemd unit)#13

Open
jboero wants to merge 1 commit into
joske:masterfrom
jboero:packaging
Open

Add Fedora RPM packaging (spec + systemd unit)#13
jboero wants to merge 1 commit into
joske:masterfrom
jboero:packaging

Conversation

@jboero

@jboero jboero commented Jun 12, 2026

Copy link
Copy Markdown

Hi @joske! 👋 Adds Fedora/RPM packaging under packaging/ so yserver can be built and distributed as RPMs (and on COPR for every arch). Everything lives in its own directory and changes nothing in the build or source tree.

What's here

  • packaging/yserver.spec — builds both binaries (yserver standalone DRM/KMS + ynest nested). BuildRequires/Requires are mapped from the CI's Debian deps to arch-neutral Fedora package names, so COPR can build every chroot/arch with no %ifarch guards:
    • glslc for the build.rs GLSL→SPIR-V step
    • libseat/libxshmfence/libxkbcommon/libinput/fontconfig/freetype/systemd(-devel)
    • vulkan-loader required explicitly because ash dlopen()s libvulkan.so.1 at runtime (invisible to RPM's ELF dep generator); mesa-vulkan-drivers as a Recommends.
  • packaging/yserver@.service + yserver-session — a systemd template unit for standalone/kiosk use on a VT, with a launcher that mirrors just startx (waits for the X socket, runs the session, tears down on exit).
  • packaging/yserver.sysconfig/etc/sysconfig/yserver to set the session command / extra args.
  • packaging/lightdm-99-yserver.conf — example lightdm drop-in (the documented graphical-login path from the README).

Notes for you

  • License: the spec uses License: MIT to match the shipped LICENSE file. Heads-up that the workspace Cargo.toml currently declares GPL-3.0-only — worth reconciling one way or the other.
  • COPR networking: cargo fetches crates during %build, so the COPR project needs "Enable internet access during builds" ticked. The spec header documents this and sketches a cargo vendor + --offline alternative if you'd prefer hermetic builds.
  • Verified the spec parses (rpmspec -P) and builds an SRPM cleanly. A full rpmbuild -ba was not run to completion here (it compiles the whole tree), so a real COPR/mock build is the next checkpoint.

Happy to adjust naming, paths, or split per your preferences — thanks for building yserver! 🙏

🤖 Generated with Claude Code

@jboero

jboero commented Jun 12, 2026

Copy link
Copy Markdown
Author

Thanks @joske for pursuing this. I've had enough of Wayland mafia claiming basic features like multi-user headless terminal servers and Compiz are obsolete and insecure. I used to do RPM packaging and COPR build automation for a few orgs and this is super helpful for me. Feel free to take it or I'll keep it outside the project if needed.

Arch-neutral spec suitable for COPR multi-arch builds. Builds both the
standalone DRM/KMS server (yserver) and the nested server (ynest).

- packaging/yserver.spec: BuildRequires/Requires mapped from the CI's
  Debian deps to Fedora package names (glslc for build.rs shaders,
  libseat/xshmfence/xkbcommon/input/fontconfig/freetype/systemd-devel);
  vulkan-loader required explicitly since ash dlopens libvulkan at runtime.
- packaging/yserver@.service: systemd template unit for standalone /
  kiosk use on a VT, with a session launcher mirroring `just startx`.
- packaging/yserver-session: session launcher invoked by the unit.
- packaging/yserver.sysconfig: /etc/sysconfig/yserver env config.
- packaging/lightdm-99-yserver.conf: example lightdm drop-in (the
  documented graphical-login launch path).

Note: spec uses License: MIT to match the LICENSE file; the workspace
Cargo.toml currently declares GPL-3.0-only (mismatch to reconcile upstream).
COPR needs internet access enabled for cargo to fetch crates (documented
in the spec header, with a vendored --offline alternative).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
joske added a commit that referenced this pull request Jun 12, 2026
The workspace manifest said GPL-3.0-only while the repository ships an
MIT LICENSE. MIT is the intended license. Flagged by the Fedora
packaging contribution (PR #13).

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>

@joske joske left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this, but I'm not sure this repo is the right place to maintain distro specific packaging. I'll think about it.

@oleid

oleid commented Jun 13, 2026

Copy link
Copy Markdown

@joske If you don't want distribution specific packaging, maybe using cargo-deb and cargo-rpm are a suitable middle ground, as used here:

https://github.com/niri-wm/niri/blob/main/Cargo.toml#L167

@jboero

jboero commented Jun 14, 2026

Copy link
Copy Markdown
Author

Thanks for this, but I'm not sure this repo is the right place to maintain distro specific packaging. I'll think about it.

Understandable. At least it's here now. Is it OK if I host these RPMs in my public repos for Fedora, *EL, Amazon Linux, Oracle Linux, etc?

@BergmannAtmet

Copy link
Copy Markdown

Understandable. At least it's here now. Is it OK if I host these RPMs in my public repos for Fedora, *EL, Amazon Linux, Oracle Linux, etc?

you don't need permission

@joske

joske commented Jun 14, 2026

Copy link
Copy Markdown
Owner

@jboero No worries, this is open source.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants