# Importada de Alpine aports por `takana 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 = "iputils" version = "20250605" license = "BSD-3-Clause AND GPL-2.0-or-later" [source] tarball = "https://github.com/iputils/iputils/releases/download/20250605/iputils-20250605.tar.xz" # FIXME sha256: el wrapper lo calcula (Alpine publica sha512). sha512 de Alpine: # sha512 = "1f3df2a4ea0a3f95bb9657d9ee36ed929fa841c9442dfd04e5d7f55ef533b0cac3182c2172b627c7ad7f366afdc1d232f2618d701bd1c601feadbfc754059cae" sha256 = "6f213700dbf96b5cc4499ca70cb15ecd69c09f405b06785bb4a1a10b572b6276" patches = ["0001-Use-getopt_long-for-opt-parsing-in-ping.patch"] [build] compiler = "zig-cc" target = "x86_64-linux-musl" link = "static" # Split de la info de depuración (SDD 23 etapa 4, tanda de HOJAS). Entra en `hash_inputs`. strip_debug = true flags = [] [build.phases] # Proyecto meson (patrón pixman/libdrm). Docs DESACTIVADAS (BUILD_MANS/BUILD_HTML_MANS=false) # para no arrastrar docbook-xsl/libxslt (fuera del catálogo). LTO quitado. IDN/gettext off # (deps externas fuera de catálogo); libcap sí está en el catálogo (USE_CAP por defecto). configure = "meson setup output --prefix=/usr --buildtype=release -DBUILD_MANS=false -DBUILD_HTML_MANS=false -DNO_SETCAP_OR_SUID=true -DUSE_IDN=false -DUSE_GETTEXT=false -DSKIP_TESTS=true" compile = "ninja -C output" install = "DESTDIR=/out ninja -C output install" [deps] build = ["binutils", "libcap", "linux-headers", "meson", "samurai", "python3", "pkgconf"] # ── EL BIT DE PRIVILEGIO (SDD 28 §5.11, `[[setuid]]`) ───────────────────────────────────────────── # Declarado el 2026-10-15, al medir los artefactos del store: los binarios de abajo salen todos # `-rwxr-xr-x` y en cualquier otra distro son setuid. El hueco estaba ANOTADO —el encabezado de # `crates/takana-core/src/setuid.rs` los lista uno por uno— y era LATENTE mientras el instalador # solo pusiera contrasena de root. Desde que `lib/cuenta.sh` crea una cuenta de persona, dejo de # ser latente: hay un humano no-root que los choca a todos. # # Es metadato (fuera de `hash_inputs`), asi que entra en una receta YA SELLADA sin mover un solo # `ArtifactHash` — comprobado con `takana hash --check` antes y despues. [[setuid]] path = "usr/bin/ping" mode = "4755" why = "abrir el socket ICMP. Sin el bit sale 1 al instante y el mensaje se lee como «no hay red»: el operador probo `ping 8.8.8.8` el 2026-10-14 y concluyo que la maquina estaba sin red cuando el problema era el permiso. ⚠ La alternativa moderna es el sysctl `net.ipv4.ping_group_range`, que no necesita setuid y seria mejor; mientras nadie lo ponga en el arranque, el bit es lo que hace que ping diga la verdad."