tawasuyu

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1572Shell 203Rust 109Markdown 993728 Definiciones

⎇ 9baa3fb85ccf5a7498069b42c829438486e7960d recipes/ncurses.toml TOML · 53 líneas · 2.5 KB Historia crudo

Etapa G: ncurses + less — lib TUI/terminfo al corpus (53→55) cbca6143f · sergio ·

1# ncurses 6.5 — librería de terminal/TUI (terminfo + curses). Etapa G, lib build-dep (tier-2 C).
2# Destraba el userland TUI: less, htop, top, nano, ncdu, etc.
3#
4# Importada de Alpine aports, pero RE-ANCLADA y SIMPLIFICADA:
5#   1. FUENTE = el release ESTABLE 6.5 de GNU (pineable, sha256 fijo). El import traía el snapshot
6#      semanal de invisible-mirror (`ncurses-${pkgver/_p/-}.tgz`, con substitución bash sin expandir
7#      y un "current/" que rota — no reproducible). El stable trae `configure` pregenerado.
8#   2. ESTÁTICO widec (el lab enlaza estático): `--without-shared --enable-widec`. La config de Alpine
9#      pedía `--with-shared` (distro dinámico); acá sólo queremos los .a. Las libs widec llevan sufijo
10#      `w` (libncursesw.a) ⇒ el install crea los symlinks libncurses.a→libncursesw.a (+ tinfo/curses)
11#      para que un consumidor que enlaza `-lncurses`/`-ltinfo` los halle. (Sin la maraña .so del import.)
12#   3. terminfo queda en /usr/share/terminfo (sin la reubicación a /etc del APKBUILD: complejidad que
13#      no aporta en el lab; el `--with-terminfo-dirs` cubre las rutas de runtime).
14#
15# GUETO gcc: el build CORRE `tic` (recién compilado) para generar la BD de terminfo; con zig-cc el
16# tic miscompilado segfaultearía (mismo patrón que file/jq). $CBUILD/$CHOST los da el lab (build==host
17# ⇒ nativo, tic corre de verdad).
18
19name    = "ncurses"
20version = "6.5"
21
22[source]
23tarball = "https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz"
24sha256  = "136d91bc269a9a5785e5f9e980bc76ab57428f604ce3e5a5a90cebc767971cc6"
25
26[build]
27compiler = "gcc"
28target   = "x86_64-linux-musl"
29link     = "static"
30
31[build.phases]
32configure = '''
33./configure --build=$CBUILD --host=$CHOST --prefix=/usr \
34  --without-shared --without-debug --without-ada --without-tests \
35  --without-cxx --without-cxx-binding \
36  --enable-widec --enable-pc-files --with-pkg-config-libdir=/usr/lib/pkgconfig \
37  --disable-stripping --disable-rpath-hack \
38  --with-terminfo-dirs="/etc/terminfo:/usr/share/terminfo"
39'''
40compile = "make -j\"$(nproc)\""
41install = '''
42make DESTDIR=/out install
43# widec ⇒ las libs/pc llevan sufijo `w`; symlinks para que `-lncurses`/`-ltinfo`/`-lcurses` resuelvan.
44cd /out/usr/lib
45for lib in ncurses form panel menu; do
46  [ -e lib${lib}w.a ] && ln -sf lib${lib}w.a lib${lib}.a
47  [ -e pkgconfig/${lib}w.pc ] && ln -sf ${lib}w.pc pkgconfig/${lib}.pc
48done
49for lib in curses tic tinfo; do
50  ln -sf libncursesw.a lib${lib}.a
51  [ -e pkgconfig/ncursesw.pc ] && ln -sf ncursesw.pc pkgconfig/${lib}.pc
52done
53'''