From 065fc4e4817222c46c549f95ae2c14b9f36f4bce Mon Sep 17 00:00:00 2001 From: Sergio Date: Fri, 18 Sep 2026 18:45:54 +0000 Subject: [PATCH] =?UTF-8?q?exp-ec:=20portable=20al=20worker=20=E2=80=94=20?= =?UTF-8?q?el=20lock=20relativo,=20`takana`=20por=20ruta=20y=20el=20techo?= =?UTF-8?q?=20por=20entorno?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tres cosas mías que sólo se vieron al correrlo allá. El lock estaba cableado a `/work/.farm-build.lock`, que es la ruta de la CAJA (donde `work` es symlink a /work); en el worker `work` es un directorio de verdad y flock moría con `cannot open lock file`. `takana` no está en el PATH del worker, que lo invoca por `./target/release/takana`. Y el techo de 420 s alcanza para las ligeras pero no para llvm, firefox ni los kernels, así que ahora es `TLIMITE`. Todas por entorno y con el valor de antes por defecto, así que la corrida de la caja no cambia. --- scripts/farm/exp-ec.sh | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/scripts/farm/exp-ec.sh b/scripts/farm/exp-ec.sh index af40c210..d8036f76 100755 --- a/scripts/farm/exp-ec.sh +++ b/scripts/farm/exp-ec.sh @@ -24,6 +24,16 @@ TMP=${TMPDIR:-/tmp}/exp-ec REC=$(cd "$(dirname "$0")/../.." && pwd)/recipes mkdir -p "$TMP"; OUT="$TMP/resultados.tsv"; : > "$OUT" +# El lock va RELATIVO a la raíz del repo, que es donde CLAUDE.md lo define (`work/.farm-build.lock`). +# En la caja `work` es un symlink a /work y en el worker es un directorio de verdad: cablear la ruta +# absoluta de una máquina rompe en la otra con `flock: cannot open lock file`. +LOCK=${LOCK:-work/.farm-build.lock} +# Y `takana` no está en el PATH del worker — allá se invoca por su ruta dentro del árbol. +TAKANA=${TAKANA:-$(command -v takana 2>/dev/null || echo ./target/release/takana)} +# Techo por receta. 420 s alcanza para las ligeras; la cola pesada (llvm, firefox, kernels) pide +# mucho más y se le pasa TLIMITE por entorno. Un timeout NO es un veredicto: se cuenta aparte. +TLIMITE=${TLIMITE:-420} + while read -r r; do [ -f "$r" ] || continue n=$(basename "$r" .toml) @@ -36,7 +46,7 @@ while read -r r; do [ -n "$last" ] && sed -i "${last}i exit 77" "$REC/exp-ec-$n.toml" log="$TMP/$n.log" - timeout 420 flock -o /work/.farm-build.lock takana build "$REC/exp-ec-$n.toml" > "$log" 2>&1 + timeout "$TLIMITE" flock -o "$LOCK" "$TAKANA" build "$REC/exp-ec-$n.toml" > "$log" 2>&1 rc=$? if grep -q "exit 77" "$log"; then v="SOBREVIVE" elif [ $rc -eq 124 ]; then v="TIMEOUT"