diff --git a/docs/10-roadmap.md b/docs/10-roadmap.md index bddd1e83..b5a08d15 100644 --- a/docs/10-roadmap.md +++ b/docs/10-roadmap.md @@ -290,9 +290,16 @@ Diseño completo en [SDD 11 — Bootstrap from-scratch](11-bootstrap.md). Resume igual layout que Alpine: un `/bin/coreutils` + ~100 symlinks), así **un solo swap del binario** rutea todos los applets. Tool, no input ⇒ build vainilla sin patches. Bisección host fuerte: **musl Y busybox rebuildearon byte-idéntico** (`57b66a2e`, `56664d70`) con hammer-coreutils pisando el de Alpine. - Expuesto con `SWAP_COREUTILS=1`. **Pendiente:** correr in-VM acumulando los swaps + Expuesto con `SWAP_COREUTILS=1`. Falta correrla in-VM. + **Herramientas de toolchain extra desde fuente (provenance, no en el camino del 4/4 mínimo):** + `recipes/{patch,m4,pkgconf}.toml` — GNU patch 2.8 (lo usa `apply_patches`), GNU m4 1.4.20 (base + autotools) y pkgconf 2.5.1 (lee los `.pc` que materializa el lab). Construidas estáticas con zig cc + y validadas (corren, versión correcta, funcionales). El 4/4 mínimo (musl/busybox/hammerd/arje-zero) + no las invoca, así que no llevan flag `SWAP_*` dedicado: son swapeables con el escape `SWAPS="name=hash:rel"`. + Avanzan el "builder reconstruible al completo, no todo-Alpine" aunque el verify no las ejercite hoy. + **Pendiente:** correr in-VM acumulando los swaps de sandbox (`KVM=1 MEM=24576 SWAP_MAKE=1 SWAP_BUSYBOX=1 SWAP_LINUX_HEADERS=1 SWAP_BWRAP=1 SWAP_COREUTILS=1 ./scripts/selfhost-verify.sh`) - para el `✓ REPRODUCIBLE`, y seguir con la última pieza: rust/llvm (la grande — ya hay infra de deps). + para el `✓ REPRODUCIBLE`, y la última pieza grande: rust/llvm (ya hay infra de deps; falta python/cmake/ninja en el toolchain). - ✅ **B.2 — `CRASHED` real a la capa de IA (cableado end-to-end):** el `Event::Crashed` del bus de agente ya tiene fuente real. **Fuente (arje):** `arje-bus` ganó `BusRequest::Subscribe` + `BusPayload::Event(BusEvent)`; arje-zero difunde en `on_death` `EnteCrashed{id,label,status}` diff --git a/recipes/m4.toml b/recipes/m4.toml new file mode 100644 index 00000000..645be825 --- /dev/null +++ b/recipes/m4.toml @@ -0,0 +1,21 @@ +# GNU m4 1.4.20 — herramienta del toolchain hammer-from-source (variante b, SDD 11 §7.2b). +# +# Procesador de macros base de la cadena autotools (autoconf/automake/bison lo invocan). Hoy ninguna +# receta corre `autoreconf` (todas son AutoconfReady: traen `configure` generado), así que m4 no está +# en el camino del 4/4 actual — pero es pieza del toolchain Alpine y la reemplazamos desde fuente para +# que el builder sea reconstruible al completo (no "todo Alpine"). Tool, no input: build vainilla. +# +# Tarball release GNU (configure ya generado ⇒ AutoconfReady). Estático musl, zig cc. + +name = "m4" +version = "1.4.20" + +[source] +tarball = "https://ftp.gnu.org/gnu/m4/m4-1.4.20.tar.gz" +sha256 = "6ac4fc31ce440debe63987c2ebbf9d7b6634e67a7c3279257dc7361de8bdb3ef" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = ["--disable-nls"] diff --git a/recipes/patch.toml b/recipes/patch.toml new file mode 100644 index 00000000..7730bce7 --- /dev/null +++ b/recipes/patch.toml @@ -0,0 +1,20 @@ +# GNU patch 2.8 — herramienta del toolchain hammer-from-source (variante b, SDD 11 §7.2b). +# +# El lab la invoca en `apply_patches` (hammer-build/src/fetch.rs: `patch -p1`) cuando una receta trae +# `source.patches` — p.ej. el overlay de compatibilidad de `linux-headers`. Reemplaza el `patch` del +# paquete homónimo de Alpine. Tool, no input del 4/4: build vainilla, sin patches. +# +# Tarball release GNU (configure ya generado ⇒ AutoconfReady, como grep/make). Estático musl, zig cc. + +name = "patch" +version = "2.8" + +[source] +tarball = "https://ftp.gnu.org/gnu/patch/patch-2.8.tar.gz" +sha256 = "308a4983ff324521b9b21310bfc2398ca861798f02307c79eb99bb0e0d2bf980" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = ["--disable-nls"] diff --git a/recipes/pkgconf.toml b/recipes/pkgconf.toml new file mode 100644 index 00000000..e84b8ba9 --- /dev/null +++ b/recipes/pkgconf.toml @@ -0,0 +1,21 @@ +# pkgconf 2.5.1 — herramienta del toolchain hammer-from-source (variante b, SDD 11 §7.2b). +# +# Provee `pkgconf` (+ el symlink `pkg-config`): resuelve flags de compilación/enlace de libs vía sus +# `.pc`. Es la pieza que LEE los `usr/lib/pkgconfig/*.pc` que la materialización de build-deps deja en +# el sandbox (ver hammer-build materialize_build_deps); cualquier receta que dependa de una lib y use +# `pkgconf --cflags/--libs` lo necesita. Reemplaza el `pkgconf` de Alpine. Tool, no input: build vainilla. +# +# Tarball release de distfiles.ariadne.space (configure ya generado ⇒ AutoconfReady, NO el archive de +# github que pediría autogen). Estático musl, zig cc. + +name = "pkgconf" +version = "2.5.1" + +[source] +tarball = "https://distfiles.ariadne.space/pkgconf/pkgconf-2.5.1.tar.gz" +sha256 = "ab89d59810d9cad5dfcd508f25efab8ea0b1c8e7bad91c2b6351f13e6a5940d8" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static"