harkaq: mtdev — deuda de config.sub CERRADA con patch soberano (+ límite del modelo descubierto)

El único caso de deuda de soberanía del barrido: mtdev copiaba el config.sub/guess
del autoconf de ALPINE (/usr/share/autoconf/build-aux/) porque el suyo (1.1.6) no
conoce *-musl. harkaq lo cazó como lectura no declarada del rootfs.

CERRADO con recipes/mtdev-config-sub-musl.patch: 11 líneas, +`-musl*` a la
whitelist de OS del config.sub DEL PROPIO TARBALL. Ahora es input soberano
(hasheado con la receta), sin leer Alpine. Se quitó el `cp /usr/share/autoconf/...`
del configure. Verificado: mtdev construye (b3:47708e40) sin tocar /usr/share/autoconf.

Método (con un tropiezo honesto): casi afirmo que el `cp` era espurio porque el
config.sub en work/sources/mtdev daba exit 0 con musl — pero ese source estaba
MUTADO por un build previo (el cp lo había reemplazado por el de Alpine). El
tarball ORIGINAL fresco NO conoce musl (exit 1). Casi valido sobre un source
contaminado; me salvó chequear el exit code, no el output.

DESCUBIERTO AL CERRARLO: mtdev tenía DOS deudas de Alpine, no una. También usa
`compiler = "gcc"` (gcc de Alpine, no zig). Bajo la jaula la política deniega
/usr/bin/gcc (sonda esperada) y el configure da "C compiler cannot create
executables". Es parte de matar-gcc (kernel, cmake, mtdev), frente aparte.

LÍMITE DEL MODELO (nuevo, documentado en needs-review): harkaq clasifica gcc como
"sonda esperada" SIEMPRE, así que marca la fase Hermetico — pero para una receta
compiler=gcc, gcc es ESENCIAL y el build no compila sin él. harkaq no distingue
"gcc sondeado (ignorable)" de "gcc = el compilador". Caso límite real del
clasificador; no invalida el cierre de config.sub (producción no usa la jaula).

make declarado en mtdev (deuda declarable restante). config.sub fuera de
needs-review; queda anotado el gcc-compilador.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-16 08:04:03 -04:00
co-authored by Claude Opus 4.8
parent 35f58aa75b
commit a1ab8774c5
4 changed files with 31 additions and 11 deletions
+12 -5
View File
@@ -10,11 +10,18 @@ estructura durante install, no la lectura de una lib de Alpine. Causa probable:
respeta `DESTDIR` para ese subárbol. **Acción:** revisar el `install` de la receta (¿pasa DESTDIR a
todo?), no declarar nada. Conceder `/usr/lib` como `rw` sería tapar el síntoma y cegar la evidencia.
## mtdev — `/usr/share/autoconf/build-aux/config.guess` + `config.sub` (de-Alpinización real)
mtdev, al `./configure`, toma el `config.guess`/`config.sub` del **autoconf de Alpine** en vez de los
de su propio tarball. hammer no tiene receta de `autoconf`. **Acción, una de:** (a) parchar mtdev para
que use su config.guess embebido; (b) escribir `recipes/autoconf.toml` y declararlo. Es la única deuda
de soberanía genuina de todo el barrido.
## mtdev — config.sub de Alpine ✅ CERRADO (2026-07-16), + gcc-compilador descubierto
**config.sub: cerrado.** El `config.sub` de mtdev 1.1.6 no conoce `*-musl`, así que la receta copiaba
el de Alpine (`/usr/share/autoconf/build-aux/`). Ahora se parchea el config.sub del propio tarball
(`recipes/mtdev-config-sub-musl.patch`, +`-musl*` a la whitelist de OS, 11 líneas): input soberano,
hasheado con la receta, sin tocar Alpine. Verificado: mtdev construye y no lee `/usr/share/autoconf`.
**Descubierto al cerrarlo — mtdev tenía DOS deudas de Alpine:** también usa `compiler = "gcc"` (el gcc
de Alpine, no zig). Bajo la jaula, la política deniega `/usr/bin/gcc` (sonda esperada) y el configure
da `C compiler cannot create executables`. Es parte de la campaña **matar gcc** (kernel, cmake, mtdev),
un frente aparte. Y revela un **límite del modelo de clasificación**: harkaq marca gcc como "sonda
esperada" siempre, así que dice `Hermetico`, pero para una receta `compiler=gcc` el gcc es esencial y
el build no compila sin él. harkaq no distingue "gcc sondeado (ignorable)" de "gcc = compilador".
## perl — `/etc/hosts`, `/etc/resolv.conf` (config de sistema para tests)
Los tests de perl durante el build resuelven red y leen la config del sistema. No es un binario ni
@@ -1 +0,0 @@
{"estado":"Impuro","canario_visto":true,"domain":"18a3bc08d","contador_kernel":5,"denials":[{"blockers":"fs.read_file","path":"/usr/share/autoconf/build-aux/config.sub","dev":"overlay","ino":"2203057"},{"blockers":"fs.read_file","path":"/usr/share/autoconf/build-aux/config.guess","dev":"overlay","ino":"2203056"},{"blockers":"fs.execute,fs.read_file","path":"/usr/bin/make","dev":"overlay","ino":"2208840"},{"blockers":"fs.execute,fs.read_file","path":"/usr/bin/make","dev":"overlay","ino":"2208840"}]}