diff --git a/scripts/farm/farm-worker-loop.sh b/scripts/farm/farm-worker-loop.sh index ae7c0a02..4de45367 100755 --- a/scripts/farm/farm-worker-loop.sh +++ b/scripts/farm/farm-worker-loop.sh @@ -74,6 +74,19 @@ DISK_HIGH="${DISK_HIGH:-82}" # incoming-clib: libs C (toolkit/foundational) que el worker SELLA pero el cron de cosecha-go IGNORA # (son build-deps, se usan vía catálogo; no tienen binario que el gate Go pueda smoke-testear). QUEUES="${QUEUES:-recipes/incoming recipes/incoming-go recipes/incoming-clib recipes/incoming-kde}" + +# REBUILD DEL BINARIO AL ARRANCAR (2026-07-18): el hammer horneado en la imagen golden ENVEJECE. +# Caso real que costó una noche de KDE: la golden del 29-jun traía un hammer sin el fix del overlay +# lowerdir (commit e69eaaa, 12-jul) ⇒ toda receta de muchas deps (kio=52, kwin, plasma-*) desbordaba +# el límite de 4KB del mount options y el sandbox NI ARRANCABA — 43 recetas atascadas jurando "en +# cola". El source SÍ llega fresco (farm-sync rsync-ea el repo), pero nadie recompilaba. Reconstruir +# aquí garantiza que el worker corre el CÓDIGO VIGENTE, no el fósil de la imagen. Cacheado: ~24s si +# no cambió nada, minutos en frío. Si cargo falla, seguimos con el binario que haya (mejor que abortar). +if command -v cargo >/dev/null 2>&1; then + echo "$(date -u +%FT%TZ) rebuild hammer desde el source rsync-eado (evita el fósil de la golden)…" + cargo build --release --bin hammer -j"$JOBS" 2>&1 | tail -2 || echo " ⚠ rebuild falló — uso el binario existente" +fi + echo "$(date -u +%FT%TZ) worker-loop arrancado: JOBS=$JOBS IDLE_SLEEP=$IDLE_SLEEP QUEUES='$QUEUES'" while :; do total=0