sys-libs/ncurses: add 6.5_p20250802

Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
Sam James
2025-08-06 04:59:28 +01:00
parent 79d28d214d
commit f2d14d3ee7
2 changed files with 515 additions and 0 deletions

View File

@@ -249,9 +249,26 @@ DIST ncurses-6.5-20250524.patch.gz 3599 BLAKE2B 5e1da13964f10d846afb26f8759590fd
DIST ncurses-6.5-20250524.patch.gz.asc 729 BLAKE2B ba0c26a977da6874fa9f005dd094527739357384626b86f40edb73f9e41b63f5f43953ef9ec67dcb0d82404f822f6599c38ef8b5d4bb0e3b20e6c8f04115cc27 SHA512 6fafad6288c3fd87efded4faed2f2a4de705bf207cdecb5759f13be9bc6e2f866a1eb7d47719388f974954e78ab8c70e9be8b558e8f2662a2c042d16662ea281
DIST ncurses-6.5-20250531.patch.gz 3172 BLAKE2B 225875dcf8adaf785efc0137ee0cdd7affb378ad266aab0ec2dffd4197cd74daafcda5638f0e3c09720a41ba9506ce46ff7bbdfd51d13cda4096d6b7be1fadb5 SHA512 763a3ce3e26445f4b978a7305b135e2cf94f7973db22b7228ff1fe9eee93ffe82ed32aa0012c9b2916599ab3980e455140f5150af420d85b75f33a426542acf8
DIST ncurses-6.5-20250531.patch.gz.asc 729 BLAKE2B 94e72ea10c99afecc97c39854522dab0e95d970e77c36b558003717cf4f8a9f32783a994c88f6e5f657310929c518a7b80e46fbaeaf51f48811b7980458b6621 SHA512 5b7e4b98e2127e914aa997b63b59b4e3e5281f7a453d456ea4a29e5ec84da8ab4c8c74a3723e61613e04e85a412f37488a5cd6f4ff5536a05e3d91033035ecc4
DIST ncurses-6.5-20250614.patch.gz 43730 BLAKE2B e8f42867dcb03a70024dedd0a635c96b0c913f390cce719c6c0e0adab2c05c24c9aeddfafa5bc7c5b752c45a814ae216d89555485f2e3d9bd49353c4faaf4f8e SHA512 96e91602881c041ecd1d71728114d74066569c9b97908f7e04696f3106c95fa21dc67fed58577f013264aa01c24b647fa47fcf7bf76e734029fa68f99054710e
DIST ncurses-6.5-20250614.patch.gz.asc 729 BLAKE2B bbda791fa23caa08c25df5eacb100c40bafae51921a757f010412c88b8c28e152fed414cc21079a70c0faf6cbd972bfbfba75dc1cdd8d5d9b43215248a428884 SHA512 7774c6b8215967ef6e9df4d89b16fa969941cd1330951c03b6026b919b90469dd4e801971bc45378239cfb44a3e82b8003ef3c8dbb483a1fef02da49f2a7a315
DIST ncurses-6.5-20250621.patch.gz 12198 BLAKE2B b342b10304c4e3df42a0d4823b5b9a8c2174569e7e6ea3e34aef7dd15c5af623af05ba9ed2efc5cf38493a7e18f71f15627a1596660d086e5f9ffdf1c5a36cd6 SHA512 e3bfe7b6dbaf02455ccb53f6f178d4b409d26d47b5bb26fcbeffef078696d124aaee04faa8d8a291c8a9e10ccd9184c5177c8a5ecd60b26eb49f0d1ea43e3130
DIST ncurses-6.5-20250621.patch.gz.asc 729 BLAKE2B 110a2190ca7f2fd902bbcd16d5d499d2cc8a6ed6c2246d36e2766627c66d1e0283fed9eff1152febdebf50d327bd3e3ec598fa4fcf25ebd2a78c559a3ab6d7ee SHA512 adeb65f38a698413451a0d5e626da09e5824ec2c44197ddfd607bb888167ccf239134774c1c363938761ffcd49047b999603aa76681262e73b11f9f1e3d52520
DIST ncurses-6.5-20250628.patch.gz 3861 BLAKE2B 8707b14c4e9e309f414f8f2d70619f631dd531d3377050d2c331405cd350c28c2ba5579c328a6112f2c4e199f6a13c3c266e985ab33d977f538672798dc01526 SHA512 927838ddd0784ae192f2f43602715bb89f88b05b33f8bbf72275d9920bc4f50e060b1fc49f36b08025487d9cd2d2f7d4b3c38188029d33dd64a31efff38a6bcc
DIST ncurses-6.5-20250628.patch.gz.asc 729 BLAKE2B e33aacfbdf9e41dc8b457ab213e26523fb11dfc2c9df8db6c128387798a7e18813e352c275aba8524d9d4d4be2c71db56973e725952ca361b418d1bb448e1513 SHA512 2fcccee11626df82508a01eaeb8bc9cb124333705adad7265ea8825aac384bbd774527efc6462184fb2b60fdb10f36cc2a81c4c484ee3239070385ece50e6887
DIST ncurses-6.5-20250705.patch.gz 180212 BLAKE2B c41b7be224247e63ebb030924c2e5e54409e31713e307bbbfa7f97e10b368ae651dc0e2deb16833c5f2c58891f9558946231db40eabd5ad5e6a91111fdf3afbb SHA512 eeefc5d4247b3bf647d79b83eff7b36c51b543c8240d902afa005842be2322f526a67c9aa8a2acd877a0f41edbeb00018c31e879acde7e67d7a946285936f5f6
DIST ncurses-6.5-20250705.patch.gz.asc 729 BLAKE2B 8fddbe23e3eac1fc9ef4b9857aaf514c82d5351c48de0fae90a2e16c138e50c69b77863bb66b076f20aa08ca1e8e222db6c8ac302fdb60aba604eb2aa414d53b SHA512 1bcedc2da8eb74bd6737ac1ed05fcb1bea363874d7780ae3b0d2fcf5a9c243bf49cea305ea7316995c5eecb41bb2adac0f25cc8be7ff7f85950403c64da7459f
DIST ncurses-6.5-20250712.patch.gz 8310 BLAKE2B 20a8696895afe29d4a2c10a425315a87ca33005d629d8f87801dd9562963396b0230f87b6c62e7ba4af487cf9f9e1687cb346ef090a60623533ebd35838a261e SHA512 e49a3d807859be4c7842bdc91eccc393ec39fe04044b077203e978e68168bb251cd60d93176e32c49273e533f694dc858520baf3ae115b33bcb344fe9e0a2277
DIST ncurses-6.5-20250712.patch.gz.asc 729 BLAKE2B 43bd707944676c871a5a5253b5898e3188d1301fb8ccf5e2fd81787476ba2947b93882996ee1e23f3c68dcd68ebf360e6d6372bf38212e06a2eadcf50bd604c6 SHA512 5c1a4c3a6fb615d8a8eaef30f7f25d996e8907ae23e23d288f9fc5d64827477dbfef36512fb123a2fe3baa13592978a2473621f62ca2e338eb9120ad4b505b5e
DIST ncurses-6.5-20250720.patch.gz 126004 BLAKE2B 3898a4cadd1d7f903ef5437363208db8412b9de5c718315c73398cdb28daa7d90423aa9c4ba7e1c921b1e3cca9f9980f15d675b6a14ec114835b0766024ec465 SHA512 90a912748ac7cec005172929a9432c8b9f5338d690a863516c09b74e96a38c1390fd2ec4e60616feb0aeeec0d9e5bdf71bf525ed8872b116e309a87701a45a35
DIST ncurses-6.5-20250720.patch.gz.asc 729 BLAKE2B 27cbd419eaa27199787dbbea8f2049f40d83633760f57520f2dde93f55a5d5fc3b7559d3767e32cfdcd930b2c5b018d5e13b301daef0c733d9ca6acaec7dc4f7 SHA512 d41ed183e64fef73621f7a9e9561a5b44ecaae452fc3bcb4e258099f1f7fb06283c6f7a0674c6c40ecca6a07bd3c10782e22ba3618b6153428265a5003d4def5
DIST ncurses-6.5-20250726.patch.gz 47760 BLAKE2B 316109ff7e38c6ecdec115e7980d307d7e16f4f88eee096c620b5750158c288505c8f41de1ec9d9da49ff4e56839166ab994393075d2f5fadcbdfb3c7af2d9c9 SHA512 1c47b7db0fbf77c78b53fac1aeb09d75297c1f46fb9a26a50f7c350b70d1e18fd3995ca4856d67fa9664806d9d64759ad13894924ec7d583973791ac127e8b55
DIST ncurses-6.5-20250726.patch.gz.asc 729 BLAKE2B 0317fe9d4251514a01848b804e1c0d89cbadf6645127bcdb5b854a4a60346de1ffc5464454ac9cb4e930eed566e65e3c5b9624b2e7b76b264f4bd9cbb6f5e70d SHA512 847d6de3cf0ba49ed6cafeae269966d1687e061eb546b0e05ab155af20309ab7fbe0eed6e4d226bc3859a8aa7c526d2781233bf06e9862120c57f2791c2e52f0
DIST ncurses-6.5-20250802.patch.gz 4000 BLAKE2B 18c7855d0a16ad24947b8f9099729dde3d4bf5509d310ec6fe48e52436a8e9c151b963020c798484184989c9816266ef21f5545d73e5d931a8c07da318612e2d SHA512 ef29aeb611f7362343356b50f602298e52727df62dea661dd9b831f440dd9b3ca3b4e0a57011222db9e8016fa06413ef97b83936445353dbb11993f08936d95f
DIST ncurses-6.5-20250802.patch.gz.asc 729 BLAKE2B 20bdd09573b76d1f37964f3af89e96fa481a8c3cd3872de5b8c1fdffc718c4777ef7a5a99046b17f06a92a9266f46ac29df5e21c473ed3fbaf1e03fc557157f3 SHA512 e2398af3d20db4fff9d724a8c7d6da32c094b95dc8156c46f6f5f3aaa3f53b9b0eb739bb6be8afab54863180ab56e16168056b0852ff3aefce0875a32f2770b8
DIST ncurses-6.5.tar.gz 3688489 BLAKE2B d0a05c218b5f320ba9abe2f322787baef1d15d764e503c81d49772b54b2927d28ecbeb500c8e514996226b41f69445b4de44ff423cec25b61847307fe61682ec SHA512 fc5a13409d2a530a1325776dcce3a99127ddc2c03999cfeb0065d0eee2d68456274fb1c7b3cc99c1937bc657d0e7fca97016e147f93c7821b5a4a6837db821e8
DIST ncurses-6.5.tar.gz.sig 438 BLAKE2B 5789b47932ec97d3863c7a65306369f0a36cb5b1a35c1e009b5174f50941edceafc22e6f07db3843a096773663a0ca602c0ecb9465e6042d9a78d76ae5008215 SHA512 96ce61a3d529e48e249acecbf4bb9eae2d9f2f67506e92ffa3182f5e98040c38babf0c2c15d92fc5d96e1181e72be1b29fdbff7bee859dfe2ae387f9b8883092
DIST ncurses-6.5_p20241109-patches.tar.xz 63676 BLAKE2B 9981b740fcec18cc794074ccc93ae1dbe175e52449af2bddfd10a6fb1d5dfe9b545bd19fce5e601d2d85008425fd5cd6fc33042d7bcc854363b0642b9c880efe SHA512 076d2d39c46cf9236e5e65472e10182da2dffffa936c7567b11e23323d64f9739bb3818d4fdbdd75a14fd3f5b202dcdb7aaa6813afb5e303f81c094339824162
DIST ncurses-6.5_p20250118-patches.tar.xz 64188 BLAKE2B 46ac7c8bcfb0ec4fb032ccff4ba0c57d15f925910eb4d108c626aba8fdecefd21660a05cf54a88a4668b50e489ce0a08526f978a0084c66b2105fc4d929fdfe5 SHA512 12ff29d5ec76487f8b368d481fc19d841e8ce6bc216ff614b6d6d543a1fa36020b403432c802665d99b7fb4f08ae863d7ac331e6e2d95ff86c719fdca383c3e2
DIST ncurses-6.5_p20250301-patches.tar.xz 65224 BLAKE2B 9db65c728cc6d79e21b7673bb7700069cbf09287acfb65b23a65d607c3172835a9bf7df9a705d3a05b6197684bc7935e1cbed91bf18343c4fb8ebacf17e61dc1 SHA512 f5808f0c2fc1f6027678d8980a0cf598a64c9e85e1d72459dd712090c2dd24eb45261f35b025fd543aed56e903c658942c163b8fe8bace24a56fb8e9238da29e
DIST ncurses-6.5_p20250531-patches.tar.xz 65304 BLAKE2B b696a473c34df2aa1fe8b03fcbd6dd4bffdc8620917c0651994037bf902526a0c0b2be843beee2dec543677a0289aea35dd7e9ba7161eaef2c5663b4f1e356a8 SHA512 cb638cd2fd7128a7245b95a686df0725cbe133b42d26bdebabe62f070eacc25545845ea09c44d6d73183776a0ad094ae7857e2079b6561f05d94b86730f355db
DIST ncurses-6.5_p20250802-patches.tar.xz 64208 BLAKE2B a4e721225ac68590f6d5b492d5ec0a90b2637fe34bbe6bc3bf7eebfd6e295f430f71e63f36bb81db5864868e29d4acb62698dc01511048d929c745b752a95352 SHA512 40d9db23bc9b3baa0fac6bc380c47bc13bf2928796b6a0ab706f952dd6c39cba939e772f13b0323656b661f9006cd4d5dbde705db79a2bf28980c6f423ded374

