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.
Semantic delta
No definition changed: this change is text, documentation or data.
1 files · +18 −18
- recipes/strace.toml +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