recipes: GNU make 4.4.1 — pieza 1 del toolchain hammer-from-source (variante b)
Arranca el auto-alojamiento *puro* (SDD 11 §7.2b): reemplazar una a una las piezas que el builder toma de Alpine (/toolchain) por recetas hammer desde fuente, con Stage 2 reverificando cada paso. make es la pieza base de toda receta autotools. Build estático musl con zig cc (mismo camino que grep: tarball release con configure → AutoconfReady), sellado b3:fbad44ac… y reproducible bit-a-bit (dos builds en stores distintos ⇒ árbol idéntico). Pendiente: swap al /toolchain del builder + Stage 2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+8
-4
@@ -229,10 +229,14 @@ Diseño completo en [SDD 11 — Bootstrap from-scratch](11-bootstrap.md). Resume
|
||||
Stage 0 → Stage 1 (booteado en QEMU, arje-zero como PID 1, `CRASHED` real) → **Stage 2
|
||||
auto-alojamiento bit-a-bit confirmado** (`✓ REPRODUCIBLE`, host↔VM). Baseline reproducible
|
||||
4/4: `of_tree(stage1)=b3:0039b2b9…` (cu=1).
|
||||
- ⏭️ **Siguiente:** (1) auto-alojamiento *puro* — que hammer construya el toolchain semilla
|
||||
desde fuente (no el zip de zig + Alpine como sustrato del builder), camino (b) de
|
||||
[SDD 11 §7](11-bootstrap.md); (2) ítems Stage 1 pendientes: bus único (B.2: exponer el
|
||||
`CRASHED` a la capa de IA) y atestación arje (A1/A2).
|
||||
- 🚧 **En curso — auto-alojamiento *puro* (variante b, [SDD 11 §7.2b](11-bootstrap.md)):** que
|
||||
hammer construya el toolchain del builder desde fuente (no Alpine), reemplazando piezas una a una
|
||||
con Stage 2 verificando cada paso. **Pieza 1 hecha:** GNU make `4.4.1` (`recipes/make.toml`) se
|
||||
compila desde fuente con el lab — estática musl, sellada `b3:fbad44ac…`, reproducible bit-a-bit.
|
||||
Pendiente: swap al `/toolchain` del builder + Stage 2 reverificando, y luego make/autotools →
|
||||
linux-headers → bwrap → el gran tramo rust/llvm.
|
||||
- ⏭️ **También pendiente (Stage 1):** bus único (B.2: exponer el `CRASHED` a la capa de IA) y
|
||||
atestación arje (A1/A2).
|
||||
|
||||
## Notas de entorno
|
||||
- Desarrollo principal: laptop del autor.
|
||||
|
||||
@@ -203,6 +203,11 @@ recetas, la **semilla** (`zig`, ya un artefacto sellado), `make`+autotools, `car
|
||||
make/autotools, y el gran tramo: rust/llvm o un rustc bootstrappeado). Es el end-state; el más
|
||||
caro (construir rust desde cero). Se llega **incrementalmente**, reemplazando una a una las piezas
|
||||
Alpine por componentes hammer, con Stage 2 verificando cada paso.
|
||||
- **Pieza 1 — GNU make `4.4.1`** (`recipes/make.toml`): arranque de (b). Build estático musl con
|
||||
`zig cc` (mismo camino que `grep`: tarball release con `configure` → AutoconfReady), sellado en
|
||||
`b3:fbad44ac…` y **reproducible bit-a-bit** (dos builds en stores distintos ⇒ árbol idéntico).
|
||||
Es la herramienta base de toda receta autotools. Pendiente: swap al `/toolchain` del builder en
|
||||
lugar del `make` de Alpine, con Stage 2 reverificando `of_tree(stage1')`.
|
||||
|
||||
### 7.3 Enganche con lo ya hecho
|
||||
|
||||
@@ -237,7 +242,8 @@ manifiesto (línea stage 2). Validado contra el store real (Stage 1 `73d7a9be…
|
||||
no-interactivo; in-VM reconstruyó los 4/4 (arje-zero cu=1 en ~27 min) y `of_tree(stage1') =
|
||||
b3:0039b2b9…` igualó la referencia ⇒ `✓ REPRODUCIBLE: stage1' == stage1`. Lo que queda es la
|
||||
variante (b), el auto-alojamiento *puro* (toolchain construido por hammer desde fuente, §7.2).
|
||||
Ver [runbook §8](runbooks/stage1-vm-boot.md).
|
||||
**Arrancada:** la pieza 1, GNU make `4.4.1` (`recipes/make.toml`), ya se construye desde fuente
|
||||
con el lab — estática, reproducible bit-a-bit (§7.2b). Ver [runbook §8](runbooks/stage1-vm-boot.md).
|
||||
|
||||
## 8. Hecho cuando
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
# GNU make 4.4.1 — primera pieza del toolchain hammer-from-source (SDD 11 §7.2b).
|
||||
#
|
||||
# Arranca el reemplazo, una a una, de las herramientas que hoy el builder toma de Alpine
|
||||
# (`/toolchain`) por recetas hammer construidas desde fuente. `make` es la pieza base: todas las
|
||||
# demás recetas autotools (musl, busybox, el propio grep) la invocan en su fase de compile/install.
|
||||
#
|
||||
# Build estático con `zig cc` cross al target, mismo camino ya probado con `grep` 3.12: el tarball
|
||||
# release trae `configure` generado (AutoconfReady → ./configure && make && make install), así que no
|
||||
# hay `./bootstrap` ni gnulib por red. `--disable-nls` evita gettext; sin guile (opcional, ausente).
|
||||
# El sha256 del tarball es identificador inmutable, pinned igual de fuerte que un commit (ADR 0006).
|
||||
|
||||
name = "make"
|
||||
version = "4.4.1"
|
||||
|
||||
[source]
|
||||
tarball = "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz"
|
||||
sha256 = "dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3"
|
||||
|
||||
[build]
|
||||
compiler = "zig-cc"
|
||||
target = "x86_64-linux-musl"
|
||||
link = "static"
|
||||
flags = ["--disable-nls"]
|
||||
Reference in New Issue
Block a user