ncurses es la lib fundacional del userland TUI (destraba less/htop/top/nano/ncdu). La importo de Alpine pero RE-ANCLADA al release ESTABLE 6.5 de GNU (pineable; el import traia el snapshot semanal de invisible-mirror, no reproducible) y SIMPLIFICADA a estatico widec (--without-shared --enable-widec), sin el binding C++ (rompe contra el libstdc++ del host) ni la maraña .so del APKBUILD. El install crea los symlinks libncurses/libtinfo/libcurses -> libncursesw para que un consumidor que enlaza -lncurses/-ltinfo resuelva. less 704 es el primer CONSUMIDOR que lo valida: deps.build=[ncurses], enlaza -ltinfo, sale static-pie y pagina. Confirma ncurses usable como lib del corpus. Notas: gcc del lab = Alpine musl gcc (x86_64-alpine-linux-musl, no glibc) -> mezcla limpia con objetos zig-cc/musl. gueto gcc en ambos (el build de ncurses corre tic para generar terminfo; zig-cc lo miscompila). Corpus 53->55.
54 lines
2.5 KiB
TOML
54 lines
2.5 KiB
TOML
# ncurses 6.5 — librería de terminal/TUI (terminfo + curses). Etapa G, lib build-dep (tier-2 C).
|
|
# Destraba el userland TUI: less, htop, top, nano, ncdu, etc.
|
|
#
|
|
# Importada de Alpine aports, pero RE-ANCLADA y SIMPLIFICADA:
|
|
# 1. FUENTE = el release ESTABLE 6.5 de GNU (pineable, sha256 fijo). El import traía el snapshot
|
|
# semanal de invisible-mirror (`ncurses-${pkgver/_p/-}.tgz`, con substitución bash sin expandir
|
|
# y un "current/" que rota — no reproducible). El stable trae `configure` pregenerado.
|
|
# 2. ESTÁTICO widec (el lab enlaza estático): `--without-shared --enable-widec`. La config de Alpine
|
|
# pedía `--with-shared` (distro dinámico); acá sólo queremos los .a. Las libs widec llevan sufijo
|
|
# `w` (libncursesw.a) ⇒ el install crea los symlinks libncurses.a→libncursesw.a (+ tinfo/curses)
|
|
# para que un consumidor que enlaza `-lncurses`/`-ltinfo` los halle. (Sin la maraña .so del import.)
|
|
# 3. terminfo queda en /usr/share/terminfo (sin la reubicación a /etc del APKBUILD: complejidad que
|
|
# no aporta en el lab; el `--with-terminfo-dirs` cubre las rutas de runtime).
|
|
#
|
|
# GUETO gcc: el build CORRE `tic` (recién compilado) para generar la BD de terminfo; con zig-cc el
|
|
# tic miscompilado segfaultearía (mismo patrón que file/jq). $CBUILD/$CHOST los da el lab (build==host
|
|
# ⇒ nativo, tic corre de verdad).
|
|
|
|
name = "ncurses"
|
|
version = "6.5"
|
|
|
|
[source]
|
|
tarball = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz"
|
|
sha256 = "136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6"
|
|
|
|
[build]
|
|
compiler = "gcc"
|
|
target = "x86_64-linux-musl"
|
|
link = "static"
|
|
|
|
[build.phases]
|
|
configure = '''
|
|
./configure --build=$CBUILD --host=$CHOST --prefix=/usr \
|
|
--without-shared --without-debug --without-ada --without-tests \
|
|
--without-cxx --without-cxx-binding \
|
|
--enable-widec --enable-pc-files --with-pkg-config-libdir=/usr/lib/pkgconfig \
|
|
--disable-stripping --disable-rpath-hack \
|
|
--with-terminfo-dirs="/etc/terminfo:/usr/share/terminfo"
|
|
'''
|
|
compile = "make -j\"$(nproc)\""
|
|
install = '''
|
|
make DESTDIR=/out install
|
|
# widec ⇒ las libs/pc llevan sufijo `w`; symlinks para que `-lncurses`/`-ltinfo`/`-lcurses` resuelvan.
|
|
cd /out/usr/lib
|
|
for lib in ncurses form panel menu; do
|
|
[ -e lib${lib}w.a ] && ln -sf lib${lib}w.a lib${lib}.a
|
|
[ -e pkgconfig/${lib}w.pc ] && ln -sf ${lib}w.pc pkgconfig/${lib}.pc
|
|
done
|
|
for lib in curses tic tinfo; do
|
|
ln -sf libncursesw.a lib${lib}.a
|
|
[ -e pkgconfig/ncursesw.pc ] && ln -sf ncursesw.pc pkgconfig/${lib}.pc
|
|
done
|
|
'''
|