granja: PODA_FUENTES nace encendida y respeta el árbol de la receta que falló
Causa raíz de la deuda KDE de hoy: la cascada del 2026-09-03 corrió campana-deuda SIN PODA_FUENTES=1 (cero menciones en su log). Los 71 árboles de fuentes se acumularon en /dev/sdc a ~300 MB cada uno y lo llenaron en la receta 52; las 8 últimas murieron por disco, no por receta. Un default que hay que acordarse de encender no es una defensa. No poda tras un ✗: el árbol de la receta fallida es el post-mortem, y es justo el caso en que alguien va a mirarlo. Mismo criterio que el suelo de 24 h de poda-fuentes.sh, aplicado por resultado en vez de por edad. Probado: sobrevive tras ✗, poda tras ✓, y PODA_FUENTES=0 sigue apagándola.
This commit is contained in:
@@ -69,7 +69,7 @@ if ! flock -w "$LOCK_WAIT" 9; then
|
||||
exit 0
|
||||
fi
|
||||
echo "$(ts) campaña-deuda: lock de build tomado (el worker-loop espera su turno)" | tee -a "$LOG"
|
||||
total=$(echo "$DEUDA" | wc -w); i=0; ok=0; fail=0; falladas=""
|
||||
total=$(echo "$DEUDA" | wc -w); i=0; ok=0; fail=0; falladas=""; ultimo_rc=0
|
||||
echo "$(ts) campaña-deuda arranca: $total recetas | go=$(command -v go || echo AUSENTE)" | tee -a "$LOG"
|
||||
|
||||
# ── GUARDIÁN DE DISCO (2026-09-04) ──────────────────────────────────────────────────────────────
|
||||
@@ -119,9 +119,9 @@ for r in $DEUDA; do
|
||||
# build-timed.sh mide la pared y registra la duración en $STORE/.times (sólo builds reales), para
|
||||
# el camino crítico pesado de yupana. Transparente: sale con el mismo código que `hammer build`.
|
||||
if HAMMER="$HAMMER" STORE="$STORE" "$HAMMER_DIR/scripts/farm/build-timed.sh" "$f" >>"$LOG" 2>&1; then
|
||||
ok=$((ok + 1)); echo "$(ts) [$i/$total] ✓ $r" | tee -a "$LOG"
|
||||
ultimo_rc=0; ok=$((ok + 1)); echo "$(ts) [$i/$total] ✓ $r" | tee -a "$LOG"
|
||||
else
|
||||
fail=$((fail + 1)); falladas="$falladas $r"; echo "$(ts) [$i/$total] ✗ $r" | tee -a "$LOG"
|
||||
ultimo_rc=1; fail=$((fail + 1)); falladas="$falladas $r"; echo "$(ts) [$i/$total] ✗ $r" | tee -a "$LOG"
|
||||
fi
|
||||
# PODA_FUENTES=1 — borra el árbol de fuentes DENTRO del bucle, que es el único sitio donde es
|
||||
# seguro: acá tenemos el lock Y acabamos de terminar un build, así que no hay ningún `bwrap`
|
||||
@@ -130,7 +130,15 @@ for r in $DEUDA; do
|
||||
# No cuesta nada: `fetch.rs` borra y re-extrae el árbol en CADA build, no lo reutiliza jamás.
|
||||
# Nace en la cascada de kcoreaddons (2026-09-03), 71 recetas KDE en una máquina con 16 G libres:
|
||||
# a ~300 MB de árbol por receta, sin esto la campaña se come el disco antes de la onda 4.
|
||||
if [ "${PODA_FUENTES:-0}" = 1 ]; then
|
||||
#
|
||||
# POR DEFECTO 1 (2026-09-04). Nació apagado y la cascada KDE del 2026-09-03 corrió sin ponerlo:
|
||||
# 71 recetas × ~300 MB de árbol llenaron /dev/sdc en la 52 y se llevaron puestas las 8 últimas.
|
||||
# Un default que hay que acordarse de encender no es una defensa. Apagar con PODA_FUENTES=0.
|
||||
#
|
||||
# NO se poda tras un ✗: el árbol de una receta que falló es el post-mortem — sin él no se puede
|
||||
# leer qué generó cmake ni con qué flags murió, y es justo el caso en que alguien va a mirar.
|
||||
# Es el mismo criterio del suelo de 24 h de poda-fuentes.sh, aplicado por resultado y no por edad.
|
||||
if [ "${PODA_FUENTES:-1}" = 1 ] && [ "$ultimo_rc" = 0 ]; then
|
||||
rm -rf "$HAMMER_DIR"/work/sources/* 2>/dev/null || true
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user