# uutils/coreutils 0.9.0 — coreutils en Rust (reemplazo Rust-nativo de busybox/GNU coreutils). # # Primera pieza de la Etapa C (userland Rust-nativo): adopta una reimplementación MADURA (MIT) como # receta Cargo, el mismo patrón que hammerd/arje-zero — no se escribe de cero. Multicall: un binario # `coreutils` + un symlink por applet (ls/cp/mkdir/…). Esquiva el bug de zig por construcción: el # codegen lo hace rustc/LLVM, no el path C de zig (sólo se usa `zig cc` como linker). # # Fuente git pinned al tag 0.9.0 (ADR 0006); uutils commitea su Cargo.lock ⇒ vendor + `--locked` # bit-reproducible. Estático musl con zig cc (sin loader del host). name = "uutils" version = "0.9.0" license = "MIT" [source] repo = "https://github.com/uutils/coreutils" commit = "9eefc3705093910ad8e8bbcf7e5f84a49720340f" [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" # `--bin coreutils`: el paquete coreutils tiene lib + bin; `cargo rustc -- ` exige UN solo # target (a diferencia de arje-zero, que tiene un único bin y bastaba `-p`). Seleccionamos el binario # multicall. Default features ⇒ el set estándar de applets embebido. flags = ["--bin", "coreutils"] # Install custom (sólo esta fase; configure/compile siguen auto-Cargo): instala el multicall en # /usr/bin/coreutils y crea un symlink RELATIVO por applet (ls→coreutils, cp→coreutils, …), igual # layout que busybox/GNU-coreutils multicall ⇒ drop-in. `--list` lo da el propio binario (static # musl, corre en el sandbox). El loop cubre los 79 applets embebidos por las default features. [build.phases] install = "mkdir -p /out/usr/bin && cp target/release/coreutils /out/usr/bin/coreutils && for u in $(/out/usr/bin/coreutils --list); do ln -sf coreutils /out/usr/bin/\"$u\"; done"