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.
This commit is contained in:
@@ -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")
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user