> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…
Etapa G: fetch extrae tarballs con tar --no-same-owner (fix de clase)
Como root (granja), tar preservaba el uid del tarball → el sandbox (userns) no podía chmod/escribir
esos ficheros → configure autotools fallaba (oniguruma: Permission denied creando Makefile). Extraer
como root sin preservar owner lo arregla para TODO tarball. oniguruma vuelve a configure plano.
diff --git a/crates/hammer-build/src/fetch.rs b/crates/hammer-build/src/fetch.rs
index 873efa77..2b85694e 100644
--- a/crates/hammer-build/src/fetch.rs
+++ b/crates/hammer-build/src/fetch.rs
@@ -125,6 +125,12 @@ fn fetch_tarball(
let strip = recipe.source.strip_components.to_string();
let status = Command::new("tar")
.arg("-x")
+ // `--no-same-owner`: extrae como el usuario actual (no preserva el uid del tarball). Si el
+ // fetch corre como root (granja), `tar` por defecto preservaría el owner original → ficheros
+ // de un uid que el sandbox (userns) no puede chmod/escribir → configure de autotools falla
+ // ("Permission denied" creando Makefile, "Operation not permitted" en chmod). Inocuo para el
+ // of_tree (es el árbol de FUENTES, no el output). Destraba libs C como oniguruma.
+ .arg("--no-same-owner")
.arg("-f")
.arg(&cached)
.arg("--strip-components")
diff --git a/recipes/oniguruma.toml b/recipes/oniguruma.toml
index 34fc6b92..84724d51 100644
--- a/recipes/oniguruma.toml
+++ b/recipes/oniguruma.toml
@@ -16,6 +16,4 @@ link = "static"
flags = []
[build.phases]
-# el tarball extrae src/ sin permiso de escritura p/ el uid del sandbox ⇒ config.status no puede crear
-# src/Makefile. chmod -R u+w antes de configure (inocuo, sólo permisos).
-configure = "chmod -R u+w . && ./configure --prefix=/usr --enable-posix-api=yes"
+configure = "./configure --prefix=/usr --enable-posix-api=yes"