tawasuyu

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 1572Shell 203Rust 109Markdown 993728 Definiciones

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>

749ea9e7972faaf48337db8d3abc7806e719eac1 · por sergio · (hace 4 meses) · padre 44e04ca4a · ver el árbol en este commit

Delta semántico

Ninguna definición cambió: el cambio es de texto, documentación o datos.

3 archivos · +38 −5

diff --git a/docs/10-roadmap.md b/docs/10-roadmap.md
index b3ed5e00..5eff29a3 100644
--- a/docs/10-roadmap.md
+++ b/docs/10-roadmap.md
@@ -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.
diff --git a/docs/11-bootstrap.md b/docs/11-bootstrap.md
index 6917b688..9ee706e2 100644
--- a/docs/11-bootstrap.md
+++ b/docs/11-bootstrap.md
@@ -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
 
diff --git a/recipes/make.toml b/recipes/make.toml
new file mode 100644
index 00000000..91dfc891
--- /dev/null
+++ b/recipes/make.toml
@@ -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"]