sys-libs/ncurses: Sync with Gentoo

It's from Gentoo commit 0b41a2ac8ce97062b362697f60572be1eaf8a844.

Signed-off-by: Flatcar Buildbot <buildbot@flatcar-linux.org>
This commit is contained in:
Flatcar Buildbot 2026-04-27 07:56:32 +00:00
parent 89047d699f
commit 0819a2c9e4
5 changed files with 54 additions and 1045 deletions

View File

@ -164,7 +164,37 @@ DIST ncurses-6.5-20251220.patch.gz 46642 BLAKE2B 4b0f3edd124ffbaba3d20fb1594ecc2
DIST ncurses-6.5-20251220.patch.gz.asc 729 BLAKE2B d208a0969f99afd55454fbcaca2d8cb6e784008b0c1b10a4272d3ebb16128245774d88341c9ec8f08d5f64280cae89978b9ba215a4168ebb96ecb768b0ff1c03 SHA512 fb8714e858c60fbc7b33b162d681f6f261daeeb6bd6e376c058c12624e976db520dbd0b7a0a87394e81b9b6ef46cd9a127b51a15c334f0da4239e2a49405295f
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_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
DIST ncurses-6.5_p20251220-patches.tar.xz 64532 BLAKE2B 2e15dcdff309cdfae21bb122a57a34088bed9c85658de938e50fee1fd28b73549eff0bf8f1656a0e86a0a53bf1539cc369ef9a0c9daef8d8cf4e8874dac7eb5d SHA512 394323278b59cac96fec01f2b2cf81f134b644e0887f187e9a6b0b3411a18f17252430bbcd7bab08ab578a69d7217a31e482b498e96ff991d4d9da4ec37c8a7a
DIST ncurses-6.6-20251231.patch.gz 3999 BLAKE2B 54e6e9bf63bcac51d657535b6bd30a92267d3d1dc23ebb490aa1aee257b7dbcdf73c486c1f275f7d1b4024a20291b1ebf83473062366a7ecb39010ef2c3a4628 SHA512 f3fa46fd0666aeb238069a37f5d9d7a6236cbd2a07a9f20829346212d1933b318bfd84bdfda8a1d1dffa676bc10d9efdea6358d452ad2ebd77665e57d7bc2ade
DIST ncurses-6.6-20251231.patch.gz.asc 729 BLAKE2B 37e472c5318f28d858a7138df8da6728c167a7654e24f0e0667b463880b6854f44509e233230ca07201becb8ed93f868bf721a5809e49316b9d6b8b44892985f SHA512 edd14b41c2d18e240b94f4e4a2b8bd4e49ba36c01afc9327fb54b890975cb89c641158cc34d26d74e3114e719ab9195f61a574e78f49a81d22e8c2ca50812bb1
DIST ncurses-6.6-20260103.patch.gz 15365 BLAKE2B 2ad88b6d8089310aca9fc9c7bb0f5a66b526f3b8788d5ae5ef49e7f33ab782f1692bc9a57bc770b2582491e17fb83ac4add6b3d947b447ea48b99ce4f63a5a7f SHA512 0d2bbab30a412ded339bffed89208530bf4f2be410f866ec7a93dc9e9a6e3b5e3c88e1ff8583188daa4331f1cd34ff79eed23fe4753ae3221f439f899f1bd1d4
DIST ncurses-6.6-20260103.patch.gz.asc 729 BLAKE2B 841eb4d74e49ce4c626c33b40407792c53256f316e3af5c0b6fa13bd1c13abdaa9e05a4a99825e42d01f5e219efc618dae9b8b59a2114de0ca3ca2f0856fd9e0 SHA512 9e1055c7eceee0fa3b8aef0a578731901d8dcd9f33a9e943f974130463a0f459cc3e392e4db6e0976ff2a45cfc57dc9c9cfa40ddf0971d6f84f4efb758be1aea
DIST ncurses-6.6-20260117.patch.gz 20569 BLAKE2B 9534579a348694e394e188ddb80608121a4530f0e887c3cab3b6dd5c8143f0ce0ff7b04f459a681f2ff2658a82a9ec575e8bb83de5921f6da4d57be86c5e7325 SHA512 75473fa4281d6d3e0d4c8473ec37fa7a5163117785d0f7099ff7c744988903705d9378702b26e51e835a41325a33e8ba0cfa788602e243c2cc79d0a7308452ba
DIST ncurses-6.6-20260117.patch.gz.asc 729 BLAKE2B 79d83208232bc11dd13909b92f2a581a53d945d23535b0e046d08c0c0e14fe4fc3917fed083416870c8b1f89808c10b1503aceb17db47fe4d0cde2869cb11549 SHA512 7f8881b2fd071d304737ecc0d9f5fc2cbcfaa47cd69d1943566538ba2508d33cdb0e26cfbff88f590e461476f2440e2453bd0d2854d8fb07c6b136fb39cd30af
DIST ncurses-6.6-20260124.patch.gz 13387 BLAKE2B 70b5888f109550fb77286d2e0a0c54fa445cc4c9eb89f7b1dc2e11f81203a3c11f43febe55b78b714486b5a7c3a153290b7c81303f01c3d129f453ba945a2e37 SHA512 2bbe858498afacfd20fb8b2c03f13ab3de66ab8e02c241e03ea11352b560745c7383b0cae3881cafc38ea5604a2c262eab8d8e36731f55aa4e21adb3218fc8a3
DIST ncurses-6.6-20260124.patch.gz.asc 729 BLAKE2B d812b7ea5466ffedbf80c24087e475fc066ae0c5135a0d3232b3799fc846dc1110681e94ae84365f01fdc159426d5614b571024810264d7c8cbbdf767addccc7 SHA512 6360de6e7088f8ece6a708ae85474e1a157f43a6d52aa8f743641b3b15311947581125ce86b20a57125a776f0bc32ca5f5f0e514b76102afc8a495b00359c9d4
DIST ncurses-6.6-20260131.patch.gz 5027 BLAKE2B 8d790996694170bfb754c8a5331b3ecbe234cde61fb35b7fd067cea04c3e6a115ba3a47654f06b3b662dd5ddd59b5cb551443f75047caea598253ea465110174 SHA512 d49c24b98a0e1dca3ffd63a2450561f4a1bbf96baa661b06fa36c0e03c330f0298cdc5e19ea1a38b94ad6348df990468a56c3125678b67da4afc0bbbef7d7515
DIST ncurses-6.6-20260131.patch.gz.asc 729 BLAKE2B 0defcdf8190ce4b2b814ac7845b1af128ad36d580bf0a2026d801ef9b31a578fc5868bda7af6ce9f7f07120ac855461fe4eb2d323b8f5a6913e21c196888a15a SHA512 e4589ffc61225937541cb65ffe5b1fbe2ae373c951d7b1648ce7ce093dada61b318d6eca10e5a383ff9b22892278e74e5efab2473d62968df2fe86306b281985
DIST ncurses-6.6-20260207.patch.gz 14538 BLAKE2B 98b007beceb6d27224e50fb16e0eae5145a52595f12f3286dbe185ff84df098af516e236e7784faad082e55fb0d026256e6effc9729f5901dcdf4b12729e5cde SHA512 35eb68d1f518ec2fb023d94bb0cf77f7070b0d366695f51b3d049d47aa593ba43fdac6eea47798c9de411c3af2eef9bca3ac54710da1a86fe337e62de743bdbf
DIST ncurses-6.6-20260207.patch.gz.asc 729 BLAKE2B 7d31ccc8ad8efe3f6b5e48932636774f0af2bd5a534beed03dd8a7c29fce2db113627b4a55fded42546838e7a342bdcd92ff92ade356d133862b23327469fb07 SHA512 f7e4b8b6892ebe362762b5090ce9a55a4f597e15e623fc46c7104c206e3672e91c211f1d7b46a77c2fdece883e7d6162ab3d49e789baa3e19bd55b6b9e81549a
DIST ncurses-6.6-20260214.patch.gz 3687 BLAKE2B 967a2bae990db34b2faec9b94511a567a17f18ff5bfed9932b2eebbe815a1ec21355ff871457a25d2c7401da9813a49d3608f1a4f0bc63f4ca052fde81ff89b0 SHA512 56f775a9aa429ac42bee04f7014a9c636edebc6c31cfdf674b050b193eeda0a9aa1016442304ed04154bad11d0a827109875a347dbb6a89adfc6b19096bd9557
DIST ncurses-6.6-20260214.patch.gz.asc 729 BLAKE2B 1bef7638085c14e24c284d791be6bcada99f31c721129525dad0811cd102c5227a7f737164928a5fb164bad49dc534c76d59f9c904a0d854f04a8e10def348a9 SHA512 ff391e5fc228eef564d45d18d6cd372a09a04d9d8563a468e410445b292e47ee8f2f8c1e57f34d698ddd548b99214592693ef37ffd922d11ee41dc62ecb99e42
DIST ncurses-6.6-20260221.patch.gz 72474 BLAKE2B 43a10f3af30538697206d97300dafa2dabd5001e2a33b82445a958576318e6f278dbb75717f4a6d58b1a23493ac0407f989347953a66d563fa71a5414870ecbc SHA512 5eb4dadbd174bf7480a9e1d1048c306fd6b00e54cedf04aeb46a8706d1e4a5cec2e61d5fd51c29ac0f08412070ef1e8b22ed40d0ddc3e8858cf4f0e66a4d405a
DIST ncurses-6.6-20260221.patch.gz.asc 729 BLAKE2B c22ce89472c5e159984de2ef503e4e7c4a4d00a9a98b71e1e6e2b89fd609e10b156e8b7d7233ea4771c7cc19f5ee784260215ed16ca1b8cb13c7ee0061be62e2 SHA512 609ab532d0df9484fc89bdeec4cf55ff74ba225d901240d22d900ec5c11af75f8cc74c772ff3a8efc3fac9f26d6a3977b432e38faee62c8665beed7f6d7596e1
DIST ncurses-6.6-20260301.patch.gz 4802 BLAKE2B 671012ecb3be634099427ed959c41790096885fe727d18f635842575aa8a28ab3fce2eb442dffc899a3a74f09f54aefa39f40ae054735ae773d4a31164beb0df SHA512 b450deff0e689c211b12108f96275013238ddf32554af3d39c51d1301d0ace50bfdb405249e61db46eb28b4fdfa05501ddd0bc31d05dededf2f3af963be5c1ca
DIST ncurses-6.6-20260301.patch.gz.asc 729 BLAKE2B 33407b9d70cd295faa1457fa7518f06331a508e946ef94e044984a15c0f7ee6239e31e73b453b19d5274367b6795d3402a8eac0ace522abd586e7fca268f3553 SHA512 d051dcf06716fbeaf2da9f3819d3fef064ed56de32bf380aa216d55796359a30e6109f59678003dc2491c560e62a2b885a1ee5e1e556aa663b2045c723fbefba
DIST ncurses-6.6-20260307.patch.gz 6274 BLAKE2B d356f55711e057d9f95e461635a9ee05c0a1b4561ea83555dd53ea34d60cf5f4dcc02d748c7046a48acf05ba8b841362bc9fdb47f792072bf423c9c9aaa46601 SHA512 1dfbd57726898f874b4561638e5be5bce229ff27ebf20756d235aad076c3835d48e388daefa61d01653fae068c3e86a8cc80485f1ce2e70d5b67e065a8ae5b40
DIST ncurses-6.6-20260307.patch.gz.asc 729 BLAKE2B b3671e9a9c111d08c552c78dd209777afbda5cf2b0cb05b383140e08ce21abd114e9899897f2205328ac3873802425e9ecd32869479b99456daa5d3a47d04c02 SHA512 014809a87c1297484795fb5e70c85bd543249a11295e3f4e640df13053f9242aa8cdc4972a19f11504d3951fcb3d77f37d290c7eb6cdadd3eefc9c00e1b6d58e
DIST ncurses-6.6-20260314.patch.gz 99661 BLAKE2B 5c0a6c893a0713a66b10582bfbabb50d162d3567ebb4e78482da2c7eef7f04f7d0188dfdf8b5272596cf6fe21302d24ae642bd7efcd574fa629b78a0c4ea3657 SHA512 c46addc2b5006cc4f2d1681a50ac3ee6a275091d654a5fe27015714c9c5a0f04005a0fcddea25f01163815125a4e979681cd32f58a7189aadceb78251dcd19b3
DIST ncurses-6.6-20260314.patch.gz.asc 729 BLAKE2B ff6a9f38d5b9e68d499f36645a47db1ac9aafbdd4a87d21569b06a5dd1f94a8c1e24e64af1ce060f7256f46ff6692fe26f6bc4b02261f35b8a1b4d72a0c029dc SHA512 c00ec69c3a4177d7ab8538ab13db48b6e659058e410a59f9240b074e7edd548bee77584797f1f3da7a30b0048843c8ca12a91933898a07a6e34fd5d64fcd0428
DIST ncurses-6.6-20260321.patch.gz 74370 BLAKE2B c4520faabdfd42e82d3acf2e89e98ce2c8cfb298bc4df5c4574cd279f292cb6a523f50916b9e900aa9c99dfd25f7e540fe865eb805db6d94a374ef68ea709a43 SHA512 7d8a9bcaba1abb12fc020a485369cdffca69f2a4e4939b4b79f4da13185cb48afa181f20e3db042e664d8bd5d7bf0fc9268dfaf28260ea5e46d1f33ce6cc20ac
DIST ncurses-6.6-20260321.patch.gz.asc 729 BLAKE2B 9be85a6acba6bb3241476e21d1e5d7ed9241193a72732f024742ec507929b773dfac1f9318ed3edecba6f46b020335a2571a1fe3577340b358a87bb9eb9c4032 SHA512 0c53e5dcab15a53764a13d807157173824e266f9f24511670670d4519fd290eeb09cc8649271bb1dbc76f99519bab5b29afdce7eccbe9e52ebca8e5e2b7f9d7c
DIST ncurses-6.6-20260328.patch.gz 7345 BLAKE2B 6bf25718bd9db23ad115d5619b3e4a2fb78bc606d2c88859d9259707438f682cc55d578375a7cbede7c3d04ccb91c096edc6407be2fd45f2bc7a23f15ee77df2 SHA512 7dc0cce7c2204601796c7897b4401b8a9fa47c456aae9f76a18a0bd0120cfd22e16107711f81a1d20c4bab893a19b42b01355106c83530490faa8586b6078105
DIST ncurses-6.6-20260328.patch.gz.asc 729 BLAKE2B 32681aceb16a416dbf7d165db4df60f536f6fb4b1faa0f01509879b45162ef59324ffbed95273f0e0db790ed88d1462007f454bb24249012a8582f0633f5f184 SHA512 60aa7cb5eb4b49c714b7d31f2bae9a41c12691354fdf249414c179173d5fda2797cd7b1ebd21b1e30d23e21fd46920b6021104194ee7df218526277aa8e5c9d4
DIST ncurses-6.6-20260404.patch.gz 5546 BLAKE2B 30b4c0973e9cea1296cc3f60c4140225c76d3afbc14c9ef42870319d8c4112eb55ca92c2b43c3ae704334dabfbd3a2f8221da359211c25fcfd23acf766e04c66 SHA512 0088f8b24041ba8072fdd8c29291eb815fec7cb9de41df5a81903d8d8f29ab859468181430ce5b1224a05e4ee174b0b709f83f08e0128c8a86fbce44f5dda602
DIST ncurses-6.6-20260404.patch.gz.asc 729 BLAKE2B 353528c751e141cc78c1fe281ad6629280efdaa0e8faecd409681b91bd5e53db6321bf4030d1f8f53b35c1647fc7005da9a12e9c47c9ca066d9878a9f7ec4273 SHA512 01d0f8709d592b6d979c670627dddc2ea4120d0ad1bf679932199cbec322d6d83dd029a365b8df9cfd0a75a446a44015231cdf64d7b0aed3c578437861e2ae81
DIST ncurses-6.6-20260411.patch.gz 3662 BLAKE2B 9e2ca4d0c1222a14461d9a01e5d67dfe6c8281d084413dda50c06935cb7b41bcff1d9d74a40b2d47b003475ccceda4417c193553e34d5c8d845694bbca1536a5 SHA512 dc4fa7682ad91056e8bbad942991344216a418a88505e468a38b60d06fd25abcc5d9b047474ea43d4e097e97ad2b4e8cf91c5e28f5b716a0a8a651548f7eba94
DIST ncurses-6.6-20260411.patch.gz.asc 729 BLAKE2B 45bacf4a9ac503271c25c39e6f74f536f1dd2e6464b194a3525ef6134acb8543c6a4e1a4e293d5617c2c0680e86ee6a7c9151710c68244f3278fdc81a314d2be SHA512 b5d7a0e245d98943cada86996268817cf9722bfc1c2addfbf20dc63da3de5d4cbd92aaa6609f79f862ac5ecc2c86c55b139e00f3a5820e27adddb1695e954ebd
DIST ncurses-6.6.tar.gz 3791150 BLAKE2B 8863ce3091fc72f23d12fe5913ea07c783e907cd8454b1c2b782f3e6bb91110cbfc4c52b8f0404eabd0d2041211183614e9d7f125ef8deeb23237b031f61fca0 SHA512 02647baae53abc844fbadee5b0a2187ad073125c4e8950df6d1c4feb781cb74ba64fb838cedfee2c246c39932187f6775b1df124f18b99a4233f0d98c72191de
DIST ncurses-6.6.tar.gz.sig 438 BLAKE2B 0c687ae08bc40642479eeefc3f40f6993646566bd6fc2c6ff8f0f5c5bb930a3c9dfa4d85916eb9ce42ca17cec4ecccbbb532ac3bc6fdf16f5fc406171706c4b8 SHA512 73c6ca454e15d20d544e1220c62dcc265f69b42a76f29cd2068f06d874ed05d7567fdce8afe342fa5bb62d0f1c650927a88255f71b1b386a5d54d41738167eed
DIST ncurses-6.6_p20260411-patches.tar.xz 81820 BLAKE2B 1f5496b2a77a876b96d8b1b9ffc3d6a0d7452d3b7f3f8e5e96643756b9a5c97b7aff5758f1e9e5e574875c5dc6cd9d517556c96e5d967ef6f7e2c2fc3668d543 SHA512 11bb25b97d7377ac06d78e5c1026077ba1f1a45521473d2173532e9dbb4f938cc400faf140e3ed28963c49a3561b4bc4ab45c21c24ca223d41e43ee69ba33723

