From 524086e3eb8a7640ebda8bf4bc4285b994b59a91 Mon Sep 17 00:00:00 2001 From: David Runge Date: Wed, 3 Nov 2021 20:59:16 +0000 Subject: [PATCH] Upgrade to 6.3. Switch to correct upstream website. Change to upstream provided mirror for relases. Switch to new valid PGP key 19882D92DDA4C400C22C0D56CC2AF4472167BE03 for which upstream provided signatures on their website https://invisible-island.net/public/public.html Add patch to prevent linking against test libraries. Add patch to fix leaking of flags into pkgconfig files: https://bugs.archlinux.org/task/68523 Compile with flag for versioned symbols: https://bugs.archlinux.org/task/72278 Enable the installation of pkgconfig files. Enable the build and installation of C++ lib. Disable the installation of files that conflict with ncurses anyhow. Sort configure flags mainly alphabetically. Replace the use of echo with printf and sort fixes in package() by topic. Model all fixes in package() after those done in ncurses. Update maintainer info. --- PKGBUILD | 100 ++++++++++++++++++++++++------------ ncurses-6.3-libs.patch | 58 +++++++++++++++++++++ ncurses-6.3-pkgconfig.patch | 24 +++++++++ 3 files changed, 150 insertions(+), 32 deletions(-) create mode 100644 ncurses-6.3-libs.patch create mode 100644 ncurses-6.3-pkgconfig.patch diff --git a/PKGBUILD b/PKGBUILD index 2ab31be..42098f0 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -1,59 +1,95 @@ -# Maintainer: Allan McRae +# Maintainer: David Runge +# Contributor: Allan McRae # Contributor: judd -_pkgbasename=ncurses -pkgname=lib32-${_pkgbasename} -pkgver=6.2 +_name=ncurses +pkgname=lib32-${_name} +pkgver=6.3 pkgrel=1 pkgdesc="System V Release 4.0 curses emulation library (32-bit)" arch=('x86_64') -url="https://www.gnu.org/software/ncurses/" +url='https://invisible-island.net/ncurses/ncurses.html' license=('MIT') -depends=('lib32-glibc' ${_pkgbasename}) -source=(https://ftp.gnu.org/pub/gnu/ncurses/ncurses-${pkgver}.tar.gz{,.sig}) -sha512sums=('4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d' - 'SKIP') -validpgpkeys=('C52048C0C0748FEE227D47A2702353E0F7E48EDB') # Thomas Dickey +depends=('lib32-gcc-libs' 'lib32-glibc' "${_name}=${pkgver}") +provides=(libncurses++w.so libformw.so libmenuw.so libpanelw.so libncursesw.so) +source=( + "https://invisible-mirror.net/archives/${_name}/${_name}-${pkgver}.tar.gz"{,.asc} + "${_name}-6.3-libs.patch" + "${_name}-6.3-pkgconfig.patch" +) +sha512sums=('5373f228cba6b7869210384a607a2d7faecfcbfef6dbfcd7c513f4e84fbd8bcad53ac7db2e7e84b95582248c1039dcfc7c4db205a618f7da22a166db482f0105' + 'SKIP' + 'adb02b838c40f1e58a1b31c26d5cd0f2a1c43f3b6d68e839981764c0f6c905a9eb51dd36ff018628fdeb20747cc7467727d57135408ab4848259384077a52b28' + '2d2c0ec3c880e638ab4aa3dbff5e28e4cd233153e24816bd87e077f848aa3edd5114cd0f2a7f6e8869dd1861a2746e512886c18264ff1676927dcc320c5ef958') +b2sums=('b2c174ac48d587b4d3aa054f04e4ec8bffd8a657a4aff5f090104965c741901e600712c8f8e5e98f3b8a26bc558996a1e14a746f113854832853b855e9d406c3' + 'SKIP' + '31bb10e82dd018a75e57252052650d9f0f5eb5e7e887118c2ea40032b11f59ec6aa4d9bae804c615cbecdf3382f3434e0c9e9e8440fdefe66a507be020b8965c' + 'fb6cf606cf3db7f6b306272696a63bce83d52cfa91e850f9a7bdb9d3d8455a26943529a9cf79731dddc7f763c27211a9afab9c4c31dbb6d12fd720eb390eb0a3') +validpgpkeys=('19882D92DDA4C400C22C0D56CC2AF4472167BE03') # Thomas Dickey + +prepare() { + cd ${_name}-${pkgver} + # do not link against test libraries + patch -Np1 -i ../"${_name}-6.3-libs.patch" + # do not leak build-time LDFLAGS into the pkgconfig files: + # https://bugs.archlinux.org/task/68523 + patch -Np1 -i ../"${_name}-6.3-pkgconfig.patch" + # NOTE: can't run autoreconf because the autotools setup is custom and ancient +} build() { - cd ${_pkgbasename}-${pkgver} + cd ${_name}-${pkgver} export CC="gcc -m32" export CXX="g++ -m32" + export PKG_CONFIG_LIBDIR='/usr/lib32/pkgconfig' - ./configure --prefix=/usr --mandir=/usr/share/man \ - --with-pkg-config-libdir=/usr/lib32/pkgconfig \ - --with-shared --with-normal --without-debug --without-ada \ - --enable-widec --libdir=/usr/lib32 --with-manpage-format=normal + ./configure --prefix=/usr \ + --disable-db-install \ + --enable-widec \ + --enable-pc-files \ + --libdir=/usr/lib32 \ + --mandir=/usr/share/man \ + --with-cxx-binding \ + --with-cxx-shared \ + --with-pkg-config-libdir=/usr/lib32/pkgconfig \ + --with-shared \ + --with-versioned-syms \ + --without-ada \ + --without-debug \ + --without-manpages \ + --without-progs \ + --without-tack \ + --without-tests make } package() { - cd ${_pkgbasename}-${pkgver} + cd ${_name}-${pkgver} make DESTDIR="${pkgdir}" install + install -vDm 644 COPYING -t "$pkgdir/usr/share/licenses/$pkgname/" + # fool packages looking to link to non-wide-character ncurses libraries - for lib in curses ncurses form panel menu; do - echo "INPUT(-l${lib}w)" >"${pkgdir}"/usr/lib32/lib${lib}.so - ln -sf lib${lib}w.a "${pkgdir}"/usr/lib32/lib${lib}.a + for lib in ncurses ncurses++ form panel menu; do + printf "INPUT(-l%sw)\n" "${lib}" > "${pkgdir}/usr/lib32/lib${lib}.so" + ln -sv ${lib}w.pc "${pkgdir}/usr/lib32/pkgconfig/${lib}.pc" done - ln -sf libncurses++w.a "${pkgdir}"/usr/lib32/libncurses++.a + # some packages look for -lcurses during build + printf 'INPUT(-lncursesw)\n' > "$pkgdir/usr/lib32/libcursesw.so" + ln -sv libncurses.so "$pkgdir/usr/lib32/libcurses.so" + + # tic and ticinfo functionality is built in by default + # make sure that anything linking against it links against libncursesw.so instead for lib in tic tinfo; do - echo "INPUT(libncursesw.so.${pkgver:0:1})" > "${pkgdir}/usr/lib32/lib${lib}.so" - ln -s libncursesw.so.${pkgver:0:1} "${pkgdir}/usr/lib32/lib${lib}.so.${pkgver:0:1}" + printf "INPUT(libncursesw.so.%s)\n" "${pkgver:0:1}" > "${pkgdir}/usr/lib32/lib${lib}.so" + ln -sv libncursesw.so.${pkgver:0:1} "${pkgdir}/usr/lib32/lib${lib}.so.${pkgver:0:1}" + ln -fsv ncursesw.pc "$pkgdir/usr/lib32/pkgconfig/${lib}.pc" done - # some packages look for -lcurses during build - rm -f "${pkgdir}"/usr/lib32/libcursesw.so - echo "INPUT(-lncursesw)" >"${pkgdir}"/usr/lib32/libcursesw.so - ln -sf libncurses.so "${pkgdir}"/usr/lib32/libcurses.so - ln -sf libncursesw.a "${pkgdir}"/usr/lib32/libcursesw.a - ln -sf libncurses.a "${pkgdir}"/usr/lib32/libcurses.a - - rm -rf "${pkgdir}"/usr/{include,share,bin} - mkdir -p "${pkgdir}/usr/share/licenses" - ln -s ${_pkgbasename} "${pkgdir}/usr/share/licenses/${pkgname}" + # remove all files conflicting with ncurses + rm -frv "${pkgdir}/usr/"{bin,include} } # vim: set et ts=2 sw=2: diff --git a/ncurses-6.3-libs.patch b/ncurses-6.3-libs.patch new file mode 100644 index 0000000..1933a54 --- /dev/null +++ b/ncurses-6.3-libs.patch @@ -0,0 +1,58 @@ +diff -ruN a/c++/Makefile.in b/c++/Makefile.in +--- a/c++/Makefile.in 2021-07-03 20:53:57.000000000 +0200 ++++ b/c++/Makefile.in 2021-11-03 10:58:04.147647447 +0100 +@@ -118,7 +118,7 @@ + -l@FORM_NAME@@USE_LIB_SUFFIX@ \ + -l@MENU_NAME@@USE_LIB_SUFFIX@ \ + -l@PANEL_NAME@@USE_LIB_SUFFIX@ \ +- -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ ++ -lncurses@USE_LIB_SUFFIX@ + + LIBROOT = ncurses++ + +@@ -157,8 +157,7 @@ + LDFLAGS_DEFAULT = $(LINK_@DFT_UPR_MODEL@) $(LDFLAGS_@DFT_UPR_MODEL@) + + # flags for library built by this makefile +-LDFLAGS = $(TEST_ARGS) @LDFLAGS@ \ +- @LD_MODEL@ $(TEST_LIBS) @LIBS@ $(CXXLIBS) ++LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ $(CXXLIBS) + + AUTO_SRC = \ + etip.h +diff -ruN a/form/Makefile.in b/form/Makefile.in +--- a/form/Makefile.in 2021-07-03 17:45:33.000000000 +0200 ++++ b/form/Makefile.in 2021-11-03 10:58:45.301114373 +0100 +@@ -110,7 +110,7 @@ + LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + + SHLIB_DIRS = -L../lib +-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ ++SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ + + RPATH_LIST = @RPATH_LIST@ + RESULTING_SYMS = @RESULTING_SYMS@ +diff -ruN a/menu/Makefile.in b/menu/Makefile.in +--- a/menu/Makefile.in 2021-07-03 17:45:33.000000000 +0200 ++++ b/menu/Makefile.in 2021-11-03 10:58:59.461160284 +0100 +@@ -110,7 +110,7 @@ + LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + + SHLIB_DIRS = -L../lib +-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ ++SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ + + RPATH_LIST = @RPATH_LIST@ + RESULTING_SYMS = @RESULTING_SYMS@ +diff -ruN a/panel/Makefile.in b/panel/Makefile.in +--- a/panel/Makefile.in 2021-07-03 17:45:33.000000000 +0200 ++++ b/panel/Makefile.in 2021-11-03 10:59:33.957938691 +0100 +@@ -112,7 +112,7 @@ + LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + + SHLIB_DIRS = -L../lib +-SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ ++SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ + + RPATH_LIST = @RPATH_LIST@ + RESULTING_SYMS = @RESULTING_SYMS@ diff --git a/ncurses-6.3-pkgconfig.patch b/ncurses-6.3-pkgconfig.patch new file mode 100644 index 0000000..e3b5d46 --- /dev/null +++ b/ncurses-6.3-pkgconfig.patch @@ -0,0 +1,24 @@ +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