gioser

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

⎇ 4148ba4e02310090bb3c844c5942fe7e0251f106 recipes/takana.toml TOML · 54 líneas · 2.9 KB Historia crudo

el logo OFICIAL de takana, extraído del PNG — y rustc entra al corpus como `foreign` cd78bb98c · Sergio ·

1# takana — EL BINARIO DEL PROYECTO, empaquetado como una receta más del corpus.
2#
3# POR QUÉ EXISTE (SDD 28 §3.4). El corpus construía 869 recetas y no la suya: `takana` sólo existía
4# como `cargo build --release` sobre un clon del repo. Eso bloqueaba lo de arriba de todo — que un
5# servidor takana **se sirva sus propios paquetes a su propio host**: el host necesita `takana`
6# instalado para consumir el repo, y no podía instalarlo DESDE el repo porque no estaba en el repo.
7#
8# Receta Cargo, mismo patrón que `hammerd`/`netup`/`arje-zero`: crate del workspace takana a un
9# commit fijado (ADR 0006), deps vendoreadas en el fetch para un build hermético `--offline`, enlace
10# estático con `zig cc`. Sin dependencias C: el CLI es Rust puro (clap/serde/toml/nix/tracing).
11#
12# ⚠ EL ALIAS DEL ADR 0016 VOLVÍA AL CRATE INEMPAQUETABLE, y se descubrió acá porque takana nunca se
13# había empaquetado. `takana-cli` declara DOS `[[bin]]` sobre el mismo `main.rs` (`takana` y `hammer`,
14# la compatibilidad de la etapa 2). El camino Cargo del corpus invoca `cargo rustc … -- -C
15# target-feature=+crt-static`, y **`cargo rustc` con argumentos extra sólo admite UN target**:
16#
17#     error: extra arguments to `rustc` can only be passed to one target, consider filtering
18#            the package by passing, e.g., `--lib` or `--bin NAME` to specify a single target
19#
20# Por eso `--bin takana` en los flags. Y `hammer` se repone en la fase de instalación como ENLACE, no
21# como segundo binario: en el ÁRBOL DE BUILD un symlink no sobrevive (`cargo clean` lo borra y la
22# siembra de la granja excluye `/target` — por eso el ADR eligió dos `[[bin]]`), pero en el ARTEFACTO
23# sellado es permanente y no duplica los megas.
24#
25# Que `hammer` esté en el artefacto TAPA además un agujero real: `arje-zero` todavía invoca el binario
26# por el nombre viejo — en el primer arranque de la caja de producción se leyó `hammer no corre, sin
27# menú de arranque` — y viene pineado desde tawasuyu, así que no se arregla desde este repo. Cuando la
28# etapa 6 retire el alias, hay que subir arje-zero ANTES.
29
30name    = "takana"
31version = "0.0.1"
32license = "MIT"
33
34[source]
35# El repo del propio takana: el `commit` es el identificador inmutable; la URL es sólo locator y no
36# entra en `hash_inputs` (ADR 0013 §1). Subirlo cuando el CLI avance.
37repo   = "https://git.gioser.net/sergio/takana.git"
38commit = "0d0ab79092b282f45bfb1158694f4eaf5df58af5"
39
40[build]
41compiler = "zig-cc"
42target   = "x86_64-linux-musl"
43link     = "static"
44
45# Split de la info de depuración (SDD 23 etapa 4). Entra en `hash_inputs`.
46strip_debug = true
47flags    = ["-p", "takana-cli", "--bin", "takana"]
48
49[build.phases]
50# Sobrescribe el `find target/release …` por defecto: hay que reponer el alias `hammer` (ver arriba).
51install = "mkdir -p /out/usr/bin && cp target/release/takana /out/usr/bin/takana && ln -s takana /out/usr/bin/hammer"
52
53[deps]
54build = ["binutils"]