Add production .rpm packaging and dnf setup; share runtime staging #29

Closed
Tyler wants to merge 0 commits from pr/09-linux-dnf-rpm into main
Owner

Phase 3, PR 9 (dnf/Fedora half). Mirrors GitHub PR Twest2/StepForge#13.

  • packaging/linux/common/stage-runtime.sh: shared runtime-only staging extracted from the .deb builder (both formats use it; no drift). The .deb builder now delegates to it.
  • packaging/linux/fedora/stepforge.spec: runtime Requires + Recommends + %license + %post(setuid chrome-sandbox); packages a prebuilt BuildRoot, no compilation.
  • packaging/linux/fedora/package.sh: stages shared payload, runs rpmbuild with detected arch; requires rpmbuild + node_modules; emits .rpm + sha256.
  • scripts/linux/dnf/install-{runtime,build}-deps.sh separate; docs/linux/dnf.md.

Verified: 281 unit tests incl. new dnf structural checks; refactored .deb builder still green; rpm integration test honest-skips where rpmbuild is absent (runs on Fedora CI).

Phase 3, PR 9 (dnf/Fedora half). Mirrors GitHub PR Twest2/StepForge#13. - packaging/linux/common/stage-runtime.sh: shared runtime-only staging extracted from the .deb builder (both formats use it; no drift). The .deb builder now delegates to it. - packaging/linux/fedora/stepforge.spec: runtime Requires + Recommends + %license + %post(setuid chrome-sandbox); packages a prebuilt BuildRoot, no compilation. - packaging/linux/fedora/package.sh: stages shared payload, runs rpmbuild with detected arch; requires rpmbuild + node_modules; emits .rpm + sha256. - scripts/linux/dnf/install-{runtime,build}-deps.sh separate; docs/linux/dnf.md. Verified: 281 unit tests incl. new dnf structural checks; refactored .deb builder still green; rpm integration test honest-skips where rpmbuild is absent (runs on Fedora CI).
Tyler added 1 commit 2026-07-04 04:34:11 +00:00
Add production .rpm packaging and dnf setup; share runtime staging
Template tests / tests (pull_request) Failing after 33s
575d893f90
Phase 3 of the improvement plan (PR 9 of the sequence): the dnf/Fedora
packaging half, in separate Linux-specific files, mirroring the apt/.deb work.

- packaging/linux/common/stage-runtime.sh: shared runtime-only payload staging
  extracted from the .deb builder so the two package formats never drift. It
  copies app code + a fixed Electron runtime + production npm deps (npm ls
  --omit=dev), guards against dev-dep leaks, and fails without node_modules.
  The .deb builder now delegates to it.
- packaging/linux/fedora/stepforge.spec: runtime Requires (nss, nspr, gtk3,
  …), Recommends (xinput, portal, pipewire), %license, and a %post that makes
  chrome-sandbox setuid and refreshes desktop/MIME/icon caches. No compilation
  — it packages the prebuilt BuildRoot.
- packaging/linux/fedora/package.sh: stages the shared payload, substitutes
  version/maintainer into the spec, and runs rpmbuild against the prebuilt
  BuildRoot with detected arch. Requires rpmbuild + node_modules; emits an
  .rpm + sha256.
- scripts/linux/dnf/install-runtime-deps.sh and install-build-deps.sh:
  separate runtime vs build dependency sets for dnf (runtime installs no build
  tools).
- docs/linux/dnf.md: Fedora/RHEL install + build guide, distinct from apt.md.

Tests: packaging-linux.test.js gains Fedora/dnf structural checks (spec
Requires + MPL-2.0 + %license + sandbox setup, builder shares staging +
requires rpmbuild, dnf build/runtime dep separation, shared staging never
copies the whole dev tree). tests/integration/linux/package-rpm.test.sh builds
a real .rpm and asserts runtime-only contents (honest skip when rpmbuild is
absent, as on this apt host).

Verified: 13 packaging unit tests pass; the refactored .deb builder still
produces a valid runtime-only package (integration test green); the .rpm
integration test skips cleanly where rpmbuild is unavailable.

Co-Authored-By: Claude Fable 5 <[email protected]>
Author
Owner

Merged into main (same-SHA merge to both forges; GitHub mirror PR Twest2/StepForge#13 MERGED, CI green ubuntu+windows). Closing.

Merged into main (same-SHA merge to both forges; GitHub mirror PR Twest2/StepForge#13 MERGED, CI green ubuntu+windows). Closing.
Tyler closed this pull request 2026-07-04 04:35:34 +00:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Tyler/StepForge#29