zsh: dejar de pedir `install.info` — fallaba siempre y sellaba un `/usr/share/info` VACÍO
`makeinfo` no está en el lab, así que `make … install install.info` moría con `/bin/sh: makeinfo: not found` ⇒ `Error 2` en TODOS los builds. Y el artefacto sellaba igual: las fases corren con `/bin/sh -c` sin `-e` (`takana-build/src/sandbox.rs:332,491`), o sea que un fallo a mitad de fase no aborta — sólo cuenta el estado del ÚLTIMO comando, que acá era el bucle de guardianes y daba 0. Lo que llegaba al store era un zsh por lo demás correcto (estático, con sus módulos, con `=~`) pero con un `/usr/share/info` vacío adentro. Es la regla 3 de CLAUDE.md a escala de fase en vez de artefacto: un ausente falla ruidosamente, un vacío llega hasta el final diciendo que todo fue bien. Lo que salvó al artefacto no fue el estado de salida sino los dos guardianes que la receta ya traía escritos a mano. Una receta sin guardianes propios no tiene esa red — eso es el hallazgo general, y va aparte.
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +11 −1
- recipes/zsh.toml +11 −1
diff --git a/recipes/zsh.toml b/recipes/zsh.toml
index b1b866e5..7b4f8c7b 100644
--- a/recipes/zsh.toml
+++ b/recipes/zsh.toml
@@ -148,8 +148,18 @@ _abuild_phase
# de package() de Alpine (traducido $pkgdir→/out). Sin locales: el corpus no los hidrata y pesan.
install = '''
_abuild_phase() {
- make LOCAL_LDFLAGS= DESTDIR="/out" install install.info
+ make LOCAL_LDFLAGS= DESTDIR="/out" install
rm -rf "/out"/usr/share/locale
+ # `install.info` NO se pide, y no es una poda de tamaño como la de arriba: MEDIDO el
+ # 2026-09-18, `makeinfo` no está en el lab, así que fallaba SIEMPRE
+ # (`/bin/sh: makeinfo: not found` ⇒ `make: *** [Makefile:255: install.info] Error 2`).
+ # Y el build SELLABA IGUAL, dejando un `/usr/share/info` vacío adentro: las fases corren
+ # con `/bin/sh -c` SIN `-e` (`takana-build/src/sandbox.rs:332,491`), así que un fallo a
+ # mitad de fase no aborta nada — sólo cuenta el estado del ÚLTIMO comando. Un directorio
+ # vacío en el artefacto es la regla 3 de CLAUDE.md en pequeño: llega hasta el final
+ # diciendo que todo fue bien. Pedir algo que no puede funcionar y tolerar su fallo es
+ # peor que no pedirlo.
+ rm -rf "/out"/usr/share/info
# `/etc/shells` no se escribe acá: es estado del sistema instalado, no del artefacto.
# GUARDIÁN: un zsh dinámico sella, reproduce y NO ARRANCA dentro de una imagen (pide
# libncursesw.so.6, que nadie provee). Se comprueba el hecho en el ELF, no la intención.