Etapa G: cosecha de la cola tras el gueto gcc — xsv al corpus, triage final de los 8 staged

Opcion 1 (cosechar lo que el fix ya destraba). De los 9 staged:
- xsv  PROMOVIDO (85): receta Cargo limpia + el fix del importador Alpine (filtra
  el toolchain cargo/cargo-auditable de las deps). Construye+corre estatico.
- broot: el gueto gcc SI resolvio su dep-C (libgit2-sys compilo con gcc, paso las 133
  deps y llego al crate broot), PERO se cuelga en el LINK final (192s frozen, mismo
  patron que antes) -> bloqueo ortogonal = DEADLOCK DE LINK de zig-cc (frente opcion 3).
- zellij: reescrito limpio (gcc+zlib), openssl compilo, pero MSRV rustc 1.92 > 1.91.1.
- ouch (rustc 1.93), watchexec (feature nightly E0658): MSRV/nightly, bloqueo real.
- jless: libxcb/X11 (lib faltante, no toolchain).
- dog: import del paquete equivocado (un dog.c, no el cliente DNS Rust).
- pueue, starship: deadlock de link (como broot).

CONCLUSION del triage: el gueto gcc (commit previo) resolvio el frente crate+dep-C
por completo (delta/gitui , y broot/zellij pasan su C). Los 8 que quedan staged NO
son dep-C: son MSRV>1.91.1 (zellij/ouch/watchexec), DEADLOCK de link de zig-cc en
binarios grandes (broot/pueue/starship), lib faltante (jless=X11) o import roto (dog).
El proximo leverage real = atacar el deadlock de link (recuperaria broot/pueue/starship
+ vale para cualquier binario Rust grande).
This commit is contained in:
2026-06-21 16:03:02 -04:00
parent bd0b9db11f
commit 640198dab4
5 changed files with 19 additions and 126 deletions
+6 -1
View File
@@ -9,8 +9,9 @@ version = "1.57.0"
repo = "https://github.com/Canop/broot"
commit = "b798e9d082b4d575c613e23fb89271b08fb138c3"
# gueto gcc: broot trae libgit2-sys (compila libgit2 desde C); zig-cc lo rechaza. compiler="gcc".
[build]
compiler = "zig-cc"
compiler = "gcc"
target = "x86_64-linux-musl"
link = "static"
flags = ["--bin", "broot"]
@@ -20,3 +21,7 @@ install = "mkdir -p /out/usr/bin && cp target/release/broot /out/usr/bin/broot"
# 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): libgit2
# libgit2-sys enlaza -lz; el lab materializa zlib (libz.a) como overlay.
[deps]
build = ["zlib"]
-22
View File
@@ -1,22 +0,0 @@
# 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 = "delta"
version = "0.19.2"
[source]
repo = "https://github.com/dandavison/delta"
commit = "1502986e81c8e3fa27bfb5b84bac6b281a6b1edd"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
flags = ["--bin", "delta"]
[build.phases]
install = "mkdir -p /out/usr/bin && cp target/release/delta /out/usr/bin/delta"
# 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): git, oniguruma
-24
View File
@@ -1,24 +0,0 @@
# 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
-36
View File
@@ -1,36 +0,0 @@
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
name = "xsv"
version = "0.13.0"
[source]
tarball = "https://github.com/BurntSushi/xsv/archive/0.13.0/xsv-0.13.0.tar.gz"
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
# sha512 = "a0c9b914071514f6dd1fc19759ff88b7d457979385dd169350d27b0ee464fd21e7165bd81e769487d12ac63c46f78e1af684e690a7126ab9a2c336cee4aa6095"
sha256 = "2b75309b764c9f2f3fdc1dd31eeea5a74498f7da21ae757b3ffd6fd537ec5345"
[build]
compiler = "zig-cc"
target = "x86_64-linux-musl"
link = "static"
flags = []
[build.phases]
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
compile = '''
_abuild_phase() {
cargo auditable build --frozen --release
}
_abuild_phase
'''
# de package() de Alpine (traducido $pkgdir→/out):
install = '''
_abuild_phase() {
install -D -m755 target/release/xsv -t "/out"/usr/bin/
}
_abuild_phase
'''
[deps]
build = ["cargo", "cargo-auditable"]
+13 -43
View File
@@ -1,55 +1,25 @@
# Importada de Alpine aports por `hammer import-alpine` (Etapa G). PUNTO DE PARTIDA — pero
# YA trae los parches de musl de Alpine (lo que un import de nix pierde). Pendiente: el
# sha256 del tarball (el wrapper lo calcula), y adaptar build/install del shell de abuild.
# zellij 0.44.3 — multiplexor de terminal (workspaces). Etapa G, tier-1 Rust con dep-C.
#
# Reescrita como receta Cargo LIMPIA: el import de Alpine traía fases `cargo auditable build` +
# generación de manpage/completions (mandown) + `[deps] build=["cargo","cargo-auditable","mandown",
# "openssl-dev>3"]`. Sin fases ⇒ el lab autodetecta Cargo. Sólo conservo lo esencial:
# - compiler="gcc": zellij trae openssl-sys (build-script C); el gueto gcc compila ese C (cc-rs usa
# gcc), el linker sigue zig-cc. Mismo patrón que gitui/delta.
# - deps.build=["zlib"]: openssl-sys/libgit2 enlazan -lz; el lab materializa libz.a en /usr/lib.
# (Sin manpage/completions: requieren mandown/correr el binario en build; el paquete es el binario.)
name = "zellij"
version = "0.44.3"
[source]
tarball = "https://github.com/zellij-org/zellij/archive/v0.44.3/zellij-0.44.3.tar.gz"
# FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine:
# sha512 = "5b5f14f8ed6ae9aea962e163b05504b8f999f004ddbf61f7ed789670e234d829b86d000385aec052d73097cbe0dfb23cff6beb191c7291b525b6e9f52f908863"
sha256 = "33ae61fc802b59462fed49b424893596d3aa819646bdce53d5602f714c1264fe"
[build]
compiler = "zig-cc"
compiler = "gcc"
target = "x86_64-linux-musl"
link = "static"
flags = []
[build.phases]
# de build() de Alpine (traducido; el lab provee $CBUILD/$CHOST — Etapa G Fase 3; revisá --shared para estático):
compile = '''
_abuild_phase() {
cargo auditable build --frozen --release
mandown docs/MANPAGE.md > target/zellij.1
mkdir -p target/completions
for sh in bash fish zsh; do
target/release/zellij setup --generate-completion $sh \
> target/completions/zellij.$sh
done
}
_abuild_phase
'''
# de package() de Alpine (traducido $pkgdir→/out):
install = '''
_abuild_phase() {
install -D -m755 target/release/zellij -t "/out"/usr/bin/
install -D -m644 target/zellij.1 -t "/out"/usr/share/man/man1/
install -D -m644 target/completions/zellij.bash \
"/out"/usr/share/bash-completion/completions/zellij
install -D -m644 target/completions/zellij.fish \
"/out"/usr/share/fish/vendor_completions.d/zellij.fish
install -D -m644 target/completions/zellij.zsh \
"/out"/usr/share/zsh/site-functions/_zellij
}
_abuild_phase
'''
flags = ["--bin", "zellij"]
[deps]
build = ["cargo", "cargo-auditable", "mandown", "openssl-dev>3"]
build = ["zlib"]