Desbloquea integrar el workspace tawasuyu (y cualquier crate Rust) en el lab: - detección por Cargo.toml (gana sobre Makefile huérfano, cede ante CMake de un políglota C+Rust). - traducción de triple zig→rustc (x86_64-linux-musl → x86_64-unknown-linux-musl). - compile: cargo build --release --locked --offline --target <triple>; link por wrapper zig cc (CARGO_TARGET_<T>_LINKER) que provee el libgcc_s que el link dinámico musl exige (cierra el 'cannot find -lgcc_s' que destapó M2). link=dynamic añade -C target-feature=-crt-static para dlopen (apps gráficas: Vulkan/Wayland). - install: copia los ejecutables de target/<triple>/release a /out/usr/bin (busybox-safe). - doc 02-build-lab §Cargo (vendoreo de deps para build offline) + receta de ejemplo recipes/llimphi-counter.toml (caso gráfico dinámico). - 5 tests nuevos (34/34 verdes en hammer-build). Coordina con tawasuyu/03_ukupacha/arje/PLAN-ATESTACION-Y-HAMMER §C (milestone: falta BuildSys::Cargo en el lab).
30 lines
1.5 KiB
TOML
30 lines
1.5 KiB
TOML
# Ejemplo de receta Rust (BuildSys::Cargo) — un front-door de tawasuyu.
|
|
#
|
|
# Muestra el caso GRÁFICO (el más exigente): wgpu+winit+vello cargan Vulkan/Wayland por
|
|
# `dlopen` en runtime, así que el binario va `link = "dynamic"` (no estático) y el link lo
|
|
# cierra el `zig cc` del lab (provee `libgcc_s`). Un crate NO gráfico (CLI, daemon) usa
|
|
# `link = "static"` y sale como binario monolítico hidratable por hardlink.
|
|
#
|
|
# DOS requisitos para que el build hermético funcione (el sandbox no tiene red):
|
|
# 1. commit FIJADO del repo público (reproducibilidad, ADR 0006).
|
|
# 2. deps VENDOREADAS en la fuente: `cargo vendor` + `.cargo/config.toml`, o el repo ya las
|
|
# trae. `cargo build --offline --locked` falla si falta cualquiera.
|
|
|
|
name = "llimphi-counter"
|
|
version = "0.1.0"
|
|
|
|
[source]
|
|
repo = "https://git.tawasuyu.net/tawasuyu/llimphi.git"
|
|
commit = "0000000000000000000000000000000000000000" # ← fijar al commit real con deps vendoreadas
|
|
|
|
[build]
|
|
compiler = "zig-cc" # linker del binario (wrapper zig cc, cierra -lgcc_s)
|
|
target = "x86_64-linux-musl" # se traduce a x86_64-unknown-linux-musl para rustc
|
|
link = "dynamic" # gráfico: necesita dlopen de Vulkan/Wayland en runtime
|
|
# Selección del binario a construir dentro del workspace/crate:
|
|
flags = ["-p", "llimphi-ui", "--example", "counter"]
|
|
|
|
# runtime: en un userland musl coherente (Alpine) el binario dlopea mesa/vulkan/wayland
|
|
# musl-built sin fricción; mezclar con gráficos glibc es lo que rompe (ver M2 del plan
|
|
# arje↔hammer en tawasuyu).
|