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