View File

@ -1,484 +0,0 @@
# 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_p20250301
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
# 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 ~arm64-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"
# NCURSES_BOOL confusion, see https://lists.gnu.org/archive/html/bug-ncurses/2024-11/msg00010.html
append-cflags $(test-flags-CC -std=gnu17)
# 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_with debug assertions)
$(use_enable !debug leaks)
$(use_with debug expanded)
$(use_with !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="${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
}

View File

@ -1,498 +0,0 @@
# 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 ~arm64-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="${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
}

View File

@ -1,4 +1,4 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -165,7 +165,7 @@ 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 ~arm64-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~m68k ~mips ppc ppc64 ~riscv ~s390 ~sparc x86 ~arm64-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

View File

@ -1,4 +1,4 @@
# Copyright 1999-2025 Gentoo Authors
# Copyright 1999-2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@ -22,7 +22,7 @@ SRC_URI="
"
GENTOO_PATCH_DEV=sam
GENTOO_PATCH_PV=6.5_p20250531
GENTOO_PATCH_PV=6.6_p20260411
GENTOO_PATCH_NAME=${PN}-${GENTOO_PATCH_PV}-patches
# Populated below in a loop. Do not add patches manually here.
@ -43,60 +43,20 @@ if [[ ${PV} == *_p* ]] ; then
# 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
20251231
20260103
20260117
20260124
20260131
20260207
20260214
20260221
20260301
20260307
20260314
20260321
20260328
20260404
# Latest patch is just _pN = $(ver_cut 4)
$(ver_cut 4)
@ -138,11 +98,12 @@ 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 ~arm64-macos ~x64-macos ~x64-solaris"
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-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.
# is for. Just restrict them. Still seems to fail after
# https://lists.gnu.org/archive/html/bug-ncurses/2026-03/msg00013.html too.
RESTRICT="!test? ( test ) test"
# TODO: ncurses allows (and we take advantage of this, even) passing