802e98d3a3
ci / rust (push) Successful in 1m13s
android / android (push) Failing after 1m42s
ci / web (push) Successful in 27s
ci / bench (push) Successful in 1m50s
decky / build-publish (push) Successful in 11s
deb / build-publish (push) Failing after 2m38s
apple / swift (push) Successful in 54s
ci / docs-site (push) Successful in 32s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 4s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 2m57s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 4s
flatpak / build-publish (push) Failing after 2s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 2m33s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 5m20s
docker / deploy-docs (push) Successful in 17s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 5m11s
The punktfunk-web management console (pairing + status) shipped only via apt. Extend it to the other HOST packaging methods, mirroring the Debian punktfunk-web .deb (flatpak is the client, correctly excluded): - rpm/punktfunk.spec: new noarch `punktfunk-web` subpackage (the .output bundle + a /usr/bin/punktfunk-web-server node launcher + both systemd --user units + web-init.sh + web.env.example), gated behind `%bcond_with web`. OFF by default because building the Nitro/Node SSR bundle needs `bun`, which a plain rpmbuild / COPR mock chroot lacks. Host package weak-Recommends punktfunk-web. - ci/fedora-rpm.Dockerfile: install bun (+ unzip) so the CI builder can build the console. - rpm.yml: build `PF_WITH_WEB=1` (Prep bootstraps bun to stay green pre-image-rebuild); the publish loop already globs the new noarch rpm into the registry. build-rpm.sh: `--with web` when PF_WITH_WEB=1. - bootc/Containerfile: install from the Gitea RPM registry (which carries punktfunk-web) instead of COPR — `dnf5 install punktfunk punktfunk-web`. - arch/PKGBUILD: opt-in `punktfunk-web` split member (PF_WITH_WEB=1 appends it + bun) so a default makepkg still builds host+client with no JS tooling — matching the spec's bcond. - docs: packaging/README, rpm/README, copr/README (the no-bun caveat), bazzite/README (Path B rewritten COPR→Gitea registry), arch/README — enable + journal-password steps. Reviewed across methods by an adversarial multi-agent pass (rpm/ci/arch/bootc/consistency lenses, each blocking finding 3x-verified); fixed the two it confirmed real — the Arch bun-mandatory regression (now opt-in) and the stale COPR wording in bazzite Path B. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
49 lines
2.3 KiB
Markdown
49 lines
2.3 KiB
Markdown
# COPR build-from-SCM settings
|
|
|
|
COPR builds the RPM from this git repo (no manual SRPM upload). Configure the project
|
|
once in the COPR web UI (or with `copr-cli`):
|
|
|
|
**Project → New Build → SCM**
|
|
- Clone URL: `https://git.unom.io/unom/punktfunk`
|
|
- Committish: `main` (or a release tag)
|
|
- Subdirectory: *(repo root)*
|
|
- Spec File: `packaging/rpm/punktfunk.spec`
|
|
- Source build method: `rpkg` (or `make_srpm`)
|
|
|
|
**Project settings**
|
|
- Chroots: `fedora-41-x86_64`, `fedora-42-x86_64` (match your Bazzite Fedora base;
|
|
`rpm -E %fedora` on the host tells you which). Add `aarch64` if needed.
|
|
- External repositories (so `ffmpeg-devel` resolves at build time):
|
|
`https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$releasever.noarch.rpm`
|
|
and the matching `-free-` repo.
|
|
- Enable network during build (cargo fetches crates from crates.io) — COPR allows this by
|
|
default.
|
|
|
|
`copr-cli` equivalent:
|
|
|
|
```sh
|
|
copr-cli create punktfunk --chroot fedora-42-x86_64 \
|
|
--repo 'https://mirrors.rpmfusion.org/free/fedora/rpmfusion-free-release-$releasever.noarch.rpm' \
|
|
--repo 'https://mirrors.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-$releasever.noarch.rpm'
|
|
copr-cli buildscm punktfunk \
|
|
--clone-url https://git.unom.io/unom/punktfunk \
|
|
--commit main --spec packaging/rpm/punktfunk.spec --method rpkg
|
|
```
|
|
|
|
Note: COPR caps build time/RAM; a full `cargo build --release` of the host (FFmpeg/PipeWire
|
|
sys-crates + aws-lc-rs) is heavy but within the default COPR limits. If a chroot OOMs, lower
|
|
parallelism with `CARGO_BUILD_JOBS` in the spec's `%build`.
|
|
|
|
## The web console subpackage (`punktfunk-web`)
|
|
|
|
The spec can also build the management web console as a noarch `punktfunk-web` subpackage, but it's
|
|
gated behind `%bcond_with web` and **OFF by default** — building the Nitro/Node SSR bundle needs
|
|
`bun`, which COPR's mock chroot does not provide. So a stock COPR build produces only `punktfunk`
|
|
+ `punktfunk-client`.
|
|
|
|
Two ways to get the console:
|
|
- **Recommended:** install it from the Gitea RPM registry (`packaging/rpm/README.md`, Option A),
|
|
whose CI builder image has `bun` and builds `--with web`. (This is what `bootc/Containerfile` does.)
|
|
- **In COPR:** add `bun` to the chroot (a custom mock config / external repo) and set the build
|
|
option `--with web` on the project, then `dnf install punktfunk-web`.
|