psmisc 23.7 (killall pstree fuser prtstat pslog) y gavinhoward/bc 7.0.3 (bc Y dc del mismo árbol). Ninguna estaba en el corpus, y lo de psmisc es lo que el plan daba por cubierto sin estarlo: procps-ng NO trae killall ni pstree ni fuser — procps-ng es ps/top/free/kill/pgrep/pkill/pidof/uptime/vmstat/w/watch. bc es el de gavinhoward y no el de GNU por la cadena: C99 sin dependencias, bc y dc en un árbol, y es el bc de sistema de Alpine y FreeBSD. El de GNU arrastra ed y flex, y su dc va en otro paquete. ⚠ killall5 NO lo trae psmisc: es de sysvinit. Acá lo cubre arje-zero por FUNCIÓN (es PID 1 y apaga él) ⇒ se retira con los indultos, no se reemplaza. Son 3 de los 4 que la tabla prometía, dicho así para que no vuelva a prometer lo que no hay. Dos pisones de psmisc, los dos escritos en la receta para no repetirlos: 1. `-lncurses` no existe acá (la nuestra es widec ⇒ libncursesw.a). No sirve LIBS=-lncursesw —el AC_CHECK_LIB compila un programa de prueba CON -lncurses, no pregunta si el símbolo resuelve— ni la variable de caché con `make TERMCAP_LIB=…`, porque src_pstree_LDADD = @TERMCAP_LIB@ se sustituye en tiempo de configure y el Makefile queda con -lncurses LITERAL. Lo que funciona es un enlace libncurses.a → libncursesw.a en el scratch y un -L. 2. Y ese -L se comió el -static. El harness inyecta LDFLAGS=-static para las recetas link="static" (takana-build/src/lib.rs:285); reemplazar LDFLAGS lo pierde. Los seis binarios sellaron DINÁMICOS sin que nada fallara: killall respondía bien y sólo pstree moría en ejecución con `Error relocating /lib/libncursesw.so.6`, tomando la librería del anfitrión. Un `file` lo dice en un segundo; ninguna prueba del build lo iba a decir. Los dos van a `base` en targets.toml, y el censo baja de 69 a 64. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
40 lines
2.1 KiB
TOML
40 lines
2.1 KiB
TOML
# bc 7.0.3 (gavinhoward/bc) — la calculadora POSIX: `bc` Y `dc` en un solo árbol, sin dependencias.
|
|
#
|
|
# ── POR QUÉ ESTA IMPLEMENTACIÓN Y NO LA DE GNU ──────────────────────────────────────────────────
|
|
# El corpus no tenía ninguna: `bc` y `dc` eran dos de los applets que en toda la imagen sólo proveía
|
|
# busybox (medido con `scripts/busybox-censo-proveedores.py`, ver `docs/plan-botar-busybox.md`).
|
|
# Upstream hay dos candidatos reales:
|
|
# · GNU bc — arrastra `ed` y `flex` como build-deps, y `dc` es OTRO paquete (dc de GNU va aparte).
|
|
# · gavinhoward/bc — C99 puro, CERO dependencias, `bc` + `dc` del mismo árbol, y es el que usan
|
|
# Alpine y FreeBSD como su bc de sistema. Implementa POSIX bc + las extensiones de GNU.
|
|
# Para una cadena musl donde cada dep nueva es trabajo, la segunda gana sin discusión.
|
|
#
|
|
# ── BUILD ───────────────────────────────────────────────────────────────────────────────────────
|
|
# No es autotools: `configure.sh` propio que escribe el Makefile. No acepta `--build`/`--host`, así
|
|
# que NO se le pasan (un `--host` a un configure que no lo entiende termina en la lista de
|
|
# argumentos ignorados o en un error, según el script). El cross a musl lo hace `zig cc` vía $CC.
|
|
|
|
name = "bc"
|
|
version = "7.0.3"
|
|
license = "BSD-2-Clause"
|
|
|
|
[source]
|
|
tarball = "https://github.com/gavinhoward/bc/releases/download/7.0.3/bc-7.0.3.tar.xz"
|
|
sha256 = "91eb74caed0ee6655b669711a4f350c25579778694df248e28363318e03c7fc4"
|
|
|
|
[build]
|
|
compiler = "zig-cc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
flags = []
|
|
|
|
[deps]
|
|
build = ["make"]
|
|
|
|
[build.phases]
|
|
# `-p bc -p dc` NO existe acá: el binario es multicall por enlaces, como busybox. `PREFIX` en vez de
|
|
# `--prefix` porque así lo quiere su configure.sh.
|
|
configure = './configure.sh --prefix=/usr --disable-nls'
|
|
compile = 'make'
|
|
install = 'make DESTDIR=/out install'
|