The compose mount `./runner-cargo-target:/cache/target` already
persists the target dir. Set CARGO_HOME to a subdir of that mount so
the downloaded-crates index + git cache survive too — otherwise every
build re-fetches every dep. No server-side compose change needed.
The previous CARGO_BUILD_JOBS=1 + nice + ionice throttling rested on an
assumed OOM diagnosis for run 86 (2026-04-23) that was never confirmed
via dmesg/journalctl. Build times tripled for no verified reason.
Remove the throttle; if a real OOM is captured in the future, re-add
limits with actual evidence.
Parallel Rust builds have OOM-killed the Gitea host twice
(2026-04-20, 2026-04-23 run 86). Force CARGO_BUILD_JOBS=1,
MAKEFLAGS=-j1, and wrap makepkg with nice+ionice so the
act_runner can't drown the shared host.
Gitea's Arch registry doesn't regenerate the repo DB on pkgver change —
old entries linger as zombies (e.g. moonarch-git r99 stuck in moonarch.db
even though only r105 exists as a package). List all versions of each
built package and DELETE them before the upload so the DB gets rebuilt
cleanly. Bump moonarch-git pkgrel to force a rebuild and exercise the fix.
curl -sf was silencing upload errors: r105 was 'Published' six times
in a row but never landed in the registry. Capture the HTTP status
and abort on non-2xx so the run goes red and the response body shows
up in the log.
moonarch-git's runtime depends include AUR-only packages (stasis,
auto-cpufreq, ttf-ubuntusans-nerd) that plain pacman cannot resolve,
so `makepkg -s` fails with "Could not resolve all dependencies" —
even though those runtime deps aren't needed to build the package.
Extract makedepends from PKGBUILD, install them targeted (cargo/go
for Rust and Go packages; empty for moonarch-git), then run makepkg
with -d so it skips the full dep check. Rust packages still get their
compiler, moonarch-git builds without needing the AUR world.
PKGBUILDs with options=('debug') produce a main + -debug split pair.
The previous `ls -t | head -1` only uploaded one, and which one won
was mtime-dependent. Loop over all *.pkg.tar.zst and parse pkgname
per file (so -debug gets its own registry entry).
Previous -Syu triggered a full system upgrade inside the runner
container, which together with the concurrent Rust build saturated
the shared host and took Gitea down. -Sy just refreshes the package
DB, which is all makepkg -s actually needs to resolve current deps.
Runner container has a cached pacman DB that lists package versions
already rotated off the mirrors, causing 404s when makepkg -s tries
to pull makedepends (gtk4, mesa, llvm-libs). Sync the DB first.
makepkg -sfd skipped dependency checks, preventing `-s` from pulling
in rust/cargo (moonlock/moongreet/moonset) and go (sshfsc). Builds
failed with `cargo: command not found`. Remove `-d`; `-s` now installs
makedepends via pacman before the build.
Triggers on PKGBUILD changes (from pkgver-bot commits).
Builds the changed package with makepkg and uploads the
.pkg.tar.zst to the Gitea Arch Package Registry.