diff --git a/recipes/incoming-go/feroxbuster.toml b/recipes/feroxbuster.toml similarity index 50% rename from recipes/incoming-go/feroxbuster.toml rename to recipes/feroxbuster.toml index 690e644b..aa701b9b 100644 --- a/recipes/incoming-go/feroxbuster.toml +++ b/recipes/feroxbuster.toml @@ -16,6 +16,17 @@ link = "static" flags = ["--bin", "feroxbuster"] [build.phases] +# El default de zig-cc exporta AR="zig ar" (con espacio): OK para Makefiles pero el crate `cc` +# de Rust ejecuta $AR como binario ÚNICO ⇒ busca "zig ar" y falla. Wrapper `.hammer-zig-ar`. +compile = ''' +printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" +chmod +x "$PWD/.hammer-zig-cc" +printf '%s\n' '#!/bin/sh' 'exec zig ar "$@"' > "$PWD/.hammer-zig-ar" +chmod +x "$PWD/.hammer-zig-ar" +RF="-C linker=$PWD/.hammer-zig-cc" +rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" +CC="$PWD/.hammer-zig-cc" AR="$PWD/.hammer-zig-ar" RUSTFLAGS="$RF" cargo rustc --release --locked --offline --bin feroxbuster -- -C target-feature=+crt-static -C relocation-model=static +''' install = "mkdir -p /out/usr/bin && cp target/release/feroxbuster /out/usr/bin/feroxbuster" # buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por diff --git a/recipes/incoming-go/jless.toml b/recipes/incoming-go/jless.toml deleted file mode 100644 index 728e33d5..00000000 --- a/recipes/incoming-go/jless.toml +++ /dev/null @@ -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 = "jless" -version = "0.9.0" - -[source] -repo = "https://github.com/PaulJuliusMartinez/jless" -commit = "21dd6100edb47145bb9570931bec29697bcd0d9b" - -[build] -compiler = "zig-cc" -target = "x86_64-linux-musl" -link = "static" -flags = ["--bin", "jless"] - -[build.phases] -install = "mkdir -p /out/usr/bin && cp target/release/jless /out/usr/bin/jless" - -# 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): python3, libxcb diff --git a/recipes/incoming-go/mise.toml b/recipes/incoming-go/mise.toml deleted file mode 100644 index f257fc28..00000000 --- a/recipes/incoming-go/mise.toml +++ /dev/null @@ -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 = "mise" -version = "2026.7.0" - -[source] -repo = "https://github.com/jdx/mise" -commit = "857b73f6a6b39a3bc90c44119a1e86ee11bd7273" - -[build] -compiler = "zig-cc" -target = "x86_64-linux-musl" -link = "static" -flags = ["--bin", "mise"] - -[build.phases] -install = "mkdir -p /out/usr/bin && cp target/release/mise /out/usr/bin/mise" - -# 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): nss-cacert, cmake, git, openssl diff --git a/tandas/deferred-openssl-xcb/README.md b/tandas/deferred-openssl-xcb/README.md new file mode 100644 index 00000000..c47bb876 --- /dev/null +++ b/tandas/deferred-openssl-xcb/README.md @@ -0,0 +1,8 @@ +# Diferidos (2026-07-09) — frontera sys-crate C + +- **mdcat**: openssl-sys TRANSITIVO (por reqwest, sin feature toggle propio en su Cargo.toml). + Fix futuro = parchear su Cargo.toml a `reqwest { default-features=false, features=["rustls-tls"] }`. +- **jless**: `clipboard = "0.5"` sin feature ⇒ linkea libxcb-*.a (X11) ausentes en el rootfs musl. + Fix futuro = parche que saque el clipboard, o proveer xcb estático. + +Ambos tienen ya el wrapper AR aplicado (ese muro está resuelto). Ver [[cargo-recipe-ar-wrapper]]. diff --git a/tandas/deferred-openssl-xcb/jless.toml b/tandas/deferred-openssl-xcb/jless.toml new file mode 100644 index 00000000..2ff50912 --- /dev/null +++ b/tandas/deferred-openssl-xcb/jless.toml @@ -0,0 +1,34 @@ +# 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 = "jless" +version = "0.9.0" + +[source] +repo = "https://github.com/PaulJuliusMartinez/jless" +commit = "21dd6100edb47145bb9570931bec29697bcd0d9b" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = ["--bin", "jless"] + +[build.phases] +# El default de zig-cc exporta AR="zig ar" (con espacio): OK para Makefiles (el shell lo +# splitea) pero el crate `cc` de Rust ejecuta $AR como binario ÚNICO ⇒ busca "zig ar" y falla. +# Wrapper `.hammer-zig-ar` (igual que `.hammer-zig-cc`) para el sys-crate C (libc-stdhandle). +compile = ''' +printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" +chmod +x "$PWD/.hammer-zig-cc" +printf '%s\n' '#!/bin/sh' 'exec zig ar "$@"' > "$PWD/.hammer-zig-ar" +chmod +x "$PWD/.hammer-zig-ar" +RF="-C linker=$PWD/.hammer-zig-cc" +rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" +CC="$PWD/.hammer-zig-cc" AR="$PWD/.hammer-zig-ar" RUSTFLAGS="$RF" cargo rustc --release --locked --offline --bin jless -- -C target-feature=+crt-static -C relocation-model=static +''' +install = "mkdir -p /out/usr/bin && cp target/release/jless /out/usr/bin/jless" + +# 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): python3, libxcb diff --git a/recipes/incoming-go/mdcat.toml b/tandas/deferred-openssl-xcb/mdcat.toml similarity index 51% rename from recipes/incoming-go/mdcat.toml rename to tandas/deferred-openssl-xcb/mdcat.toml index af530b07..c3d09332 100644 --- a/recipes/incoming-go/mdcat.toml +++ b/tandas/deferred-openssl-xcb/mdcat.toml @@ -16,6 +16,17 @@ link = "static" flags = ["--bin", "mdcat"] [build.phases] +# El default de zig-cc exporta AR="zig ar" (con espacio): OK para Makefiles pero el crate `cc` +# de Rust ejecuta $AR como binario ÚNICO ⇒ busca "zig ar" y falla. Wrapper `.hammer-zig-ar`. +compile = ''' +printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" +chmod +x "$PWD/.hammer-zig-cc" +printf '%s\n' '#!/bin/sh' 'exec zig ar "$@"' > "$PWD/.hammer-zig-ar" +chmod +x "$PWD/.hammer-zig-ar" +RF="-C linker=$PWD/.hammer-zig-cc" +rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" +CC="$PWD/.hammer-zig-cc" AR="$PWD/.hammer-zig-ar" RUSTFLAGS="$RF" cargo rustc --release --locked --offline --bin mdcat -- -C target-feature=+crt-static -C relocation-model=static +''' install = "mkdir -p /out/usr/bin && cp target/release/mdcat /out/usr/bin/mdcat" # buildInputs de nix (NO deps de hammer — cargo vendorea; backend Rust por diff --git a/tandas/deferred-openssl-xcb/mise.toml b/tandas/deferred-openssl-xcb/mise.toml new file mode 100644 index 00000000..ec4cbc10 --- /dev/null +++ b/tandas/deferred-openssl-xcb/mise.toml @@ -0,0 +1,35 @@ +# 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 = "mise" +version = "2026.7.0" + +[source] +repo = "https://github.com/jdx/mise" +commit = "857b73f6a6b39a3bc90c44119a1e86ee11bd7273" + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +flags = ["--bin", "mise"] + +[build.phases] +# El default de zig-cc exporta AR="zig ar" (con espacio): OK para Makefiles pero el crate `cc` +# de Rust ejecuta $AR como binario ÚNICO ⇒ busca "zig ar" y falla. Wrapper `.hammer-zig-ar`. +compile = ''' +printf '%s\n' '#!/bin/sh' 'for a do' 'case "$a" in --target=*) a=--target=x86_64-linux-musl ;; esac' 'set -- "$@" "$a"' 'shift' 'done' 'exec zig cc -mcpu=baseline "$@"' > "$PWD/.hammer-zig-cc" +chmod +x "$PWD/.hammer-zig-cc" +printf '%s\n' '#!/bin/sh' 'exec zig ar "$@"' > "$PWD/.hammer-zig-ar" +chmod +x "$PWD/.hammer-zig-ar" +RF="-C linker=$PWD/.hammer-zig-cc" +rustc -vV | grep -q 'host: .*-alpine-' || RF="$RF -C link-self-contained=no" +# default = ["native-tls", ...] arrastra openssl-sys (no hay OpenSSL en el rootfs musl). +# El feature `rustls` rutea reqwest/rattler/sigstore/ubi/vfox a rustls puro → sin openssl. +CC="$PWD/.hammer-zig-cc" AR="$PWD/.hammer-zig-ar" RUSTFLAGS="$RF" cargo rustc --release --locked --offline --no-default-features --features "rustls,vfox/vendored-lua,self_update" --bin mise -- -C target-feature=+crt-static -C relocation-model=static +''' +install = "mkdir -p /out/usr/bin && cp target/release/mise /out/usr/bin/mise" + +# 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): nss-cacert, cmake, git, openssl