gioser

sergio/takana

> 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…

TOML 188Rust 55Shell 30Markdown 281211 Definiciones

sandbox: el wrapper no inyecta -mcpu=baseline en modo preprocesador (-E)

util-linux —perfil BASE— no construia: `zig: error: unsupported option
'-mcpu=' for target`. En modo `-dM -E -` zig traduce `-mcpu=baseline` a un
`-mcpu=` VACIO y lo rechaza, asi que `errnos.h` no se generaba.

La receta YA trae un apaño para esto: parchea sus generadores all_errnos y
all_syscalls para filtrar el flag. Pero filtra `"$@"`, y el flag NO viene ahi
— lo inyecta el wrapper DESPUES, en el `exec`. El apaño quedo inerte cuando
se introdujo el wrapper, y no hay forma de esquivarlo desde una receta.

Omitirlo con `-E` es inofensivo por construccion: preprocesar no genera
codigo, asi que no hay CPU al que apuntar.

⚠ MISMO PATRON QUE make/--export-dynamic: el wrapper cambia lo que producen
los builds FUTUROS sin mover ningun hash (no esta en hash_inputs), asi que la
rotura quedo congelada por cache-hit hasta que el corpus se reconstruyo. Este
cambio tiene la misma propiedad ⇒ se hace AHORA, con el corpus a medio
reconstruir y casi nada sellado, no dentro de un mes.

Verificado: util-linux sella (370530ff...).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

6d99ca669be72ab882095db7ffbb7190609e46b4 · por Sergio · (hace 2 meses) · padre 3848e5c94 · ver el árbol en este commit

Delta semántico · 1

crates/hammer-build/src/sandbox.rs

1 archivos · +10 −0

diff --git a/crates/hammer-build/src/sandbox.rs b/crates/hammer-build/src/sandbox.rs
index c0f5f8e2..73922584 100644
--- a/crates/hammer-build/src/sandbox.rs
+++ b/crates/hammer-build/src/sandbox.rs
@@ -572,6 +572,16 @@ fn write_cc_wrappers(rootfs: &Path) -> hammer_core::Result<()> {
              \x20   done\n\
              \x20   ;;\n\
              esac\n\
+             \x20# `-mcpu=baseline` NO se inyecta en modo PREPROCESADOR (`-E`): ahí zig lo traduce a\n\
+             \x20# un `-mcpu=` VACÍO y lo rechaza («unsupported option '-mcpu=' for target»). Es\n\
+             \x20# inofensivo omitirlo —preprocesar no genera código, así que no hay CPU al que\n\
+             \x20# apuntar— y sin esto NO se puede esquivar desde la receta: util-linux ya filtra\n\
+             \x20# el flag en sus generadores `all_errnos`/`all_syscalls`, pero filtra `\"$@\"` y el\n\
+             \x20# wrapper lo vuelve a poner DESPUÉS ⇒ el apaño de la receta es inerte y `errnos.h`\n\
+             \x20# no se genera (2026-08-12; util-linux es del perfil base).\n\
+             case \" $* \" in\n\
+             \x20 *\" -E \"*) exec {driver} \"$@\" ;;\n\
+             esac\n\
              exec {driver} -mcpu=baseline \"$@\"\n"
         )
     };