diff --git a/recipes/findutils-workspace.patch b/recipes/findutils-workspace.patch new file mode 100644 index 00000000..a9ec1ff4 --- /dev/null +++ b/recipes/findutils-workspace.patch @@ -0,0 +1,16 @@ +Añade una tabla [workspace] vacía al Cargo.toml de findutils. + +findutils 0.9.1 es un paquete Cargo suelto (sin [workspace] propio). hammer copia la fuente a +work/sources/ DENTRO del repo hammer, cuyo /Cargo.toml SÍ es un workspace ⇒ cargo cree que findutils +es miembro de ese workspace y `cargo vendor` aborta ("current package believes it's in a workspace +when it's not"). La tabla [workspace] vacía corta la búsqueda hacia arriba (fix sugerido por el propio +cargo). coreutils no lo necesita porque su manifiesto ya es raíz de workspace. + +--- a/Cargo.toml ++++ b/Cargo.toml +@@ -121,3 +121,5 @@ from_iter_instead_of_collect = "allow" + large_types_passed_by_value = "allow" + # Disable for now, we have a few occurrences + # panic = "warn" ++ ++[workspace] diff --git a/recipes/findutils.toml b/recipes/findutils.toml new file mode 100644 index 00000000..5578917a --- /dev/null +++ b/recipes/findutils.toml @@ -0,0 +1,37 @@ +# uutils/findutils 0.9.1 — find en Rust (reemplazo Rust-nativo del find de busybox/GNU findutils). +# +# Segunda pieza de la Etapa C (userland Rust-nativo): misma estrategia que recipes/uutils.toml — +# adoptar una reimplementación MADURA (MIT) como receta Cargo, no escribir de cero. Esquiva el bug +# de zig por construcción (codegen rustc/LLVM; `zig cc` sólo como linker). +# +# A diferencia de coreutils (multicall: un binario `coreutils` + symlinks), uutils/findutils compila +# binarios SEPARADOS: find/xargs/locate/updatedb (`[[bin]]` por herramienta, sobre una `[lib]` común). +# `cargo rustc -- ` exige UN solo target (sólo a la crate top, no a los proc-macros), +# así que esta receta construye el FLAGSHIP `find`. xargs es una receta hermana trivial (mismo patrón, +# `--bin xargs`) — pieza 2b cuando se necesite; locate/updatedb requieren una DB y quedan fuera del +# reemplazo mínimo de busybox. +# +# Fuente git pinned al tag 0.9.1 (ADR 0006); findutils commitea su Cargo.lock ⇒ vendor + `--locked` +# bit-reproducible. Estático musl con zig cc (sin loader del host), igual que uutils. + +name = "findutils" +version = "0.9.1" + +[source] +repo = "https://github.com/uutils/findutils" +commit = "17d852c428414c1c2e5eb4b1024eaa3484d69a45" +# findutils es un paquete suelto (sin [workspace] propio); como hammer copia la fuente DENTRO del repo +# hammer (que sí es un workspace), cargo vendor lo absorbe y aborta. El patch añade un [workspace] vacío. +patches = ["findutils-workspace.patch"] + +[build] +compiler = "zig-cc" +target = "x86_64-linux-musl" +link = "static" +# `--bin find`: el paquete findutils tiene lib + 4 bins; `cargo rustc -- ` exige un único +# target. Seleccionamos el binario `find` (el reemplazo de busybox que importa para la Etapa C). +flags = ["--bin", "find"] + +# Install custom (sólo esta fase; configure/compile siguen auto-Cargo): el static musl en /usr/bin/find. +[build.phases] +install = "mkdir -p /out/usr/bin && cp target/release/find /out/usr/bin/find"