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:
2026-06-12 14:55:30 -04:00
co-authored by Claude Opus 4.8
parent 44e04ca4a0
commit 749ea9e797
3 changed files with 38 additions and 5 deletions
+8 -4
View File
@@ -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.
+7 -1
View File
@@ -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
+23
View File
@@ -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"]