La granja revelo una clase entera de fallos Rust: crates con dep-C cuyo build-script (cc-rs) compila C con zig-cc, que lo RECHAZA/miscompila (delta=libgit2-sys, gitui=openssl-sys, jless=libc-stdhandle). Mismo frente que file/jq en C puro -> misma solucion: el GUETO gcc. FIX (hammer-build/lib.rs, camino Cargo nativo): cuando la receta declara compiler="gcc", cc-rs usa CC=gcc (el Alpine musl gcc del sandbox, probado en C) para compilar el C de las deps; el LINKER sigue siendo el wrapper zig-cc. Los .o/.a de gcc-musl y el Rust zig-musl son ABI-compatibles (ambos musl, mismo ELF x86-64). ADITIVO: una receta Rust sin compiler= queda en ZigCc -> baseline (ripgrep/fd/...) intacto. 2 tests nuevos. PROBADO END-TO-END: delta 0.19.2 construye+corre ELF estatico (libgit2-sys vendorea y compila libgit2 desde decenas de .c con gcc; + dep zlib para -lz que libgit2/libz-sys enlazan). Publicado al repo firmado (83 paquetes). Corpus 82->83. LEVERAGE: libgit2-sys/openssl-sys/onig_sys/libc-stdhandle aparecen en CIENTOS de crates -> el gueto gcc (+ resolver libs externas via deps.build) destraba esa clase entera, no solo delta. jless queda staged (su feature de clipboard pide libxcb/X11, fuera de alcance, NO toolchain). gitui (openssl-src vendoreado) deberia construir con el mismo patron (compiler=gcc), pendiente de correr.
25 lines
1.0 KiB
TOML
25 lines
1.0 KiB
TOML
# Importada de nixpkgs por `hammer import-nix` (Etapa G). PUNTO DE PARTIDA, no final:
|
|
# - el build usa el lab de hammer (zig-cc / musl estático), NO el stdenv de nix ⇒ revisá
|
|
# compiler/link/phases y adaptá hasta que compile.
|
|
# - las deps van con su nombre NIX; remapealas a las recetas del corpus si difieren.
|
|
name = "gitui"
|
|
version = "0.28.1"
|
|
|
|
[source]
|
|
repo = "https://github.com/gitui-org/gitui"
|
|
commit = "e24fb45df1584ee8d8ebdc4258531b4a91ca975d"
|
|
|
|
# GUETO gcc para build-scripts: gitui trae openssl-src (vendorea+compila openssl 3.4 desde C) +
|
|
# libgit2-sys; zig-cc los rechaza. compiler="gcc" -> cc-rs usa el Alpine musl gcc; linker zig-cc.
|
|
[build]
|
|
compiler = "gcc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
flags = ["--bin", "gitui"]
|
|
|
|
[build.phases]
|
|
install = "mkdir -p /out/usr/bin && cp target/release/gitui /out/usr/bin/gitui"
|
|
|
|
# buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por
|
|
# defecto). Si algún sys-crate C falla, adaptá per-paquete (patch/feature): cmake, openssl, xclip
|