catacomb/docs/src/packaging.md
Luna 6f174f703b Docs/roadmap: correct CI claims — Codeberg runs Woodpecker, not Forgejo Actions
The .forgejo/workflows/* definitions don't execute on Codeberg (no
runner). Docs publish via scripts/publish-docs.sh; tests/packages run
locally. Fixes claims introduced earlier today.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-07 03:27:04 -07:00

1.6 KiB

Packaging

Build distributable Linux packages with one script:

scripts/package.sh all       # .deb + .rpm + .AppImage → dist/
scripts/package.sh deb       # just the .deb
scripts/package.sh rpm
scripts/package.sh appimage

It builds the release binary once and reuses it for every format, installing cargo-deb / cargo-generate-rpm on demand and downloading appimagetool to dist/tools/ on first AppImage build. Per-format failures are isolated and summarized at the end. Output (gitignored) lands in dist/.

Formats

  • .deb — built by cargo-deb from [package.metadata.deb] in Cargo.toml.
  • .rpm — built by cargo-generate-rpm from [package.metadata.generate-rpm]. (ffmpeg on Fedora is in RPM Fusion.)
  • AppImage — a hand-rolled AppDir + appimagetool. Bundles the GUI binary's shared-library closure only; yt-dlp/ffmpeg/mpv stay host PATH deps, same as the package declarations.
  • Arch — use the repo's PKGBUILD (not this script); run makepkg from a clean directory.

CI

The repo ships .forgejo/workflows/ definitions (test.yml, release.yml), but Codeberg executes Woodpecker rather than Forgejo Actions — so they don't run there without a self-hosted runner. Until then, build packages locally with scripts/package.sh and publish docs with scripts/publish-docs.sh.

The repo's docs/PACKAGING.md has the per-distro install commands and the Windows/macOS status in full.