Sale `rust-toolchain-bin` —799 M de bytes AJENOS sellados tal cual (`foreign`)—, que era el escalón 1 del SDD 31 y cumplió su función: con él se construyó el escalón 2, y el escalón 2 ya compila, enlaza y corre. Entran TRES, que son el mismo hecho («esta caja compila Rust») partido en piezas: · `rust` (353 M) — el compilador y cargo, de la granja, desde fuente. · `lld21` — el enlazador. NO es opcional: una caja takana no tiene `cc`, y sin enlazador `rustc` compila objetos y no produce un ejecutable. · `cargo-config` — receta nueva que publica `/etc/cargo/config.toml` con las tres flags que unen a los dos. Sin ellas `cargo build` muere con «linker `cc` not found»: el toolchain estaría completo y MUDO, que es [[subcomando-sin-driver]] otra vez. Es config de SISTEMA y no de usuario a propósito — un `~/.cargo/config.toml` funcionaría para quien lo escribió y no para el siguiente. ⚠ Y `rust` se re-hashea otra vez (702094a8 → fe277b32) por una línea que descubrió el control de PATH: **x.py instala en `/usr/local` por defecto, y el PATH de una caja takana es `/bin:/usr/bin:/sbin:/usr/sbin`** — medido en la caja. O sea que el perfil habría proyectado un `rustc` perfecto que nadie puede invocar: «existe ≠ se encuentra». Ahora `[install] prefix = "/usr"`, como el resto del corpus. Control previo que sí pasó: `rustc` y `cargo` corren SIN `LD_LIBRARY_PATH` — su `RUNPATH` es `$ORIGIN/../lib`, así que la proyección del artefacto basta. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
33 lines
1.4 KiB
TOML
33 lines
1.4 KiB
TOML
# cargo-config — la config que hace que `cargo build` FUNCIONE en una caja takana.
|
|
#
|
|
# ── POR QUÉ ES UNA RECETA Y NO UN FICHERO SUELTO (SDD 31) ───────────────────────────────────────
|
|
# Una distro sin compilador de C puede compilar Rust —está probado— pero **no de fábrica**: sin esta
|
|
# config, `cargo build` muere con `linker \`cc\` not found`. Un toolchain que sella, se instala y no
|
|
# enlaza es [[subcomando-sin-driver]] otra vez, y la pieza que falta son tres flags.
|
|
#
|
|
# Va junto a `rust` y `lld21` en el perfil: los tres son el mismo hecho —«esta caja compila Rust»—
|
|
# partido en un compilador, un enlazador y la línea que los une.
|
|
#
|
|
# ⚠ Es config de SISTEMA, no de usuario: `/etc/cargo/config.toml` lo lee cualquier `cargo` de
|
|
# cualquier cuenta. Un `~/.cargo/config.toml` haría que el toolchain funcione para quien lo escribió
|
|
# y no para el siguiente.
|
|
name = "cargo-config"
|
|
version = "1"
|
|
license = "MIT"
|
|
|
|
[source]
|
|
dir = "cargo-config/tree"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
flags = []
|
|
|
|
[build.phases]
|
|
configure = "true"
|
|
compile = "true"
|
|
# `cp -r` y no `cp -a`: en el sandbox no hay privilegio para preservar el propietario (la lección de
|
|
# `os-release`). El dueño real lo pone la proyección del artefacto.
|
|
install = "mkdir -p /out/etc && cp -r /src/etc/. /out/etc/"
|