From b3be6c8e3cd0b117b8e44406d51e634f2b0d902b Mon Sep 17 00:00:00 2001 From: sergio Date: Sat, 27 Jun 2026 03:17:50 -0400 Subject: [PATCH] Etapa G: Go compile usa GOCACHE/GOTMPDIR en /src (disk), no en el tmpfs /tmp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit telegraf/vault (binarios Go gigantes) fallaban en el LINK con 'mapping output file failed: no space left on device': el sandbox monta --tmpfs /tmp (~½ RAM) y el GOCACHE + temp del linker desbordan ese tmpfs aunque el disco tenga 18G libres. Ahora GOCACHE/GOTMPDIR van a /src (árbol de fuentes bind- montado, en disco, per-build, lo limpia el watchdog; no se sella). No entra al hash de input (fase generada) ⇒ no re-sella el corpus Go. --- crates/hammer-build/src/lib.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/hammer-build/src/lib.rs b/crates/hammer-build/src/lib.rs index 19323680..7539822f 100644 --- a/crates/hammer-build/src/lib.rs +++ b/crates/hammer-build/src/lib.rs @@ -744,9 +744,17 @@ fn resolve_phases(recipe: &Recipe, src: &Path) -> hammer_core::Result { } else { flags.clone() }; + // GOCACHE/GOTMPDIR en /src (disk-backed, per-build, lo limpia el watchdog), NO en + // /tmp: el sandbox monta `--tmpfs /tmp` (~½ RAM); un proyecto Go ENORME (telegraf, + // vault) desborda ese tmpfs con sus objetos compilados + el temp del linker al mapear + // el binario → "link: mapping output file failed: no space left on device" aunque el + // disco tenga sitio. /src es el árbol de fuentes bind-montado (en disco) y no se sella + // (sólo /out) ⇒ inocuo. GOTMPDIR debe pre-existir. No entra al hash de input (es la + // fase generada, no un campo de la receta) ⇒ no re-sella el corpus Go. Some(format!( - "export GOCACHE=/tmp/gocache GOPATH=/tmp/gopath GOTOOLCHAIN=local \ - CGO_ENABLED=0 GOFLAGS=-mod=vendor GOPROXY=off GOBIN=/out/usr/bin; \ + "export GOCACHE=/src/.gocache GOTMPDIR=/src/.gotmp GOPATH=/tmp/gopath \ + GOTOOLCHAIN=local CGO_ENABLED=0 GOFLAGS=-mod=vendor GOPROXY=off \ + GOBIN=/out/usr/bin; mkdir -p /src/.gotmp; \ go install -trimpath -ldflags=-buildid= {pkg}" )) }