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 815Rust 56Shell 37Markdown 291229 Definitions

docs(linux): veredicto formal — kernel al gueto gcc (zig-cc x86 kbuild)

zig 0.13 compila los host-tools del kernel (wrapper que traduce el depfile
-Wp,-MMD,PATH → -MMD -MF PATH; cache de zig deshabilitado), pero el target
choca con la traducción de flags x86 de zig cc (-mtune=generic, -march=x86-64).
gcc se retiene SOLO para {kernel, cmake}; el resto del userland C es gcc-free
vía zig 0.13. Futuro intento limpio: make LLVM=1 con el clang que zig empaqueta.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>

cb9cfd9df45aced6ee42b56e93c3cbe47d4ef295 · by sergio · (4 months ago) · parent 7bf49fb96 · browse the tree at this commit

Semantic delta

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

1 files · +14 −4

diff --git a/recipes/linux.toml b/recipes/linux.toml
index dffde96c..1f158442 100644
--- a/recipes/linux.toml
+++ b/recipes/linux.toml
@@ -7,10 +7,20 @@
 # Criterio de éxito: el bzImage hammer-built bootea el builder de selfhost-verify y la corrida da
 # ✓ REPRODUCIBLE (KERNEL=<este bzImage> ./scripts/selfhost-verify.sh).
 #
-# Compilador: CC=gcc/HOSTCC=gcc (NO zig) — el kernel es el binario más grande del lab y zig 0.16
-# miscompila binarios grandes (lesson binutils/python/cmake/flex); el kernel se compila con la GNU
-# toolchain estándar (gcc + binutils as/ld del toolchain). No es input del 4/4 (es el kernel que
-# BOOTEA la VM, no algo que el 4/4 enlace), así que el compilador da igual mientras el kernel bootee.
+# Compilador: CC=gcc/HOSTCC=gcc (NO zig) — DECISIÓN FORMAL (2026-06-19): el kernel se queda en el GUETO
+# GCC (junto con cmake). gcc se retiene EXCLUSIVAMENTE como herramienta de bootstrap heredada para el
+# kernel, por incompatibilidad de la CAPA DE TRADUCCIÓN DE FLAGS de `zig cc` con el kbuild de x86_64.
+# Verdict tras experimento exhaustivo (recipes/linux-zig-test.toml, ya retirado): zig 0.13.0 SÍ compila
+# todos los HOST-TOOLS del kernel (fixdep/kconfig/objtool) con un wrapper que traduce el depfile de
+# kbuild `-Wp,-MMD,PATH` → `-MMD -MF PATH` (zig cc malinterpreta la forma cc1 de GCC; además el cache de
+# zig debe ir DESHABILITADO o rompe el self-bootstrap de flex). PERO el compile del TARGET choca en
+# cascada con la traducción de flags x86 de zig cc: `-mtune=generic` → "unknown target CPU 'generic'",
+# `-march=x86-64` → "unknown CPU: 'x86'" (zig parte mal el `x86-64`), y aún faltarían el realmode 16-bit
+# (`-march=i386`) e inline-asm/objtool. Es el "riesgo clang-build-Linux" del roadmap: open-ended y de
+# payoff incierto, con el kernel YA reproducible-bit-a-bit y booteando bajo gcc. Un futuro intento limpio
+# pasaría por exponer el clang/LLVM que zig empaqueta y construir con `make LLVM=1` (evita la capa de
+# traducción de zig cc, la fuente real de los bugs). El resto del userland C SÍ es gcc-free vía zig 0.13.
+# No es input del 4/4 (es el kernel que BOOTEA la VM, no algo que el 4/4 enlace).
 #
 # Config: defconfig x86_64 (base PC booteable en QEMU: 8250 serial, initrd, PCI) + ajustes monolíticos
 #   - E1000/OVERLAY_FS/USER_NS =y (built-in): el builder usa e1000 (vendoring) + overlay (sandbox bwrap)