chore: AUR, Copr, Launchpad & AppImage packaging - #172
Merged
Conversation
Native distribution packaging for Enroll, alongside the existing Flathub build and AppImage. Each target builds from a vX.Y.Z tag, matching the existing tag-driven release flow. Packaging files: - packaging/aur/PKGBUILD Arch (online cargo fetch --locked) - packaging/copr/*.spec Fedora 42+ (vendored vendor.tar) - packaging/debian/* Ubuntu 25.04+ (vendored vendor.tar) - packaging/README.md targets, vendoring model, constraints All three packagings install via 'just rootdir=<destdir> install', so the on-disk layout stays defined in one place (the justfile). Vendoring is required for Copr/Launchpad because libcosmic is a git dep (not on crates.io) and their build chroots are network-isolated. CI (.github/workflows/publish.yml): four new independent jobs that fire on v* tag push alongside appimage/flathub: - vendor-tar produces vendor.tar (reproducible VERGEN) for offline builds - aur stamps + pushes the PKGBUILD/.SRCINFO to AUR over SSH - copr builds an SRPM from the spec + vendor.tar, submits via copr-cli - launchpad rolls a Debian source package, signs with GPG, dputs to PPA Also fixes the AppImage job: it was running 'cargo build --release' on a stock ubuntu-latest runner that ships none of libcosmic's native build deps (fontconfig, freetype, expat, xkbcommon, wayland). Adds an explicit 'Install build dependencies' step so the build links. Target distros are constrained to Fedora 42+ / Ubuntu 25.04+ by Rust edition 2024 (needs rustc >= 1.85). Secrets documented in RELEASING.md.
Member
Author
|
Oh thanks for letting me know & adding it. I'll just delete that part of the build pipeline then. 👍🏼 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds native distribution packaging for Enroll, alongside the existing Flathub build and AppImage. Each target builds from a
vX.Y.Ztag, matching the existing tag-driven release flow.packaging/aur/PKGBUILDcargo fetch --lockedpackaging/copr/*.specvendor.tar)packaging/debian/*vendor.tar)packaging/README.mddocuments the targets, the vendoring model, and the Rust-version constraints.Why vendored for Copr/Launchpad
libcosmicis a git dependency (pinned inCargo.lock, not on crates.io). AUR builders have network at build time, so the PKGBUILD runscargo fetch --lockedand lets Cargo pull libcosmic from GitHub. Copr and Launchpad build chroots are network-isolated, so those two bundle avendor.tar— produced byjust vendor— containing.cargo/config.toml+vendor/for every transitive dep including the libcosmic git source.The Rust-version constraint (
edition = "2024"→ rustc ≥ 1.85) pins Fedora 42+ and Ubuntu 25.04+ (plucky).Single source of truth for install layout
All three packagings install via the upstream
justrecipe:so the on-disk layout is defined in exactly one place — the
installrecipe injustfile. Change that recipe and every package follows automatically.CI — four new jobs
.github/workflows/publish.ymladds four jobs that fire onv*tag push, alongsideappimageandflathub. Independent — one failing never suppresses another.vendor-tarvendor.taruploaded to the GitHub releasecreate-releaseaur.SRCINFOto AURcreate-releasecoprcopr-clivendor-tarlaunchpaddputs to the PPAvendor-tarBug fix: AppImage build dependencies
The
appimagejob was runningcargo build --releaseon a stockubuntu-latestrunner that ships none of libcosmic's native build deps (fontconfig, freetype, expat, xkbcommon, wayland) — so the last release's AppImage build failed at link time. Adds an explicit Install build dependencies step so the build links.Secrets required (out of band)
The packaging files + CI are complete, but the actual package targets and secrets are yours to set up. Documented in
RELEASING.md:AUR_SSH_KEYaurCOPR_API_TOKENcopr~/.config/coprINI from Copr → APILP_GPG_KEYlaunchpadLP_GPG_PASSPHRASElaunchpadLP_GPG_KEYOptional repo variables (not secrets):
COPR_PROJECT(defaultenroll),DEB_SERIES(defaultplucky),LP_DPUT_HOST(defaultppa:cosmic-utils/enroll).Checklist
packaging/aur/PKGBUILDpackaging/copr/cosmic-utils-enroll.specpackaging/debian/*(control,rules,changelog,copyright,compat,source/format,*.install)packaging/README.mdpublish.yml— four new jobs (vendor-tar,aur,copr,launchpad)publish.yml— AppImage build-dep fixRELEASING.md— secrets section for native packagingcosmic-utils-enrollcreated (one-time, out of band)Notes
cosmic-icons-gitas a dependency: the app bundles its own icon and the source has no references to the COSMIC system icon set (matches the minimallddreality).lddon the built binary (libxkbcommon,gcc-libs, glibc) plusfprintd(the D-Bus daemon the app drives).mainwas changed directly — all work is on this branch.