Files
hammer/recipes/grep.toml
T
SergioandClaude Opus 4.7 1fc8c97617 Fase 0+1 cerradas: GNU grep 3.12 real construido e hidratado
Cierra el primer entregable del roadmap. Cambios:

- `Source`: ahora admite dos modos mutuamente excluyentes — `git` (repo+commit) o
  `tarball` (url+sha256). El hash de entrada del artefacto usa el commit en modo
  git y el sha256 en modo tarball; ambos son identificadores inmutables del
  contenido fuente. Validación en `Source::kind()` con error claro.
- `fetch`: dispatch por modo. Tarball cacheado en `work/tarballs/<sha>.tar`,
  descarga vía `curl -fL`, verificación sha256 con `sha2`, extracción con
  `--strip-components` (default 1, GNU-style).
- `recipes/grep.toml`: GNU grep 3.12 desde el tarball release de gnu.org
  (sha256 fijado, sin patches, `--disable-perl-regexp --disable-nls`).
- Bootstrap: añade `binutils` al rootfs Alpine — configure de autotools mira
  ld/ar/ranlib incluso cuando el compilador real es zig cc.
- `.gitignore`: `/work/` (artefactos transitorios del build).
- `docs/10-roadmap.md`: Fase 0 y Fase 1 marcadas ; entregable cerrado.

Nota sobre v3.11 vs v3.12: probé primero v3.11 y el binario producido daba
"memory exhausted" en cualquier regex (bug conocido de grep+musl static al
inicializar DFA). v3.12 corrige y funciona limpio dentro del rootfs Alpine.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-09 14:11:46 +00:00

24 lines
949 B
TOML

# GNU grep — primer paquete real construido por el lab.
#
# Usamos el tarball release (no el árbol git) porque:
# - Trae `configure` ya generado: no necesitamos correr `./bootstrap` ni traer gnulib
# como submódulo en el fetch (que pediría red dentro del proceso de bootstrap).
# - Es como Alpine, Debian, etc. consumen grep en su pipeline de empaque.
# - El sha256 del tarball es identificador inmutable; pinned igual de fuerte que un
# commit git para reproducibilidad.
name = "grep"
version = "3.12"
[source]
tarball = "https://ftp.gnu.org/gnu/grep/grep-3.12.tar.gz"
sha256 = "badda546dfc4b9d97e992e2c35f3b5c7f20522ffcbe2f01ba1e9cdcbe7644cdc"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
# Sin PCRE para el primer build — la receta de pcre2 vive en su propia .toml y se
# añadirá como dep cuando empezemos a construir el grafo.
flags = ["--disable-perl-regexp", "--disable-nls"]