tawasuyu

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 1569Shell 203Rust 109Markdown 993728 Definitions

strace: quitar `--enable-bundled=yes` y el pin de zig — NINGUNO hacía falta

Los añadí durante el diagnóstico y luego los verifiqué uno a uno quitándolos:
la receta construye igual sin ellos. Dejarlos era cargo-cult, y encima el
comentario afirmaba cosas que mis propias pruebas ya habían desmentido.

La causa real es UNA y las dos únicas piezas necesarias siguen ahí: quitar la
dep `linux-headers` (Linux 6.16 tapando los headers 7.1 del rootfs) y el
cherry-pick de upstream para el `io_uring_buf_reg` de 7.1.

Ambos descartes quedan escritos en la receta para que nadie los re-intente:
`--enable-bundled=yes` no puede ganar porque zig-cc impone sus headers por
delante de cualquier `-isystem`, y la versión de zig es irrelevante porque los
headers que mandan son los del ROOTFS.

Verificado tras la limpieza: sella, y `strace -c /bin/true` traza 30 syscalls.

75609c215b2d937e2193cc1b33ed137567f584d9 · by Sergio · (1 month ago) · parent 1cbcac660 · browse the tree at this commit

Semantic delta

No definition changed: this change is text, documentation or data.

1 files · +18 −18

diff --git a/recipes/strace.toml b/recipes/strace.toml
index 4710b041..12b38b01 100644
--- a/recipes/strace.toml
+++ b/recipes/strace.toml
@@ -17,25 +17,26 @@ compiler = "zig-cc"
 target   = "x86_64-linux-musl"
 link     = "static"
 flags    = []
-# ── zig 0.16.0 EXPLÍCITO + SIN `linux-headers` (2026-08-27) ─────────────────────────────────────
-# Los xlat de strace son `#unconditional` (ver `src/xlat/*.in`): la lista NO lleva guardas #ifdef,
-# así que una constante ausente en los headers UAPI **no degrada la traza, rompe la compilación**.
-# strace 6.19 pide constantes de un kernel más nuevo que el que había en el sandbox.
+# ── SIN `linux-headers` (2026-08-27) ────────────────────────────────────────────────────────────
+# El rootfs del lab YA sirve headers UAPI de **Linux 7.1** en /usr/include. La dep `linux-headers`
+# instalaba encima los de **Linux 6.16** y los TAPABA, así que mandaba la copia vieja y faltaban
+# **35 constantes** (18 de btrfs.h + 17 de input-event-codes.h: NOCOMPRESS, FF_HAPTIC,
+# ABS_SND_PROFILE, BTN_GRIP*…). Los xlat de strace son `#unconditional` (ver `src/xlat/*.in`): sin
+# guardas #ifdef, una constante ausente **no degrada la traza, rompe la compilación**.
+# Se quita la dep: no aporta NI UN header que el rootfs no traiga ya (0 ficheros exclusivos suyos).
 #
-# Medido, comparando cada fuente de headers contra las que strace lleva en `bundled/`:
+# ⚠ El fallo se destapa POR CAPAS y engaña dos veces: `make` abortaba en `btrfs.o`, así que las 17
+# de evdev ni se compilaban —al tapar la de btrfs "aparecían" las de evdev y parecía que el arreglo
+# anterior no había servido—, y sólo tras resolver las 35 se llegó a compilar `io_uring.c`, donde
+# salió el `static_assert` que arregla `strace-io-uring-7.1.patch`. Una causa, tres caras.
 #
-#     zig 0.16.0            → faltan  0
-#     zig 0.13.0            → faltan 35   (18 de btrfs.h + 17 de input-event-codes.h)
-#     dep `linux-headers`   → Linux 6.16, le faltan NOCOMPRESS, FF_HAPTIC, ABS_SND_PROFILE, BTN_GRIP*…
-#
-# La dep `linux-headers` se instala en `/usr/include` y **TAPA** los headers de zig, así que mandaba
-# la versión vieja. Se quita: `linux-headers` no aporta NI UN header que zig 0.16 no traiga ya
-# (comprobado: 0 ficheros exclusivos suyos), sólo los ensombrece con una copia más antigua.
-#
-# ⚠ El fallo se destapa POR CAPAS y engaña: `make` abortaba en `btrfs.o`, así que las 17 constantes
-# de evdev ni se compilaban. Al tapar sólo la de btrfs aparecían las de evdev, y parecía que el
-# arreglo anterior «no había servido». Es UNA causa (headers viejos), no dos.
-zig_version = "0.16.0"
+# ⚠ Probado y DESCARTADO, para que nadie lo re-intente:
+#   · `--enable-bundled=yes` — el compilador lo sugiere en el propio mensaje del assert, pero NO
+#     sirve: zig-cc impone sus headers por delante de cualquier `-isystem`, así que los `bundled/`
+#     de strace no pueden ganar. La opción se aplica ("checking whether to use bundled linux kernel
+#     headers... yes") y el assert sigue igual.
+#   · `zig_version = "0.16.0"` — innecesario. Los headers que mandan son los del ROOTFS, no los de
+#     zig, así que la versión de zig no cambia nada acá. Verificado quitándolo: sigue construyendo.
 
 [build.phases]
 # de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3).
@@ -56,7 +57,6 @@ configure = '''
 	--localstatedir=/var \
 	--disable-nls \
 	--enable-mpers=no \
-	--enable-bundled=yes \
 	--without-libunwind \
 	--without-libdw \
 	--without-libselinux