aboutsummaryrefslogtreecommitdiffstats
path: root/main/ncurses
diff options
context:
space:
mode:
Diffstat (limited to 'main/ncurses')
-rw-r--r--main/ncurses/APKBUILD196
-rw-r--r--main/ncurses/cleanup-pkgconfig-ldflags.patch26
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