Investigué la hipótesis del "deadlock de link de zig-cc" en binarios Rust grandes (broot/pueue/starship). RESULTADO: NO HAY DEADLOCK. La evidencia: - pueue construye+corre con zig-cc PURO (sin gcc): selló dc735889, pueue 4.0.4. En la granja lo había matado a los 192s creyéndolo colgado — era rustc al 99% en codegen del crate final (cargo no imprime durante el codegen de una sola crate grande), + contención de 4 workers en 8 cores. Con paciencia y sin contención, completa. - broot construye+corre (broot 1.57.0, static). Necesita compiler=gcc SÓLO por su libgit2-sys (cc-rs compila C que zig rechaza — el gueto gcc ya commiteado); el LINKER zig anda bien, sólo es lento por el codegen del binario grande. Probé además linker=gcc (la hipótesis) y SÍ funcionaba, pero lo REVERTÍ: (1) estaba basado en un diagnóstico equivocado (no hay deadlock); (2) era DAÑINO para la reproducibilidad — delta/gitui se publicaron con linker=zig, y el linker NO entra al artifact_hash (es código del lab, no de la receta) => un binario distinto bajo el mismo hash => cache-hit que enmascara la divergencia. Borré el broot construido con gcc-linker del store y lo reconstruí con el código commiteado (linker=zig) => el broot publicado (257415a8) ahora ES reproducible con el lab tal como está en git. recetas: broot (compiler=gcc+zlib por libgit2-sys, linker zig) y pueue (zig puro) promovidas incoming/->recipes/. Publicadas al repo firmado (87). El lab queda INTACTO. LECCIÓN para la granja: subir el timeout/no matar builds de binarios Rust grandes (>192s de codegen es NORMAL, no deadlock); distinguir colgado de lento por CPU del rustc (0% = problema, 99% = trabajando), no por silencio del log de cargo.
20 lines
666 B
TOML
20 lines
666 B
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 = "pueue"
|
|
version = "4.0.4"
|
|
|
|
[source]
|
|
repo = "https://github.com/Nukesor/pueue"
|
|
commit = "0d10739a6431bd853195dc7730056fce79faeee1"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
flags = ["--bin", "pueue"]
|
|
|
|
[build.phases]
|
|
install = "mkdir -p /out/usr/bin && cp target/release/pueue /out/usr/bin/pueue"
|