selfhost-verify: herramientas de toolchain extra desde fuente — patch, m4, pkgconf
Más de-Alpinización del builder (variante b, SDD 11 §7.2b): recetas para construir desde fuente tres build-tools del toolchain que hoy vienen de Alpine. - recipes/patch.toml (GNU patch 2.8): lo invoca apply_patches (hammer-build/fetch.rs) cuando una receta trae source.patches, p.ej. el overlay de linux-headers. - recipes/m4.toml (GNU m4 1.4.20): base de la cadena autotools. - recipes/pkgconf.toml (pkgconf 2.5.1): lee los .pc que materialize_build_deps deja en el sandbox. Las 3 estáticas musl con zig cc (AutoconfReady), validadas: corren, versión correcta y funcionales (patch aplica, m4 expande, pkgconf resuelve). El 4/4 mínimo no las invoca ⇒ sin flag SWAP_* dedicado (swapeables con el escape SWAPS="name=hash:rel"); avanzan "builder reconstruible al completo". Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+9
-2
@@ -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}`
|
||||
|
||||
@@ -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"]
|
||||
@@ -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"]
|
||||
@@ -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"
|
||||
Reference in New Issue
Block a user