diff options
Diffstat (limited to 'main/ncurses')
-rw-r--r-- | main/ncurses/APKBUILD | 196 | ||||
-rw-r--r-- | main/ncurses/cleanup-pkgconfig-ldflags.patch | 26 |
2 files changed, 177 insertions, 45 deletions
diff --git a/main/ncurses/APKBUILD b/main/ncurses/APKBUILD index a4874b79197..9b7f82a85ba 100644 --- a/main/ncurses/APKBUILD +++ b/main/ncurses/APKBUILD @@ -1,20 +1,39 @@ # Maintainer: Natanael Copa <ncopa@alpinelinux.org> pkgname=ncurses -pkgver=6.1_p20200111 -_ver=${pkgver/_p/-} +pkgver=6.4_p20240330 +_pkgver=${pkgver/_p/-} pkgrel=0 pkgdesc="Console display library" url="https://invisible-island.net/ncurses/" arch="all" options="!check" # "tests" are actual demo programs, not a test suite. -license="MIT" +license="X11" makedepends_build="ncurses" -subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs - $pkgname-terminfo-base:base:noarch $pkgname-terminfo:terminfo:noarch" -source="https://invisible-mirror.net/archives/ncurses/current/ncurses-$_ver.tgz" -builddir="$srcdir"/ncurses-$_ver +subpackages=" + $pkgname-static + $pkgname-dev + $pkgname-doc + $pkgname-terminfo-base:base:noarch + $pkgname-terminfo:terminfo:noarch + $pkgname-libs:compat:noarch + libformw + libmenuw + libncurses++:pp + libncursesw + libpanelw + " +source="https://invisible-mirror.net/archives/ncurses/current/ncurses-$_pkgver.tgz + cleanup-pkgconfig-ldflags.patch + " +builddir="$srcdir/$pkgname-$_pkgver" # secfixes: +# 6.4_p20230424-r0: +# - CVE-2023-29491 +# 6.3_p20220416-r0: +# - CVE-2022-29458 +# 6.2_p20200530-r0: +# - CVE-2021-39537 # 6.1_p20180414-r0: # - CVE-2018-10754 # 6.0_p20171125-r0: @@ -22,9 +41,45 @@ builddir="$srcdir"/ncurses-$_ver # 6.0_p20170701-r0: # - CVE-2017-10684 -build() { - cd "$builddir" +# Terminfo definitions to be included in ncurses-terminfo-base. +_basic_terms=" + alacritty + ansi + console + dumb + gnome + gnome-256color + konsole + konsole-256color + konsole-linux + linux + putty + putty-256color + rxvt + rxvt-256color + screen + screen-256color + st-* + sun + terminator + terminology* + tmux + tmux-256color + vt100 + vt102 + vt200 + vt220 + vt52 + vte + vte-256color + xterm + xterm-256color + xterm-color + xterm-xfree86 + " +build() { + export CFLAGS="$CFLAGS -D_GNU_SOURCE" ./configure \ --build=$CBUILD \ --host=$CHOST \ @@ -32,10 +87,13 @@ build() { --without-ada \ --without-tests \ --disable-termcap \ + --disable-root-access \ --disable-rpath-hack \ + --disable-setuid-environ \ --disable-stripping \ --with-pkg-config-libdir=/usr/lib/pkgconfig \ - --without-cxx-binding \ + --with-cxx-binding \ + --with-cxx-shared \ --with-terminfo-dirs="/etc/terminfo:/usr/share/terminfo:/lib/terminfo:/usr/lib/terminfo" \ --enable-pc-files \ --with-shared \ @@ -44,63 +102,111 @@ build() { } package() { - cd "$builddir" make -j1 DESTDIR="$pkgdir" install + cd "$pkgdir" + + # force link against *w.so + local lib; for lib in ncurses ncurses++ form panel menu; do + ln -s ${lib}w.pc usr/lib/pkgconfig/$lib.pc + ln -s lib${lib}w.a usr/lib/lib$lib.a + echo "INPUT(-l${lib}w)" > usr/lib/lib$lib.so + done + + # link curses -> ncurses + ln -s libncurses.a usr/lib/libcurses.a + ln -s libncurses.so usr/lib/libcurses.so + echo 'INPUT(-lncursesw)' > usr/lib/libcursesw.so + # Install basic terms in /etc/terminfo - for i in ansi console dumb linux rxvt screen sun vt52 vt100 vt102 \ - vt200 vt220 xterm xterm-color xterm-xfree86; do - local termfile=$(find "$pkgdir"/usr/share/terminfo/ -name "$i" 2>/dev/null) || true - local basedir=$(basename "$(dirname "$termfile")") + local i; for i in $_basic_terms; do + local termfiles=$(find usr/share/terminfo/ -name "$i" 2>/dev/null) || true - [ -z "$termfile" ] && continue + [ -z "$termfiles" ] && continue - install -d "$pkgdir"/etc/terminfo/$basedir - mv ${termfile} "$pkgdir"/etc/terminfo/$basedir/ - ln -s ../../../../etc/terminfo/$basedir/$i \ - "$pkgdir"/usr/share/terminfo/$basedir/$i + for termfile in $termfiles; do + local basedir=$(basename "$(dirname "$termfile")") + install -d etc/terminfo/$basedir + mv "$termfile" etc/terminfo/$basedir/ + ln -s "../../../../etc/terminfo/$basedir/${termfile##*/}" \ + "usr/share/terminfo/$basedir/${termfile##*/}" + done done } dev() { default_dev - # force link against *w.so - for lib in ncurses ncurses++ form panel menu; do - echo "INPUT(-l${lib}w)" > "$subpkgdir"/usr/lib/lib$lib.so - ln -s ${lib}w.pc "$subpkgdir"/usr/lib/pkgconfig/$lib.pc - done - # link curses -> ncurses - echo "INPUT(-lncursesw)" > "$subpkgdir"/usr/lib/libcursesw.so - ln -s libncurses.so "$subpkgdir"/usr/lib/libcurses.so + + # also move symlinks + amove usr/lib/*.so } terminfo() { pkgdesc="$pkgdesc (other terminfo files)" - depends="$pkgname-terminfo-base" - rm -rf $subpkgdir - mkdir -p $subpkgdir/usr/share - mv $pkgdir/usr/share/terminfo $subpkgdir/usr/share + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + replaces="kitty<0.25.2-r1" # /usr/share/terminfo/x/xterm-kitty (Alpine <3.17) + + amove usr/share/terminfo + # also move symlink + amove usr/lib/terminfo } -libs() { - pkgdesc="Ncurses libraries" - depends="$pkgname-terminfo-base" +compat() { + pkgdesc="Ncurses libraries (old compat to pull sublibs)" provides="ncurses-widec-libs=$pkgver-r$pkgrel" + depends=" + libformw=$pkgver-r$pkgrel + libmenuw=$pkgver-r$pkgrel + libncursesw=$pkgver-r$pkgrel + libpanelw=$pkgver-r$pkgrel + " - mkdir -p "$subpkgdir"/usr/ - mv "$pkgdir"/usr/lib "$subpkgdir"/usr/ + mkdir -p "$subpkgdir" +} + +libmenuw() { + pkgdesc="$pkgdesc ($subpkgname)" + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + + amove usr/lib/libmenuw.so.* +} + +libformw() { + pkgdesc="$pkgdesc ($subpkgname)" + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + + amove usr/lib/libformw.so.* +} + +pp() { + pkgdesc="$pkgdesc ($subpkgname)" + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + + amove usr/lib/libncurses++w.so.* +} + +libncursesw() { + pkgdesc="$pkgdesc ($subpkgname)" + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + + amove usr/lib/libncursesw.so.* +} + +libpanelw() { + pkgdesc="$pkgdesc ($subpkgname)" + depends="$pkgname-terminfo-base=$pkgver-r$pkgrel" + + amove usr/lib/libpanelw.so.* } base() { pkgdesc="Descriptions of common terminals" - mkdir -p "$subpkgdir"/etc - mv "$pkgdir"/etc/terminfo "$subpkgdir"/etc/ -} + depends="" -static() { - pkgdesc="Static libraries for the ncurses library" - mkdir -p "$subpkgdir"/usr/lib - mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/ + amove etc/terminfo } -sha512sums="6dffeda6339fd36f3a913f5edd72aa191e54322a975ffdb21122be4c0ec2a74dce139e285a108167ce35794d664ebd19394dcc756aa272ac28f832e9fdbf0bdc ncurses-6.1-20200111.tgz" +sha512sums=" +d2f293d8a65a9b21db8d5b3a68eb5acbedf485239f02bdd29d20aa3fd2bee0f1e2c1181168a7e79425a007816b7ebac78ad6a62f5bef278a30aacca8f59e4cca ncurses-6.4-20240330.tgz +201ef1876655101cedabc83a0ce46f75079b08f565ca8de4cf96fd69e41332a2d0597b77fe360dc58b10772586fa39bd52ac9ee670a912fef84840278356065a cleanup-pkgconfig-ldflags.patch +" diff --git a/main/ncurses/cleanup-pkgconfig-ldflags.patch b/main/ncurses/cleanup-pkgconfig-ldflags.patch new file mode 100644 index 00000000000..64f4ccfaa75 --- /dev/null +++ b/main/ncurses/cleanup-pkgconfig-ldflags.patch @@ -0,0 +1,26 @@ +Patch-Source: https://github.com/archlinux/svntogit-packages/blob/e458113bf9b1fce36b099cc49bc080d0ba6fc024/trunk/ncurses-6.3-pkgconfig.patch +-- +diff -ruN a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in +--- a/misc/gen-pkgconfig.in 2021-08-07 23:36:33.000000000 +0200 ++++ b/misc/gen-pkgconfig.in 2021-11-03 11:12:51.127160950 +0100 +@@ -83,7 +83,7 @@ + fi + + lib_flags= +-for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@ ++for opt in -L$libdir @LIBS@ + do + case $opt in + -l*) # LIBS is handled specially below +diff -ruN a/misc/ncurses-config.in b/misc/ncurses-config.in +--- a/misc/ncurses-config.in 2021-08-07 23:36:14.000000000 +0200 ++++ b/misc/ncurses-config.in 2021-11-03 11:26:12.393533954 +0100 +@@ -101,7 +101,7 @@ + # There is no portable way to find the list of standard library directories. + # Require a POSIX shell anyway, to keep this simple. + lib_flags= +-for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ $LIBS ++for opt in -L$libdir $LIBS + do + case $opt in + -specs*) # ignore linker specs-files which were used to build library |