diff --git a/recipes/less.toml b/recipes/less.toml new file mode 100644 index 00000000..aedbc6d7 --- /dev/null +++ b/recipes/less.toml @@ -0,0 +1,30 @@ +# less 704 — paginador. Etapa G, tier-2 C. Primer CONSUMIDOR de ncurses (valida la lib): enlaza +# -ltinfo de ncurses para la base de datos terminfo (control de terminal/scroll). +# +# Importada de Alpine aports; ajustes: URL fija (`less-704.tar.gz`; el import dejó la substitución +# bash `${pkgver/_beta/-beta}` sin expandir) + sha256 oficial. El tarball trae `configure`. +# +# deps.build = ["ncurses"]: el lab apila el árbol de ncurses (libtinfo.a→libncursesw.a + term.h + +# tinfo.pc + terminfo) en /usr y el configure de less lo halla por pkgconf. link=static ⇒ less ELF +# estático musl. compiler=gcc (gueto): zig-cc miscompila estos C clásicos (segfault, ver file/jq). +# $CBUILD/$CHOST los da el lab (build==host ⇒ nativo). + +name = "less" +version = "704" + +[source] +tarball = "https://www.greenwoodsoftware.com/less/less-704.tar.gz" +sha256 = "20a0b0a2bb2525fa53c7eee9beb854b4c9cf172eabb209af7020743547bfe9fb" + +[build] +compiler = "gcc" +target = "x86_64-linux-musl" +link = "static" + +[build.phases] +configure = "./configure --build=$CBUILD --host=$CHOST --prefix=/usr --sysconfdir=/etc --mandir=/usr/share/man" +compile = "make -j\"$(nproc)\"" +install = "make DESTDIR=/out install" + +[deps] +build = ["ncurses"] diff --git a/recipes/ncurses.toml b/recipes/ncurses.toml new file mode 100644 index 00000000..01a13cd3 --- /dev/null +++ b/recipes/ncurses.toml @@ -0,0 +1,53 @@ +# 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 +'''