Old logic curl-HEAD-checked an exact pkgname_pkgver-pkgrel_arch.deb URL.
That breaks when source PKGREL has rolled back below pools current head:
reprepro rejects the lower-version upload but our exact-URL check still
404s, so CI rebuilds the package on EVERY push without ever updating
the pool — endless rebuild trap.
New logic parses the canonical Packages index (what apt consults) and
uses dpkg --compare-versions to skip iff pool >= source.
Pool view today:
- ffmpeg-v4l2-request-fourier: pool=2:8.1+rfourier+gb57fbbe-4 vs
source=2:8.1+rfourier+gb57fbbe-2
4 >= 2 → skip (was: 404 → rebuild)
- mpv-fourier: pool=1:0.41.0+rfourier-3 vs
source=1:0.41.0+rfourier-1
3 >= 1 → skip (was: 404 → rebuild)
set +o pipefail before the curl|awk pipeline — awks early `exit`
closes the pipe, curl gets SIGPIPE and returns 23 ("Failure writing
output"), which under our pipefail/-e header aborts the script with
empty pool_ver. Localised pipefail-off keeps the global -euo behaviour
elsewhere.
Without timeouts, a slow/dead-TCP upstream (e.g. github tarballs)
hangs the runner indefinitely. Today run 15185 mpv-fourier-debian
sat 6+ min on "curl -sSLfo mpv.tar.gz https://github.com/.../mpv-0.41.0.tar.gz"
with no progress visible — fermis act_runner blocked, slot unusable
for parallel work.
--connect-timeout 10 fails fast if upstream is unreachable
--max-time 600 caps worst-case at 10 min per fetch
--retry 3 handles transient flakes
--retry-delay 5 gives transient outages a moment
Patched in: claude-his-agent, daedalus-v4l2, daedalus-v4l2-dkms,
libva-v4l2-request-fourier, lmcp, mpv-fourier. ffmpeg-v4l2-request-fourier
has no curl call.
Native trixie execution avoids the cross-distro ABI skew issues we
hit when building libva-v4l2-request-fourier-debian on Arch (PR #44):
__vaDriverInit_1_23 vs trixies libva 2.22 binding. The same hazard
applies to other fourier-debian jobs that link against debian libs.
Jobs moved from runs-on: arch-aarch64 -> debian-aarch64:
- ffmpeg-v4l2-request-debian
- mpv-fourier-debian
- daedalus-v4l2-debian
- daedalus-v4l2-dkms-debian
Left alone (arch=all, no native compile against debian libs):
- lmcp-debian
- claude-his-debian
Depends on PR #46 (runs-on uses bohrs LABEL, not runner-name).