View File

@@ -0,0 +1,498 @@
# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
# sys-libs/ncurses-compat can be bumped with sys-libs/ncurses as upstream
# provide a configure option for the ABI version.
VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/thomasdickey.asc
inherit flag-o-matic toolchain-funcs multilib multilib-minimal preserve-libs usr-ldscript verify-sig
MY_PV="${PV:0:3}"
MY_P="${PN}-${MY_PV}"
DESCRIPTION="Console display library"
HOMEPAGE="https://www.gnu.org/software/ncurses/ https://invisible-island.net/ncurses/"
# Keep invisible-mirror.net here as some users reported 403 forbidden with invisible-island.net
SRC_URI="
mirror://gnu/ncurses/${MY_P}.tar.gz
https://invisible-island.net/archives/${PN}/${MY_P}.tar.gz
https://invisible-mirror.net/archives/${PN}/${MY_P}.tar.gz
verify-sig? ( mirror://gnu/ncurses/${MY_P}.tar.gz.sig )
"
GENTOO_PATCH_DEV=sam
GENTOO_PATCH_PV=6.5_p20250802
GENTOO_PATCH_NAME=${PN}-${GENTOO_PATCH_PV}-patches
# Populated below in a loop. Do not add patches manually here.
UPSTREAM_PATCHES=()
if [[ ${PV} == *_p* ]] ; then
# Sometimes, after releases, there's no megapatch available yet.
#
# From upstream README at e.g. https://invisible-island.net/archives/ncurses/6.3/:
#
# "At times (generally to mark a relatively stable point), I create a rollup
# patch, which consists of all changes from the release through the current date."
#
# Also, from https://lists.gnu.org/archive/html/bug-ncurses/2019-08/msg00039.html,
# the patches are considered to be acceptable to use after some testing. They
# are both for development but also bug fixes.
#
# This array should contain a list of all the snapshots since the last
# release if there's no megapatch available yet.
PATCH_DATES=(
20240504
20240511
20240518
20240519
20240525
20240601
20240608
20240615
20240622
20240629
20240706
20240713
20240720
20240727
20240810
20240817
20240824
20240831
20240914
20240922
20240928
20241006
20241019
20241026
20241102
20241109
20241123
20241130
20241207
20241214
20241221
20241228
20250104
20250111
20250118
20250125
20250201
20250208
20250215
20250216
20250222
20250301
20250308
20250315
20250322
20250329
20250405
20250412
20250419
20250426
20250503
20250510
20250517
20250524
20250531
20250614
20250621
20250628
20250705
20250712
20250720
20250726
# Latest patch is just _pN = $(ver_cut 4)
$(ver_cut 4)
)
if [[ -z ${PATCH_DATES[@]} ]] ; then
SRC_URI+=" https://invisible-island.net/archives/${PN}/${PV/_p*}/${MY_P/_p/-}.patch.sh.gz"
SRC_URI+=" verify-sig? ( https://invisible-island.net/archives/${PN}/${PV/_p*}/${MY_P/_p/-}.patch.sh.gz.asc"
# If we have a rollup patch, use that instead of the individual ones.
UPSTREAM_PATCHES+=( patch.sh )
else
# We use a mirror as well because we've had reports of 403 forbidden for some users.
upstream_url_base="https://invisible-island.net/archives/${PN}/${PV/_p*}/${MY_P}-"
upstream_m_url_base="https://invisible-mirror.net/archives/${PN}/${PV/_p*}/${MY_P}-"
# Prefix each date with the upstream location (https://invisible-island.net/archives/${PN}/${PV/_p*}/${MY_P})
mangled_patches=( "${PATCH_DATES[@]/#/${upstream_url_base}}" )
# Suffix each with .patch.gz
mangled_patches=( "${mangled_patches[@]/%/.patch.gz}" )
mangled_patches_sig=( "${mangled_patches[@]/%/.asc}" )
# Repeat for .patch.gz.asc for verify-sig
SRC_URI+=" ${mangled_patches[@]}"
SRC_URI+=" verify-sig? ( ${mangled_patches_sig[@]} )"
# For all of the URLs, chuck in invisible-island.net too:
SRC_URI+=" ${mangled_patches[@]/${upstream_url_base}/${upstream_m_url_base}}"
SRC_URI+=" verify-sig? ( ${mangled_patches_sig[@]/${upstream_url_base}/${upstream_m_url_base}} )"
UPSTREAM_PATCHES=( "${PATCH_DATES[@]/%/.patch}" )
unset upstream_url_base upstream_m_url_base mangled_patches mangled_patches_sig
fi
fi
SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV}/distfiles/${CATEGORY}/${PN}/${GENTOO_PATCH_NAME}.tar.xz"
S="${WORKDIR}/${MY_P}"
LICENSE="MIT"
# The subslot reflects the SONAME.
SLOT="0/6"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
IUSE="ada +cxx debug doc gpm minimal profile split-usr +stack-realign static-libs test tinfo trace"
# In 6.5_p20250118, the C++ examples fail to link, but there's no automated
# testsuite anyway. Controlling building examples isn't really what USE=test
# is for. Just restrict them.
RESTRICT="!test? ( test ) test"
# TODO: ncurses allows (and we take advantage of this, even) passing
# the SONAME for dlopen() use, so only the header is needed at build time.
# Maybe we should bundle a copy of gpm.h so we can move gpm to PDEPEND
# which would be far nicer UX-wise.
DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
# Block the older ncurses that installed all files w/SLOT=5, bug #557472
RDEPEND="
${DEPEND}
!<=sys-libs/ncurses-5.9-r4:5
!<sys-libs/slang-2.3.2_pre23
!<x11-terms/rxvt-unicode-9.06-r3
!<x11-terms/st-0.6-r1
!minimal? ( !<x11-terms/ghostty-1.1.0 )
"
BDEPEND="verify-sig? ( sec-keys/openpgp-keys-thomasdickey )"
PATCHES=(
"${UPSTREAM_PATCHES[@]/#/${WORKDIR}/${MY_P}-}"
# When rebasing Gentoo's patchset, please use git from a clean
# src_prepare with upstream patches already applied. git am --reject
# the existing patchset and rebase as required. This makes it easier
# to manage future rebasing & adding new patches.
#
# For the same reasons, please include the original configure.in changes,
# NOT just the generated results!
"${WORKDIR}"/${GENTOO_PATCH_NAME}
)
src_unpack() {
# Avoid trying to verify our own patchset tarball, there's no point
if use verify-sig ; then
local file
for file in ${A} ; do
if [[ ${file} == ${MY_P}.tar.gz ]] ; then
verify-sig_verify_detached "${DISTDIR}"/${file} "${DISTDIR}"/${file}.sig
else
[[ ${file} == @(*${GENTOO_PATCH_NAME}.tar.xz|*.asc|*.sig) ]] && continue
verify-sig_verify_detached "${DISTDIR}"/${file} "${DISTDIR}"/${file}.asc
fi
done
fi
default
}
src_configure() {
# bug #115036
unset TERMINFO
tc-export_build_env BUILD_{CC,CXX,CPP}
# bug #214642
BUILD_CPPFLAGS+=" -D_GNU_SOURCE"
# Build the various variants of ncurses -- narrow, wide, and threaded. #510440
# Order matters here -- we want unicode/thread versions to come last so that the
# binaries in /usr/bin support both wide and narrow.
# The naming is also important as we use these directly with filenames and when
# checking configure flags.
NCURSES_TARGETS=(
ncurses
ncursesw
ncursest
ncursestw
)
# When installing ncurses, we have to use a compatible version of tic.
# This comes up when cross-compiling, doing multilib builds, upgrading,
# or installing for the first time. Build a local copy of tic whenever
# the host version isn't available. bug #249363, bug #557598
if ! has_version -b "~sys-libs/${P}:0" ; then
local lbuildflags="-static"
# some toolchains don't quite support static linking
local dbuildflags="-Wl,-rpath,${WORKDIR}/lib"
case ${CHOST} in
*-darwin*) dbuildflags= ;;
*-solaris*) dbuildflags="-Wl,-R,${WORKDIR}/lib" ;;
esac
echo "int main() {}" | \
$(tc-getCC) -o x -x c - ${lbuildflags} -pipe >& /dev/null \
|| lbuildflags="${dbuildflags}"
# We can't re-use the multilib BUILD_DIR because we run outside of it.
BUILD_DIR="${WORKDIR}" \
CC=${BUILD_CC} \
CXX=${BUILD_CXX} \
CPP=${BUILD_CPP} \
CHOST=${CBUILD} \
CFLAGS=${BUILD_CFLAGS} \
CXXFLAGS=${BUILD_CXXFLAGS} \
CPPFLAGS=${BUILD_CPPFLAGS} \
LDFLAGS="${BUILD_LDFLAGS} ${lbuildflags}" \
do_configure cross --without-shared --with-normal --with-progs --without-ada
fi
multilib-minimal_src_configure
}
multilib_src_configure() {
if [[ ${ABI} == x86 ]] ; then
# For compatibility with older binaries at slight performance cost.
# bug #616402
use stack-realign && append-flags -mstackrealign
fi
local t
for t in "${NCURSES_TARGETS[@]}" ; do
do_configure "${t}"
done
}
do_configure() {
local target=$1
shift
mkdir "${BUILD_DIR}/${target}" || die
cd "${BUILD_DIR}/${target}" || die
local conf=(
# We need the basic terminfo files in /etc, bug #37026. We will
# add '--with-terminfo-dirs' and then populate /etc/terminfo in
# src_install() ...
--with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo"
# Enable installation of .pc files.
--enable-pc-files
# This path is used to control where the .pc files are installed.
--with-pkg-config-libdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
# Now the rest of the various standard flags.
--with-shared
--enable-fvisibility
# (Originally disabled until bug #245417 is sorted out, but now
# just keeping it off for good, given nobody needed it until now
# (2022) and we're trying to phase out bdb.)
--without-hashed-db
$(use_with ada)
$(use_with cxx)
$(use_with cxx cxx-binding)
--with-cxx-shared
$(use_with debug)
$(use_with profile)
# The configure script uses ldd to parse the linked output which
# is flaky for cross-compiling/multilib/ldd versions/etc...
$(use_with gpm gpm libgpm.so.1)
# bug #930806
--disable-setuid-environ
# TODO: Maybe do these for USE=hardened
#--disable-root-access
#--disable-root-environ
--disable-termcap
--enable-symlinks
--with-manpage-format=normal
--enable-const
--enable-colorfgbg
--enable-hard-tabs
--enable-echo
$(use_enable !ada warnings)
$(use_enable debug assertions)
$(use_enable !debug leaks)
$(use_enable debug expanded)
$(use_enable !debug macros)
$(multilib_native_with progs)
$(use_with test tests)
$(use_with trace)
$(use_with tinfo termlib)
--disable-stripping
--disable-pkg-ldflags
)
case ${CHOST} in
*-mingw32*)
conf+=( --enable-term-driver )
;;
*)
conf+=( --disable-term-driver )
;;
esac
if [[ ${target} == ncurses*w ]] ; then
conf+=( --enable-widec )
else
conf+=( --disable-widec )
fi
if [[ ${target} == ncursest* ]] ; then
conf+=( --with-{pthread,reentrant} )
else
conf+=( --without-{pthread,reentrant} )
fi
# Make sure each variant goes in a unique location.
if [[ ${target} == "ncurses" ]] ; then
# "ncurses" variant goes into "${EPREFIX}"/usr/include
# It is needed on Prefix because the configure script appends
# "ncurses" to "${prefix}/include" if "${prefix}" is not /usr.
conf+=( --enable-overwrite )
else
conf+=( --includedir="${EPREFIX}"/usr/include/${target} )
fi
# See comments in src_configure.
if [[ ${target} != "cross" ]] ; then
local cross_path="${WORKDIR}/cross"
[[ -d ${cross_path} ]] && export TIC_PATH="${cross_path}/progs/tic"
fi
ECONF_SOURCE="${S}" econf "${conf[@]}" "$@"
}
src_compile() {
# See comments in src_configure.
if ! has_version -b "~sys-libs/${P}:0" ; then
BUILD_DIR="${WORKDIR}" do_compile cross -C progs tic$(get_exeext)
fi
multilib-minimal_src_compile
}
multilib_src_compile() {
local t
for t in "${NCURSES_TARGETS[@]}" ; do
do_compile "${t}"
done
}
do_compile() {
local target=$1
shift
cd "${BUILD_DIR}/${target}" || die
# A little hack to fix parallel builds ... they break when
# generating sources so if we generate the sources first (in
# non-parallel), we can then build the rest of the package
# in parallel. This is not really a perf hit since the source
# generation is quite small.
emake -j1 sources
# For some reason, sources depends on pc-files which depends on
# compiled libraries which depends on sources which ...
# Manually delete the pc-files file so the install step will
# create the .pc files we want.
rm -f misc/pc-files || die
emake "$@"
}
multilib_src_install() {
local target
for target in "${NCURSES_TARGETS[@]}" ; do
emake -C "${BUILD_DIR}/${target}" DESTDIR="${D}" install
done
# Move main libraries into /.
if multilib_is_native_abi ; then
gen_usr_ldscript -a \
"${NCURSES_TARGETS[@]}" \
$(usex tinfo 'tinfow tinfo' '')
fi
# Don't delete '*.dll.a', needed for linking, bug #631468
if ! use static-libs; then
find "${ED}"/usr/ -name '*.a' ! -name '*.dll.a' -delete || die
fi
# Build fails to create this ...
# -FIXME-
# Ugly hackaround for riscv having two parts libdir (bug #689240)
# Replace this hack with an official solution once we have one...
# -FIXME-
dosym $(sed 's@[^/]\+@..@g' <<< $(get_libdir))/share/terminfo \
/usr/$(get_libdir)/terminfo
# Remove obsolete libcurses symlink that is created by the build
# system. Technically, this could be also achieved
# via --disable-overwrite but it also moves headers implicitly,
# and we do not want to do this yet.
# bug #836696
rm "${ED}"/usr/$(get_libdir)/libcurses* || die
}
multilib_src_install_all() {
local terms=(
# Dumb/simple values that show up when using the in-kernel VT.
ansi console dumb linux
vt{52,100,102,200,220}
# [u]rxvt users used to be pretty common. Probably should drop this
# since upstream is dead and people are moving away from it.
rxvt{,-unicode}{,-256color}
# xterm users are common, as is terminals re-using/spoofing it.
xterm xterm-{,256}color
# screen is common (and reused by tmux).
screen{,-256color}
screen.xterm-256color
)
if use split-usr ; then
local x
# We need the basic terminfo files in /etc for embedded/recovery, bug #37026
einfo "Installing basic terminfo files in /etc..."
for x in "${terms[@]}"; do
local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
local basedir=$(basename "$(dirname "${termfile}")")
if [[ -n ${termfile} ]] ; then
dodir "/etc/terminfo/${basedir}"
mv "${termfile}" "${ED}/etc/terminfo/${basedir}/" || die
dosym "../../../../etc/terminfo/${basedir}/${x}" \
"/usr/share/terminfo/${basedir}/${x}"
fi
done
echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" | newenvd - 50ncurses
use minimal && rm -r "${ED}"/usr/share/terminfo*
# Because ncurses5-config --terminfo returns the directory we keep it
# bug #245374
keepdir /usr/share/terminfo
elif use minimal ; then
# Keep only the basic terminfo files
find "${ED}"/usr/share/terminfo/ \
\( -type f -o -type l \) ${terms[*]/#/! -name } -delete , \
-type d -empty -delete || die
fi
cd "${S}" || die
dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
if use doc ; then
docinto html
dodoc -r doc/html/
fi
}
pkg_preinst() {
preserve_old_lib /$(get_libdir)/libncurses.so.5
preserve_old_lib /$(get_libdir)/libncursesw.so.5
}
pkg_postinst() {
preserve_old_lib_notify /$(get_libdir)/libncurses.so.5
preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
}