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 1488Shell 182Rust 107Markdown 963619 Definitions

⎇ fa027e246e93b8f6b42f49fe85690071dad08f6a recipes/make.toml TOML · 39 lines · 2.4 KB History raw

takana etapa 5a: los comentarios de las 741 recetas e852f4849 · Sergio ·

1# GNU make 4.4.1 — primera pieza del toolchain takana-from-source (SDD 11 §7.2b).
2#
3# Arranca el reemplazo, una a una, de las herramientas que hoy el builder toma de Alpine
4# (`/toolchain`) por recetas takana construidas desde fuente. `make` es la pieza base: todas las
5# demás recetas autotools (musl, busybox, el propio grep) la invocan en su fase de compile/install.
6#
7# Build estático con `zig cc` cross al target, mismo camino ya probado con `grep` 3.12: el tarball
8# release trae `configure` generado (AutoconfReady → ./configure && make && make install), así que no
9# hay `./bootstrap` ni gnulib por red. `--disable-nls` evita gettext; sin guile (opcional, ausente).
10# El sha256 del tarball es identificador inmutable, pinned igual de fuerte que un commit (ADR 0006).
11
12name    = "make"
13version = "4.4.1"
14license = "GPL-3.0-or-later"
15
16[source]
17tarball = "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz"
18sha256  = "dd16fb1d67bfab79a72f5e8390735c49e3e8e70b4945a15ab1f81ddb78658fb3"
19
20[build]
21compiler = "zig-cc"
22target   = "x86_64-linux-musl"
23link     = "static"
24# `--disable-load` NO es cosmético: sin él este binario sale DINÁMICO Y ROTO, y se lleva por delante
25# medio corpus (2026-08-10). GNU make soporta cargar objetos en runtime (la directiva `load`), así
26# que su configure añade `-Wl,--export-dynamic` al link. El wrapper `takana-zig-cc` tiene la regla
27# —correcta— de que `-static` CEDE ante cualquier link que exija dinámico, y `--export-dynamic` es
28# uno de esos marcadores ⇒ le quitaba el `-static` y sellaba un `make` dinámico que segfaultea en
29# `ld-musl` (exit 139). Como TODA receta autotools invoca make, el fallo se propagaba a todo.
30#
31# El arreglo va acá y no en el wrapper: el conflicto es de origen —pedimos un binario estático de un
32# proyecto que pide symtab dinámica para una función que no usamos—. Enseñarle al wrapper a ignorar
33# `--export-dynamic` lo rompería para gobject-introspection, que sí lo necesita de verdad.
34#
35# POR QUÉ NO SE VIO ANTES: el artefacto viejo de `make` era estático y estaba congelado por
36# cache-hit, quizá desde antes de que existiera esa regla del wrapper. Nadie lo reconstruyó hasta
37# que el corpus se re-hasheó entero. Un cambio que "no re-hashea nada" igual cambia lo que producen
38# los builds FUTUROS, y eso no se nota hasta que algo fuerza la reconstrucción.
39flags    = ["--disable-nls", "--disable-load"]