ci: build Debian/Ubuntu and Fedora packages on release - #15
Conversation
Adds an nfpm config and a tag-triggered workflow that builds gslapper in ubuntu:24.04, debian:13, and fedora:42 containers, packages deb/rpm with per-distro runtime dependencies, verifies each package installs cleanly with dependency resolution, and attaches artifacts plus SHA256SUMS to the GitHub release. workflow_dispatch runs everything as a dry run without releasing.
The binary links libsystemd.so.0 when built with libsystemd-dev present (HAVE_SYSTEMD), but the runtime dependency lists did not declare it; the in-container install check missed this because build dependencies had already pulled the systemd libraries in. Add libsystemd0 (deb) and systemd-libs (rpm) explicitly. Also drop the workflow-level contents: write to read and grant write only to the release job, so PR-triggered dry runs never hold a write token.
|
Both findings addressed in eefb981: systemd runtime deps (medium): permissions (low/nit): workflow-level is now The PR dry run re-triggered on push — will confirm all three legs stay green. |
Summary
gslapper is currently only installable on Arch (AUR) and Nix. This adds automated native packaging for the other major distro families so users — and downstream consumers like sysc-greet's installer — can stop building from source.
What it does
On every
v*tag push:ubuntu:24.04(deb),debian:13(deb, also serves Ubuntu 25.x),fedora:42(rpm)--helpwithout a Wayland display) and printslddoutput for dependency auditingnfpm.yamlSHA256SUMSto the GitHub release with generated notesworkflow_dispatchruns the full build/package/install-verify as a dry run (version0.0.0-dev) without creating a release.Package contents
/usr/bin/gslapper,/usr/bin/gslapper-holder, systemd user units (gslapper.service,gslapper@.service), LICENSE, README — mirroring the PKGBUILD. No provides/conflicts with mpvpaper.Validation
dpkg-deb -I/-cinspected)workflow_dispatchdry run on this branch before merge; the install-verify step will confirm the per-distro dependency names against real reposModeled on sysc-greet's release workflow (cagebreak matrix job).