Skip to content

Feat/fedora rpm packaging - #461

Open
YacineSahli wants to merge 2 commits into
cooklang:mainfrom
YacineSahli:feat/fedora-rpm-packaging
Open

Feat/fedora rpm packaging#461
YacineSahli wants to merge 2 commits into
cooklang:mainfrom
YacineSahli:feat/fedora-rpm-packaging

Conversation

@YacineSahli

Copy link
Copy Markdown

Adds RPM packaging so Fedora users can install and update cook through dnf instead of manually placing the release binary.

  • packaging/fedora/: spec + build script. Builds offline from the release source tarball (which ships the compiled web assets,no Node.js at build time) with vendored crates. self-update is disabled on purpose: a packaged binary must not replace itself; updates come from the package manager.
  • Release workflow attaches RPMs (Fedora 42 + latest, x86_64 + aarch64) to every release; a separate rpm.yaml workflow builds them on demand for testing.
  • Also adds a small cook completions subcommand, which the spec uses to ship bash/zsh/fish completions. Verified: full local build on Fedora 44, installed-file smoke tests (CLI, web UI assets, completion syntax), fmt/clippy/tests green.

Prints a shell completion script (bash, zsh, fish, ...) for the cook
binary to stdout, so users and packagers don't have to hand-roll one.
Uses the fallible clap_complete API so a closed pipe is an error, not a
panic.
Ship RPMs for Fedora so users can install and update cook through dnf
instead of manually placing the release binary.

- packaging/fedora/cookcli.spec builds from the release source tarball
  (which ships the compiled web assets, so no Node.js at build time)
  with vendored crates, fully offline, and installs the cook binary plus
  bash/zsh/fish completions generated by the binary itself.
- self-update is disabled on purpose: a packaged binary must not replace
  itself from GitHub releases; updates come from the package manager.
  The sync feature (bundled SQLite, hardcoded by cooklang-sync-client)
  can be dropped with rpmbuild --without sync.
- packaging/fedora/build-rpm.sh builds the RPMs and SRPM from a
  checkout or a downloaded release tarball; output lands in dist/rpm/.
- The release workflow builds RPMs in Fedora containers (oldest
  maintained + latest, x86_64 and aarch64) and attaches them to the
  GitHub release. A separate rpm.yaml workflow builds them on demand so
  packaging changes are testable without cutting a release.
@dubadub

dubadub commented Aug 30, 2026

Copy link
Copy Markdown
Member

@YacineSahli seems like a weird issue, is it related to the repo setup or something else?

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.

2 participants