summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-09-15 17:26:46 -0500
committerroot <root@alpha.trunkmasters.com>2026-09-15 17:26:46 -0500
commit55aad44920efe2d1d3f4ffdd4c2df83c13cfbd28 (patch)
tree8432b1894bf9cf6f5c5f2b763e74c61f7a4d140d
parent088e0ca78556300b2d083c91ff7daae04e3e4110 (diff)
downloadsrcux-55aad44920efe2d1d3f4ffdd4c2df83c13cfbd28.tar.gz
srcux-55aad44920efe2d1d3f4ffdd4c2df83c13cfbd28.tar.xz
srcux-55aad44920efe2d1d3f4ffdd4c2df83c13cfbd28.zip
Adding metadata
-rw-r--r--app-shells/bash/Manifest10
-rw-r--r--app-shells/bash/bash-5.3_p20.ebuild486
-rw-r--r--dev-util/grok-build/Manifest4
-rw-r--r--dev-util/grok-build/grok-build-1.0.16.ebuild113
-rw-r--r--dev-util/grok-build/grok-build-1.0.24.ebuild116
-rw-r--r--games-emulation/dosbox-staging/dosbox-staging-0.83.0.ebuild2
-rw-r--r--games-emulation/dosbox-staging/files/dosbox-staging-0.83.0-optional_mt32.patch30
-rw-r--r--sys-libs/readline/Manifest6
-rw-r--r--sys-libs/readline/readline-8.3_p6.ebuild257
9 files changed, 791 insertions, 233 deletions
diff --git a/app-shells/bash/Manifest b/app-shells/bash/Manifest
index b9a7f261952a..61f78a95cb44 100644
--- a/app-shells/bash/Manifest
+++ b/app-shells/bash/Manifest
@@ -479,3 +479,13 @@ DIST bash53-014 2229 BLAKE2B cb525fe154e792c467e06f0d930a09466f6f3cf5a688bf13abd
DIST bash53-014.sig 123 BLAKE2B 844560e7c4e1cc3335c1abe93391488cafa3338c69f67e51f49ce49cecdabf03be5c9e2d6c8b31b0dab2a52558f8ba5cde33841bba4b7a8c5688b0ca6d812e57 SHA512 bbf798db784109068d8fdc9e4e0bef4f6d12449b92efece20b157442bc959d39a595fb567784ef77b9cae9f1cd93204c49a4e163ca1b84408dbcf1b3eb25c24a
DIST bash53-015 2151 BLAKE2B 5d333c73b891910df4bf13c28fa0cc493dcadadb5c51a240501c5ab450b83673d75baece5c8112b937520cacfc726248ede1d30dba6b60075b88408b585b9f3f SHA512 812fbffd1b755cc9bbf730a4632f68a573351c4eeb5a4f495fa8f2f4dd7dbe1587dd22aed0f9c4d5c941130489ecc3def96068c77cc142680326ba8785862432
DIST bash53-015.sig 123 BLAKE2B 5e6c7ca967594097aef625a9146654867715dd850ca2116d46a0d3f5f31c8fbd0028c02d6b0dc9be9014710762f9a28506d8bbd6597c113b8bcd341d98e9a2c0 SHA512 33802e00732d4846c83da5fe178d5efb1f140adab510ff2d8135c70ee106e1204bffe7176ed0c244c870084c527ae76921793ace6ad80c7900662ccbd5d2ed07
+DIST bash53-016 4185 BLAKE2B 42c5f37c53609fe672956d55be1e26720e4b96715982b221350f60d01faeac61322839cc34b419915aa838945c7b5fba5bfbf1e5635d1fd65ae7b24fba99d574 SHA512 e18aed683aca1af8a92f955a0ad32a23ee22f982e1bec9ea4c078a8523b30e4848fd9dc4d863cb14d1fce25bf9fdbde2473d9c0686e8be25be113cb5a36cb462
+DIST bash53-016.sig 123 BLAKE2B 72cea3ea0dab5709bcd29bb601ea1cd00d861fc698da2bdf8d826a79e081fc913f6a8ec3ada0f4b280ddd891ab2d5ffcf17c4a111226e0b4d8163583e598fddf SHA512 67c7527014441138ab9edd1926bb1e45264c725ec336aef096f0df89b95c0d8ceb30b9f6583812860537f9901842ae27f2d6cd487ddecde0d6f5b1655cf26448
+DIST bash53-017 2229 BLAKE2B 1420ec8d92896a57e4aabf7f2bff32d2e13363d4e6031f0cfb2812f6baa5e4ed67d02110d431849c6d9003bb460ad458557278783786d9c7ec9fda7ea858572e SHA512 608245b580267e33ffa3ed02de7173a07594a9831e3b6a505bc6fa68570e3839663bad39552744ec61421179b000dc2584f48cbadb232fc2c1427871c899a1ad
+DIST bash53-017.sig 123 BLAKE2B 610c2e2ebf8341624c9a51bdaa9f34cd4d1a24811e068399ebf0fe472be2ee493c5e428d02379338a2f658f6ca41cd1038c6a7d49008908d81c333ff61965bef SHA512 84dbec0aeca5e3613b9c02e8ccad56eb385480d3a5cc748e8b8d3dd33ac0fa1f3c92c6f342ddbede8f544092e6c88748dd77eef70895b16d15023855e8386fb5
+DIST bash53-018 2660 BLAKE2B 6171f26a58db132d0705b27e0195f58b9fb71df8a46bfba309201ea9f2a2dfa0489ee9279ce7ba6f74733e6e8adad063435a6141d660f5287132bc4f4dd4333d SHA512 5a15dfb3dafddea9a62ef5d552660d425d0658a8254adabeed5c993264b6ac59f670e6a47e6847ef6598d60e553e834a08e09dfca3734ae119dcd7d36dca97d1
+DIST bash53-018.sig 123 BLAKE2B 7d11877a0c33718bc5c43d016a9972ba70b90f21b9b582b0b58493f5fbf5f15dd2167dfc731cae1567c91895cdaef704191a53a1642b47740ae86dcb0d27046e SHA512 08f58263ac3c9d6fe51e01f9af87268b3b73c3fe15ebd4a34b0deb946a6e93f0191e9d7f2b0419700d0b4a26f5c891db1685c9361694528c8d0e06d47444f698
+DIST bash53-019 5061 BLAKE2B e22297d57a7822fbe7faecd5fd44b221855a281c79b97feb7633677c9ab7cd10b63f7670ac534bee606e9f4272da9bdf1cda0588d737ad8c6fea179672e54060 SHA512 fecb787bf5b0c6589d5c891c8df205e39a83330e36dcb685a01ff1e117074db5288b22e7dfd3d4e9096267cc80decefd16d6837e4dd99bae26fdf3b6f9814c7c
+DIST bash53-019.sig 123 BLAKE2B 4c06ea904325e415cbfdf88254ffd1dfaa16c2085a0b95ef3ca89da630d44bbee04a0e0d8e1ab447768d7c60a3694adf110c58d20bb430ac196dd5f344d712f6 SHA512 1fa1a5111a5ba45cea901c4359b7edf02c9634e19501b04c7c8d7b90b8d5d7ddc46a005c3f7b7ec0cd3393c678938b820801d01b9811fd907929fc709217dc8c
+DIST bash53-020 1591 BLAKE2B dc01513a3d4b6bf30f1b1d6d549dd21bc05231848d325b53336970f3ed7984b6344f51c7af803fb8f99a430548137cae9672c939f928c916a83368b79e9af516 SHA512 64e34979fb20cab2e6b38bcd9ec470cb917de3ef2d53db7c96c71fb5245083e37d9c65a6c2935164da2b6dc97116e4210366b8253bdd7a201f618770a44135ab
+DIST bash53-020.sig 123 BLAKE2B 1b3801ab8a8af7fd5ed4514329497e5663d3a14d9c35aa91c2726ad3e25f4707b5502dd9697b86985ec050f57ea3d0fd4ae1206d9f05da4f88887e4233fe441e SHA512 6087449d8ad6f96f40fc166b9c5e838385f5538f5598545bfb5e3fa718161c0f41eb139e6ee1b9fa5fb5085007daa59b3afc7e065edda474777292517d4fe7b1
diff --git a/app-shells/bash/bash-5.3_p20.ebuild b/app-shells/bash/bash-5.3_p20.ebuild
new file mode 100644
index 000000000000..214a8bf8bc04
--- /dev/null
+++ b/app-shells/bash/bash-5.3_p20.ebuild
@@ -0,0 +1,486 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/chetramey.asc
+inherit flag-o-matic toolchain-funcs prefix verify-sig
+
+# Uncomment if we have a patchset.
+#GENTOO_PATCH_DEV="sam"
+#GENTOO_PATCH_VER="${PV}"
+
+MY_PV=${PV/_p*}
+MY_PV=${MY_PV/_/-}
+MY_P=${PN}-${MY_PV}
+MY_PATCHES=()
+
+# Determine the patchlevel. See https://ftp.gnu.org/gnu/bash/bash-5.3-patches/.
+case ${PV} in
+ 9999|*_alpha*|*_beta*|*_rc*)
+ # Set a negative patchlevel to indicate that it's a pre-release.
+ PLEVEL=-1
+ if [[ ${PV} =~ _pre[0-9]{8}$ ]]; then
+ BASH_COMMIT=
+ fi
+ ;;
+ *_p*)
+ PLEVEL=${PV##*_p}
+ ;;
+ *)
+ PLEVEL=0
+esac
+
+# The version of readline this bash normally ships with. Note that we only use
+# the bundled copy of readline for pre-releases.
+READLINE_VER="8.3"
+
+DESCRIPTION="The standard GNU Bourne again shell"
+HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html https://git.savannah.gnu.org/cgit/bash.git"
+
+if [[ ${PV} == 9999 ]]; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/bash.git"
+ EGIT_BRANCH=devel
+ inherit git-r3
+elif (( PLEVEL < 0 )) && [[ ${BASH_COMMIT} ]]; then
+ # It can be useful to have snapshots in the pre-release period once
+ # the first alpha is out, as various bugs get reported and fixed from
+ # the alpha, and the next pre-release is usually quite far away.
+ #
+ # i.e. if it's worth packaging the alpha, it's worth packaging a followup.
+ SRC_URI="https://git.savannah.gnu.org/cgit/bash.git/snapshot/bash-${BASH_COMMIT}.tar.gz -> ${P}-${BASH_COMMIT}.tar.gz"
+ S=${WORKDIR}/${PN}-${BASH_COMMIT}
+else
+ my_urls=( "mirror://gnu/bash/${MY_P}.tar.gz" )
+
+ # bash-5.1 -> bash51
+ my_p=${PN}$(ver_cut 1-2) my_p=${my_p/.}
+
+ for (( my_patch_idx = 1; my_patch_idx <= PLEVEL; my_patch_idx++ )); do
+ printf -v my_patch_ver %s-%03d "${my_p}" "${my_patch_idx}"
+ my_urls+=( "mirror://gnu/bash/${MY_P}-patches/${my_patch_ver}" )
+ MY_PATCHES+=( "${DISTDIR}/${my_patch_ver}" )
+ done
+
+ SRC_URI="${my_urls[*]} verify-sig? ( ${my_urls[*]/%/.sig} )"
+ S=${WORKDIR}/${MY_P}
+
+ unset -v my_urls my_p my_patch_idx my_patch_ver
+fi
+
+if [[ ${GENTOO_PATCH_VER} ]]; then
+ SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV:?}/distfiles/${CATEGORY}/${PN}/${PN}-${GENTOO_PATCH_VER:?}-patches.tar.xz"
+fi
+
+LICENSE="GPL-3+"
+SLOT="0"
+if (( PLEVEL >= 0 )); then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+fi
+IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline"
+
+DEPEND="
+ >=sys-libs/ncurses-5.2-r2:=
+ nls? ( virtual/libintl )
+"
+if (( PLEVEL >= 0 )); then
+ DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )"
+fi
+RDEPEND="
+ ${DEPEND}
+"
+# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011).
+BDEPEND="
+ pgo? ( dev-util/gperf )
+ verify-sig? ( sec-keys/openpgp-keys-chetramey )
+"
+
+# EAPI 8 tries to append it but it doesn't exist here.
+QA_CONFIGURE_OPTIONS="--disable-static"
+
+PATCHES=(
+ #"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/
+
+ # bug #971782
+ "${FILESDIR}"/${PN}-5.3_p9-general-workaround-aliasing-violation-in-REVERSE_LIS.patch
+
+ # bug #965423, bug #970713
+ "${FILESDIR}"/${PN}-5.3_p9-pid-reuse.patch
+
+ # Patches to or from Chet, posted to the bug-bash mailing list.
+ "${FILESDIR}"/${PN}-5.0-syslog-history-extern.patch
+)
+
+pkg_setup() {
+ # bug #7332
+ if is-flag -malign-double; then
+ eerror "Detected bad CFLAGS '-malign-double'. Do not use this"
+ eerror "as it breaks LFS (struct stat64) on x86."
+ die "remove -malign-double from your CFLAGS mr ricer"
+ fi
+
+ if use bashlogger; then
+ ewarn "The logging patch should ONLY be used in restricted (i.e. honeypot) envs."
+ ewarn "This will log ALL output you enter into the shell, you have been warned."
+ fi
+}
+
+src_unpack() {
+ local patch
+
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ elif (( PLEVEL < 0 )) && [[ ${BASH_COMMIT} ]]; then
+ default
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}/${MY_P}.tar.gz"{,.sig}
+
+ for patch in "${MY_PATCHES[@]}"; do
+ verify-sig_verify_detached "${patch}"{,.sig}
+ done
+ fi
+
+ unpack "${MY_P}.tar.gz"
+
+ if [[ ${GENTOO_PATCH_VER} ]]; then
+ unpack "${PN}-${GENTOO_PATCH_VER}-patches.tar.xz"
+ fi
+ fi
+}
+
+src_prepare() {
+ # Include official patches.
+ (( PLEVEL > 0 )) && eapply -p0 "${MY_PATCHES[@]}"
+
+ # Prefixify hardcoded path names. No-op for non-prefix.
+ hprefixify pathnames.h.in
+
+ # Avoid regenerating docs after patches, bug #407985.
+ sed -i -E '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in \
+ && touch -r . doc/* \
+ || die
+
+ # Sometimes hangs (more noticeable w/ pgo), bug #907403.
+ rm tests/run-jobs || die
+
+ eapply -p0 "${PATCHES[@]}"
+ eapply_user
+}
+
+src_configure() {
+ local -a myconf
+
+ # Upstream only test with Bison and require GNUisms like YYEOF and
+ # YYERRCODE. The former at least may be in POSIX soon:
+ # https://www.austingroupbugs.net/view.php?id=1269.
+ #
+ # configure warns on use of non-Bison but doesn't abort. The result
+ # may misbehave at runtime. Chet also advises against use of byacc:
+ # https://lists.gnu.org/archive/html/bug-bash/2025-08/msg00115.html
+ unset -v YACC
+
+ if tc-is-cross-compiler; then
+ export CC_FOR_BUILD="$(tc-getBUILD_CC)"
+ # https://lists.gnu.org/archive/html/bug-bash/2025-05/msg00029.html
+ export CFLAGS_FOR_BUILD="${BUILD_CFLAGS} -std=gnu17"
+
+ if use kernel_Hurd ; then
+ # Necessary for cross-built bash for Hurd, otherwise
+ # config.status generation at end of configure will hang
+ # natively.
+ #
+ # https://lists.debian.org/debian-cross/2023/11/msg00000.html
+ # https://lists.gnu.org/archive/html/bug-bash/2024-11/msg00202.html
+ # https://lists.gnu.org/archive/html/bug-bash/2005-04/msg00074.html
+ cat <<-EOF > builtins/psize.sh || die
+ #!/bin/sh
+ echo "#define PIPESIZE 16384"
+ EOF
+ chmod +x builtins/psize.sh || die
+ fi
+ fi
+
+ myconf=(
+ --disable-profiling
+
+ # Force linking with system curses ... the bundled termcap lib
+ # sucks bad compared to ncurses. For the most part, ncurses
+ # is here because readline needs it. But bash itself calls
+ # ncurses in one or two small places :(.
+ --with-curses
+
+ $(use_enable mem-scramble)
+ $(use_enable net net-redirections)
+ $(use_enable readline)
+ $(use_enable readline bang-history)
+ $(use_enable readline history)
+ $(use_with afs)
+ $(use_with mem-scramble bash-malloc)
+ )
+
+ # For descriptions of these, see config-top.h.
+ # bashrc/#26952 bash_logout/#90488 ssh/#24762 mktemp/#574426
+ append-cppflags \
+ -DDEFAULT_PATH_VALUE=\'\""${EPREFIX}"/usr/local/sbin:"${EPREFIX}"/usr/local/bin:"${EPREFIX}"/usr/sbin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/bin\"\' \
+ -DSTANDARD_UTILS_PATH=\'\""${EPREFIX}"/bin:"${EPREFIX}"/usr/bin:"${EPREFIX}"/sbin:"${EPREFIX}"/usr/sbin\"\' \
+ -DDEFAULT_LOADABLE_BUILTINS_PATH=\'\""${EPREFIX}"/usr/local/$(get_libdir)/bash:"${EPREFIX}"/usr/$(get_libdir)/bash\"\' \
+ -DSYS_BASHRC=\'\""${EPREFIX}"/etc/bash/bashrc\"\' \
+ -DSYS_BASH_LOGOUT=\'\""${EPREFIX}"/etc/bash/bash_logout\"\' \
+ -DNON_INTERACTIVE_LOGIN_SHELLS \
+ -DSSH_SOURCE_BASHRC \
+ $(use bashlogger && echo -DSYSLOG_HISTORY)
+
+ use nls || myconf+=( --disable-nls )
+
+ if (( PLEVEL >= 0 )); then
+ # Historically, we always used the builtin readline, but since
+ # our handling of SONAME upgrades has gotten much more stable
+ # in the PM (and the readline ebuild itself preserves the old
+ # libs during upgrades), linking against the system copy should
+ # be safe.
+ # Exact cached version here doesn't really matter as long as it
+ # is at least what's in the DEPEND up above.
+ export ac_cv_rl_version=${READLINE_VER%%_*}
+
+ # Use system readline only with released versions.
+ myconf+=( --with-installed-readline=. )
+ fi
+
+ if use plugins; then
+ append-ldflags "-Wl,-rpath,${EPREFIX}/usr/$(get_libdir)/bash"
+ else
+ # Disable the plugins logic by hand since bash doesn't provide
+ # a way of doing it.
+ export ac_cv_func_dl{close,open,sym}=no \
+ ac_cv_lib_dl_dlopen=no ac_cv_header_dlfcn_h=no
+
+ sed -i -e '/LOCAL_LDFLAGS=/s:-rdynamic::' configure || die
+ fi
+
+ # bug #444070
+ tc-export AR
+
+ econf "${myconf[@]}"
+}
+
+src_compile() {
+ local -a pgo_generate_flags pgo_use_flags
+ local flag
+
+ # -fprofile-partial-training because upstream notes the test suite isn't
+ # super comprehensive.
+ # https://documentation.suse.com/sbp/all/html/SBP-GCC-10/index.html#sec-gcc10-pgo
+ if use pgo; then
+ pgo_generate_flags=(
+ -fprofile-update=atomic
+ -fprofile-dir="${T}"/pgo
+ -fprofile-generate="${T}"/pgo
+ )
+ pgo_use_flags=(
+ -fprofile-use="${T}"/pgo
+ -fprofile-dir="${T}"/pgo
+ )
+ if flag=$(test-flags-CC -fprofile-partial-training); then
+ pgo_generate_flags+=( "${flag}" )
+ pgo_use_flags+=( "${flag}" )
+ fi
+ fi
+
+ emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}"
+ use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" all others
+
+ # Build Bash and run its tests to generate profiles.
+ if (( ${#pgo_generate_flags[@]} )); then
+ # Used in test suite.
+ unset -v A
+
+ emake CFLAGS="${CFLAGS} ${pgo_generate_flags[*]}" -k check
+
+ if tc-is-clang; then
+ llvm-profdata merge "${T}"/pgo --output="${T}"/pgo/default.profdata || die
+ fi
+
+ # Rebuild Bash using the profiling data we just generated.
+ emake clean
+ emake CFLAGS="${CFLAGS} ${pgo_use_flags[*]}"
+ use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} ${pgo_use_flags[*]}" all others
+ fi
+}
+
+src_test() {
+ # Used in test suite.
+ unset -v A
+
+ default
+}
+
+src_install() {
+ local d f
+
+ default
+
+ my_prefixify() {
+ while read -r; do
+ if [[ $REPLY == *$1* ]]; then
+ REPLY=${REPLY/"/etc/"/"${EPREFIX}/etc/"}
+ fi
+ printf '%s\n' "${REPLY}" || ! break
+ done < "$2" || die
+ }
+
+ dodir /bin
+ mv -- "${ED}"/usr/bin/bash "${ED}"/bin/ || die
+ dosym bash /bin/rbash
+
+ insinto /etc/bash
+ doins "${FILESDIR}"/bash_logout
+ my_prefixify bashrc.d "${FILESDIR}"/bashrc-r2 | newins - bashrc
+
+ insinto /etc/bash/bashrc.d
+ my_prefixify DIR_COLORS "${FILESDIR}"/bashrc.d/10-gentoo-color-r2.bash | newins - 10-gentoo-color.bash
+ newins "${FILESDIR}"/bashrc.d/10-gentoo-title-r3.bash 10-gentoo-title.bash
+
+ insinto /etc/profile.d
+ doins "${FILESDIR}/profile.d/00-prompt-command.sh"
+
+ insinto /etc/skel
+ for f in bash{_logout,_profile,rc}; do
+ newins "${FILESDIR}/skel/dot-${f}" ".${f}"
+ done
+
+ if use plugins; then
+ exeinto "/usr/$(get_libdir)/bash"
+ set -- examples/loadables/*.o
+ doexe "${@%.o}"
+
+ insinto /usr/include/bash-plugins
+ doins *.h builtins/*.h include/*.h lib/{glob/glob.h,tilde/tilde.h}
+ fi
+
+ if use examples; then
+ for d in examples/{functions,misc,scripts,startup-files}; do
+ exeinto "/usr/share/doc/${PF}/${d}"
+ docinto "${d}"
+ for f in "${d}"/*; do
+ if [[ ${f##*/} != @(PERMISSION|*README) ]]; then
+ doexe "${f}"
+ else
+ dodoc "${f}"
+ fi
+ done
+ done
+ fi
+
+ # Install bash_builtins.1 and rbash.1.
+ emake -C doc DESTDIR="${D}" install_builtins
+ sed 's:bash\.1:man1/&:' doc/rbash.1 > "${T}"/rbash.1 || die
+ doman "${T}"/rbash.1
+
+ newdoc CWRU/changelog ChangeLog
+ dosym bash.info /usr/share/info/bashref.info
+}
+
+pkg_preinst() {
+ if [[ -e ${EROOT}/etc/bashrc ]] && [[ ! -d ${EROOT}/etc/bash ]]; then
+ mkdir -p -- "${EROOT}"/etc/bash \
+ && mv -f -- "${EROOT}"/etc/bashrc "${EROOT}"/etc/bash/ \
+ || die
+ fi
+}
+
+pkg_postinst() {
+ local IFS old_ver ver
+ local -a versions
+
+ # If /bin/sh does not exist, provide it.
+ if [[ ! -e ${EROOT}/bin/sh ]]; then
+ ln -sf -- bash "${EROOT}"/bin/sh || die
+ fi
+
+ if [[ -e ${EROOT}/etc/bash/bashrc.d/15-gentoo-bashrc-check.bash ]]; then
+ ewarn "The following file is no longer packaged and can safely be deleted:"
+ ewarn "${EROOT}/etc/bash/bashrc.d/15-gentoo-bashrc-check.bash"
+ fi
+
+ read -rd '' -a versions <<<"${REPLACING_VERSIONS}"
+ for ver in "${versions[@]}"; do
+ if [[ ! ${old_ver} ]] || ver_test "${ver}" -lt "${old_ver}"; then
+ old_ver=${ver}
+ fi
+ done
+
+ if [[ ! ${old_ver} ]]; then
+ return
+ fi
+
+ {
+ if ver_test "${old_ver}" -ge "5.2" \
+ && ver_test "${old_ver}" -ge "5.2_p26-r8"
+ then
+ :
+ elif ver_test "${old_ver}" -lt "5.2" \
+ && ver_test "${old_ver}" -ge "5.1_p16-r8"
+ then
+ :
+ else
+ cat <<'EOF'
+Files under /etc/bash/bashrc.d must now have a suffix of .sh or .bash.
+
+Gentoo now defaults to defining PROMPT_COMMAND as an array. Depending on the
+characteristics of the operating environment, it may contain a command to set
+the terminal's window title. Those who were already choosing to customise the
+PROMPT_COMMAND variable are now advised to append their commands like so:
+
+PROMPT_COMMAND+=('custom command goes here')
+
+Gentoo no longer defaults to having bash set the window title in the case
+that the terminal is controlled by sshd(8), unless screen is launched on the
+remote side or the terminal reliably supports saving and restoring the title
+(as alacritty, foot and tmux do). Those wanting for the title to be set
+regardless may adjust ~/.bashrc - or create a custom /etc/bash/bashrc.d
+drop-in - to set PROMPT_COMMMAND like so:
+
+PROMPT_COMMAND=(genfun_set_win_title)
+
+Those who would prefer for bash never to interfere with the window title may
+now opt out of the default title setting behaviour, either with the "unset -v
+PROMPT_COMMAND" command or by re-defining PROMPT_COMMAND as desired.
+EOF
+ fi
+
+ if ver_test "${old_ver}" -ge "5.3" \
+ && ver_test "${old_ver}" -ge "5.3_p3-r3"
+ then
+ :
+ elif ver_test "${old_ver}" -lt "5.3" \
+ && ver_test "${old_ver}" -ge "5.2_p37-r5"
+ then
+ :
+ else
+ cat <<'EOF'
+The window title setting behaviour has been improved. It is now formatted as
+"\u@\h \W", in accordance with the prompting mechanism of bash. For example,
+after switching to the home directory, the current working directory will be
+shown as the <tilde> character.
+
+The value of PROMPT_DIRTRIM is now respected. If this variable is unset, the
+use of the \W prompt string escape will prevail, with the current working
+directory typically being shown as its basename. If set to 0 or greater, \w
+will be used instead, which may be trimmed. This also means that the title
+can be made to show the full path by setting PROMPT_DIRTRIM=0.
+
+For further information, run info '(bash)Bash Variables' or visit
+https://www.gnu.org/software/bash/manual/bash.html#index-PROMPT_005fDIRTRIM.
+EOF
+ fi
+ } \
+ | if [[ ${COLUMNS} == [1-9]*([0-9]) ]] && (( COLUMNS > 80 )); then
+ fmt -w "$(( COLUMNS - 3 ))"
+ else
+ cat
+ fi \
+ | while read -r; do
+ ewarn "${REPLY}"
+ done
+}
diff --git a/dev-util/grok-build/Manifest b/dev-util/grok-build/Manifest
index f209c7074148..2b7ce0a3aaec 100644
--- a/dev-util/grok-build/Manifest
+++ b/dev-util/grok-build/Manifest
@@ -1,8 +1,4 @@
DIST async-openai-95b52ebdedf42143083cf3d6f0e0be7c84e9c808.gh.tar.gz 28205999 BLAKE2B efc04b410749efc8f6e607e8f0dc5162070c47d7c8b61317185fe638f66b6441f08e6d72b5f8237e9ea448c3b750dba4222dab1d092de5f561a0d36478886eda SHA512 9ce341a035dd11070c7b24e03ab0ad0e21f8e49426626f84e22eac716054c47c01ef7b84147231908c999bee46af54007772c0fd53759f68846c752d3dd28652
-DIST grok-build-1.0.16-crates.tar.xz 91540604 BLAKE2B de78dd102425546638b911c111feccabe090fd942859369b249092e0d50e0ebfe2cdf2396c6c3f3bf9bbe7cef8743ae11291e09fcb36d8297a676372e2886f90 SHA512 1d38a1ceffed2fce78b948713a3c1f183d7c84cbe33d12e27b2e09129def6e31096e669941525ad72344992f0cdb811f35dbad65bb9896dc412b443e419c6613
-DIST grok-build-1.0.16.gh.tar.gz 15089581 BLAKE2B 287a201cf7510a3a1ddc62d6acf2eebb59a192f879393014bc05fa2031c643db917fdb0987770f629c056c1d611df3613b175e9793bd000cfe34643c6d3ee0dd SHA512 170de8cb3a079abc34a92ee6e82102fffaed5fc1c96ec151e842fe3111e7856899c48ad4378b3afb0201e9c4d051731872e4e5ba3bfb413241c4e65b835eca0f
-DIST grok-build-1.0.24-crates.tar.xz 95670580 BLAKE2B dc3223f413825b9acad1314017dc493429bb50f6d0c11be65c79d09aee757ad4ccd8234fbc56c573d2422ae5c5a0246be530ad21dd175ab5ed18bc414aca2215 SHA512 ae33ce5a2340499809f38d9bc0de568d7a41c6a82e89c48d8fb7f99c2bb5f50813c616b812a71687594091c33177613e6f68347bc0bb1619ce6d4a7a6d662870
-DIST grok-build-1.0.24.gh.tar.gz 15282296 BLAKE2B 58be7b132f090b5de6be8b9f5b4f5d902ac7266dc94e17601c199faa04d94c5eebe31174678be680f814f0b62a985902cccb8502bacc4b2b37415a9850bca190 SHA512 439c0f1c85edbb330b64b2925c1c320d55d4c505a47524339e55810f47a044a3d149652661381a7650b427e3700cac6cfceff222f679f38a0887b02cb769c552
DIST grok-build-1.0.32-crates.tar.xz 96212156 BLAKE2B e1ac09a71ad95b65ea172818774d27c7c132f07164ab0ce245365d902874050291a29e1e48387546e54136f3e3e49834df92e28e0cf9e3ef55a207598470a107 SHA512 7fc64a328ddeb0432f659c3d4bc2e641ba0b43cf4c079f49cbac3656d0541dd99a3589cfe2d12b71fa26a82a13c2e62982dfc5442246b44bae3b13c11298615d
DIST grok-build-1.0.32.gh.tar.gz 15928023 BLAKE2B 983cf7b9e492ac41d1fc83aa7160976eadd8fc68ac2c367c3d34305e251d1d484324917cf7d539ef2f013becd0cfc4605f433548219237c3daa7860c087e77bc SHA512 5eb07f536e5d0ce72dfb9170116d202553c8997c6ad400d7158190b62ad7651c3ad40671cf5cc58b4dacd934b23f4c39b4864670259f571f769a697dfe2b671d
DIST nucleo-5b74652e482f7c07d827f18c6d21e7540c242c69.gh.tar.gz 86764 BLAKE2B 006ac7e8c4c7e35a9fd690cd699c7c6d45f9368ed5ac8e1ad2b098128b530ef1f72aeccc6e87dd7d84f98b402f72313be8716f1eeae954b25898359f1037b41a SHA512 a8762638ef79da9dc344664342779c9aecb1b19facc23614d87b639d21b356aab3715cbdb51e541b7dd569a2d4e5cbf97591d4341e3ae538e5aa4a620f4f72f6
diff --git a/dev-util/grok-build/grok-build-1.0.16.ebuild b/dev-util/grok-build/grok-build-1.0.16.ebuild
deleted file mode 100644
index b96c9de63672..000000000000
--- a/dev-util/grok-build/grok-build-1.0.16.ebuild
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# Autogenerated by pycargoebuild 0.16.0
-
-EAPI=8
-
-RUST_MIN_VER="1.92.0"
-
-CRATES="
-"
-
-declare -A GIT_CRATES=(
- [async-openai-macros]='https://github.com/our-forks/async-openai;95b52ebdedf42143083cf3d6f0e0be7c84e9c808;async-openai-%commit%/async-openai-macros'
- [async-openai]='https://github.com/our-forks/async-openai;95b52ebdedf42143083cf3d6f0e0be7c84e9c808;async-openai-%commit%/async-openai'
- [nucleo-matcher]='https://github.com/helix-editor/nucleo;5b74652e482f7c07d827f18c6d21e7540c242c69;nucleo-%commit%/matcher'
- [nucleo]='https://github.com/helix-editor/nucleo;5b74652e482f7c07d827f18c6d21e7540c242c69;nucleo-%commit%'
-)
-
-inherit cargo check-reqs shell-completion
-
-# no tagged releases
-MY_COMMIT="38683198c71c9be623bf3f7346414ae1c330ac1c"
-DESCRIPTION="SpaceXAI's coding agent harness and TUI"
-HOMEPAGE="
- https://x.ai/cli
- https://x.ai/open-source
- https://github.com/xai-org/grok-build
-"
-SRC_URI="
- https://github.com/xai-org/${PN}/archive/${MY_COMMIT}.tar.gz -> ${P}.gh.tar.gz
- https://github.com/fasys-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz
- ${CARGO_CRATE_URIS}
-"
-S="${WORKDIR}/${PN}-${MY_COMMIT}"
-
-LICENSE="Apache-2.0"
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 BSD-2 BSD Boost-1.0 CC0-1.0 CDLA-Permissive-2.0 EPL-2.0
- ISC MIT MIT-0 MPL-2.0 MPL-2.0 Unicode-3.0 Unicode-DFS-2016 WTFPL-2
- ZLIB
-"
-SLOT="0"
-KEYWORDS="~amd64" # ~arm64: ugrep
-# TODO add feature USE flags?
-
-DEPEND="
- sys-apps/bfs
- sys-apps/ripgrep
- sys-apps/ugrep
- virtual/zlib:=
-"
-RDEPEND="${DEPEND}"
-BDEPEND="
- >=dev-libs/protobuf-25.6[protoc]
-"
-
-QA_FLAGS_IGNORED="usr/bin/.*"
-
-CHECKREQS_DISK_BUILD=10G # 9.7G
-
-pkg_setup() {
- check-reqs_pkg_setup
- rust_pkg_setup
-}
-
-src_prepare() {
- default
-
- # Do not bundle ripgrep
- local f
- for f in crates/codegen/xai-grok-{shell,tools}/build.rs; do
- sed \
- -e '1i #![allow(unreachable_code)]' \
- -e '/fn main()/a \ return Ok(());' \
- -i "$f" || die
- done
-
- # Disable auto-updates
- sed \
- -e '1i #![allow(unreachable_code)]' \
- -e '/fn env_installer(/a \ return Some("portage");' \
- -i crates/codegen/xai-grok-update/src/auto_update.rs || die
-
- # Cargo offline fetch workaround
- local url commit path
- IFS=";" read -r url commit path <<<"${GIT_CRATES[async-openai]}"
- local ASYNC_OPENAI_GIT="async-openai = { git = \"${url}.git\", rev = \"${commit}\""
- local ASYNC_OPENAI_PATH="async-openai = \\{ path = \"${WORKDIR}/async-openai-${commit}/async-openai\""
-
- sed "s|${ASYNC_OPENAI_GIT}|${ASYNC_OPENAI_PATH}|" \
- -i "${S}/Cargo.toml" || die
-}
-
-src_test() {
- # TODO more tests
- cargo_src_test --package xai-grok-pager-bin
-}
-
-src_install() {
- newbin "$(cargo_target_dir)/xai-grok-pager" grok
- dosym grok /usr/bin/agent
-
- local grok_bin="${ED}/usr/bin/grok"
- "${grok_bin}" completions bash > grok || die
- "${grok_bin}" completions fish > grok.fish || die
- "${grok_bin}" completions zsh > _grok || die
-
- dobashcomp grok
- dofishcomp grok.fish
- dozshcomp _grok
-}
diff --git a/dev-util/grok-build/grok-build-1.0.24.ebuild b/dev-util/grok-build/grok-build-1.0.24.ebuild
deleted file mode 100644
index 744d0b1f3316..000000000000
--- a/dev-util/grok-build/grok-build-1.0.24.ebuild
+++ /dev/null
@@ -1,116 +0,0 @@
-# Copyright 2026 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-# Autogenerated by pycargoebuild 0.16.0
-
-EAPI=8
-
-RUST_MIN_VER="1.92.0"
-
-CRATES="
-"
-
-declare -A GIT_CRATES=(
- [async-openai-macros]='https://github.com/our-forks/async-openai;95b52ebdedf42143083cf3d6f0e0be7c84e9c808;async-openai-%commit%/async-openai-macros'
- [async-openai]='https://github.com/our-forks/async-openai;95b52ebdedf42143083cf3d6f0e0be7c84e9c808;async-openai-%commit%/async-openai'
- [nucleo-matcher]='https://github.com/helix-editor/nucleo;5b74652e482f7c07d827f18c6d21e7540c242c69;nucleo-%commit%/matcher'
- [nucleo]='https://github.com/helix-editor/nucleo;5b74652e482f7c07d827f18c6d21e7540c242c69;nucleo-%commit%'
-)
-
-inherit cargo check-reqs linux-info shell-completion
-
-# no tagged releases
-MY_COMMIT="f21225f2d463e1629769c7b4939807923c0ef83e"
-DESCRIPTION="SpaceXAI's coding agent harness and TUI"
-HOMEPAGE="
- https://x.ai/cli
- https://x.ai/open-source
- https://github.com/xai-org/grok-build
-"
-SRC_URI="
- https://github.com/xai-org/${PN}/archive/${MY_COMMIT}.tar.gz -> ${P}.gh.tar.gz
- https://github.com/fasys-crate-dist/${PN}/releases/download/v${PV}/${P}-crates.tar.xz
- ${CARGO_CRATE_URIS}
-"
-S="${WORKDIR}/${PN}-${MY_COMMIT}"
-
-LICENSE="Apache-2.0"
-# Dependent crate licenses
-LICENSE+="
- Apache-2.0 BSD-2 BSD Boost-1.0 CC0-1.0 CDLA-Permissive-2.0 EPL-2.0
- ISC MIT MIT-0 MPL-2.0 MPL-2.0 Unicode-3.0 Unicode-DFS-2016 WTFPL-2
- ZLIB
-"
-SLOT="0"
-KEYWORDS="~amd64" # ~arm64: ugrep
-# TODO add feature USE flags?
-
-DEPEND="
- sys-apps/bfs
- sys-apps/ripgrep
- sys-apps/ugrep
- virtual/zlib:=
-"
-RDEPEND="${DEPEND}"
-BDEPEND="
- >=dev-libs/protobuf-25.6[protoc]
-"
-
-QA_FLAGS_IGNORED="usr/bin/.*"
-
-CHECKREQS_DISK_BUILD=10G # 9.7G
-
-pkg_setup() {
- local CONFIG_CHECK="~SECURITY_LANDLOCK"
-
- check-reqs_pkg_setup
- linux-info_pkg_setup
- rust_pkg_setup
-}
-
-src_prepare() {
- default
-
- # Do not bundle ripgrep
- local f
- for f in crates/codegen/xai-grok-{shell,tools}/build.rs; do
- sed \
- -e '1i #![allow(unreachable_code)]' \
- -e '/fn main()/a \ return Ok(());' \
- -i "$f" || die
- done
-
- # Disable auto-updates
- sed \
- -e '1i #![allow(unreachable_code)]' \
- -e '/fn env_installer(/a \ return Some("portage");' \
- -i crates/codegen/xai-grok-update/src/auto_update.rs || die
-
- # Cargo offline fetch workaround
- local url commit path
- IFS=";" read -r url commit path <<<"${GIT_CRATES[async-openai]}"
- local ASYNC_OPENAI_GIT="async-openai = { git = \"${url}.git\", rev = \"${commit}\""
- local ASYNC_OPENAI_PATH="async-openai = \\{ path = \"${WORKDIR}/async-openai-${commit}/async-openai\""
-
- sed "s|${ASYNC_OPENAI_GIT}|${ASYNC_OPENAI_PATH}|" \
- -i "${S}/Cargo.toml" || die
-}
-
-src_test() {
- # TODO more tests
- cargo_src_test --package xai-grok-pager-bin
-}
-
-src_install() {
- newbin "$(cargo_target_dir)/xai-grok-pager" grok
- dosym grok /usr/bin/agent
-
- local grok_bin="${ED}/usr/bin/grok"
- "${grok_bin}" completions bash > grok || die
- "${grok_bin}" completions fish > grok.fish || die
- "${grok_bin}" completions zsh > _grok || die
-
- dobashcomp grok
- dofishcomp grok.fish
- dozshcomp _grok
-}
diff --git a/games-emulation/dosbox-staging/dosbox-staging-0.83.0.ebuild b/games-emulation/dosbox-staging/dosbox-staging-0.83.0.ebuild
index 94a10835d6f3..29a6c774e756 100644
--- a/games-emulation/dosbox-staging/dosbox-staging-0.83.0.ebuild
+++ b/games-emulation/dosbox-staging/dosbox-staging-0.83.0.ebuild
@@ -35,6 +35,7 @@ RDEPEND="debug? ( sys-libs/ncurses:0= )
media-libs/libpng:0=
media-libs/libsdl2[alsa,joystick,opengl?,sound,video,X]
media-libs/opusfile
+ media-libs/sdl2-image
media-libs/speexdsp
media-sound/fluid-soundfont
media-sound/fluidsynth
@@ -45,6 +46,7 @@ DEPEND="${RDEPEND}"
BDEPEND="test? ( dev-cpp/gtest )
sc55? ( virtual/pkgconfig )"
+PATCHES=( "${FILESDIR}"/${P}-optional_mt32.patch )
DOCS=( README.md docs/AUTHORS )
src_prepare() {
diff --git a/games-emulation/dosbox-staging/files/dosbox-staging-0.83.0-optional_mt32.patch b/games-emulation/dosbox-staging/files/dosbox-staging-0.83.0-optional_mt32.patch
new file mode 100644
index 000000000000..eb96c2478f76
--- /dev/null
+++ b/games-emulation/dosbox-staging/files/dosbox-staging-0.83.0-optional_mt32.patch
@@ -0,0 +1,30 @@
+From c90051dbbfd5781964db9d9d5b20a32b4fdefaf6 Mon Sep 17 00:00:00 2001
+From: Maseru898 <marcel.weissenbach@miraclelinux.com>
+Date: Mon, 15 Jun 2026 18:04:52 +0900
+Subject: [PATCH] build: Only require MT32 Package when actually enabled
+
+Currently the find_package runs unrelated to the variable check which causes it to always get executed. Moved it to its correct place so it only gets executed if building with MT32 is actually requested by setting the variable
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 399899d1eb8..0eb03b50162 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -340,6 +340,7 @@ endif()
+ option(OPT_MT32EMU "Enable Roland MT-32 emulation support" ON)
+ if (OPT_MT32EMU)
+ set(C_MT32EMU ON)
++ find_package(MT32Emu REQUIRED)
+ endif()
+
+ if (OPT_DEBUGGER)
+@@ -488,7 +489,6 @@ find_package(SDL2_image CONFIG REQUIRED)
+ find_package(iir REQUIRED)
+ find_package(PNG REQUIRED)
+ find_package(OpenGL REQUIRED)
+-find_package(MT32Emu REQUIRED)
+ find_package(FluidSynth REQUIRED CONFIG)
+ if (C_ALSA)
+ find_package(ALSA REQUIRED)
diff --git a/sys-libs/readline/Manifest b/sys-libs/readline/Manifest
index e5b374c9d95e..a07fb84af459 100644
--- a/sys-libs/readline/Manifest
+++ b/sys-libs/readline/Manifest
@@ -36,3 +36,9 @@ DIST readline83-002 1613 BLAKE2B bb07c3e1663b36988e59721d8e8054022726f6adc2160cb
DIST readline83-002.sig 95 BLAKE2B 8d5294bf74b4a6aff7408b827a12607da2b824295e4b9d4827825d053701f796580fe38029a62188aec9529a2801183ea4b10e40913e1039ee501f95a3a38a07 SHA512 4dbed1ad56a3be4f750544694164a1fdfbc8795cb0efb991cd0e84c8f4f97d8a69b239de90060aac5957fccf177c897bdd55667173bfd812261844d01d2c50b3
DIST readline83-003 2284 BLAKE2B 39f48eefef1840460aa418a070813dd284893e74dddad5fb44230498a7991148e9681be89b30e98fe805a67b3093360c883a16a26a7f103548f36c899f9359da SHA512 6b3ebffe994d0cd4d3466b15e3aee9a73613109283a4442f3bf10e28edcd1204df824c71356d66d01ac21014a806023a101fedf94526a19f6f590d9ffdc864cd
DIST readline83-003.sig 95 BLAKE2B 1735f682249205cb0e1b0d81ef603d0f87fa3604f65634e66d851da747111abc36d82895480f283c93ef757483f85bba1f081f69c0d200a8d908dfd2d49974a4 SHA512 2e90acc5820fc2a6f5f63520dc66301c64a1636f6134d684d62560c235ba7a0a8fd4c0caad054d09021084fe201a171f3b776cc4814f212f8165aa6f67d007de
+DIST readline83-004 2112 BLAKE2B 401263120f2b21cae9c71385a73ab49415dcfe44c197cc5af4157e9c228be26da78ef24d31001f11ab78d422425a23f8edc6176e3cf5783b9f9df035aa65b00b SHA512 406ec17b77389f9416c2bed824fea29b6661cde8892437a08067214c9ba92ae64083d79cee7ebef90bbccf0be94d0e43012a21d74c8b8bb36024ff4d353a3a9d
+DIST readline83-004.sig 123 BLAKE2B dc94a53ab1bd058d560fc48a7d57da47d60724fd02f392a944ff7942822c81695291f6a479d81e8b41dbba25bf4c4b88e4adfcada3c9a746664ef671bdaf87c7 SHA512 ed331cb0203cfa3837ace170a662c1ae5a31214602510044e09fb88d5b9c701aa3d31a5baaaf6e55a3e95544c18333790fe5a9b7263b5c4f53421d65d33f3514
+DIST readline83-005 2511 BLAKE2B d21bc0a8e23d0f72569924fd7879f54b132873611823d4ccf93c6449b2beaf64819b1d018df48f90e6b3d977f97fdeb623832615d176c1561935d412dcdcd919 SHA512 2a4992bab4382e55456d33328c003c16e94da0c7dbad38b5064d570181823338d37ef756f422413f18a702a93f0ae0606f34ecb8ceaf35c89affac7aefb73265
+DIST readline83-005.sig 123 BLAKE2B eeab8c2686707372066befac752da034a52d7b0ffed9b4b703f3b0a95cb78fca89ce1c36730a391a44105ec23f807c7329b8f24a1e42a8c545d27681872d779a SHA512 842a5c192314961fbc097614a8c1bccbdf01f87190579339ebc98ff81e6e1647637429cf18480178c24e0f066226b417a614d45bc34b4d53b839cab7b6d08b62
+DIST readline83-006 1422 BLAKE2B 2ade2b861a51de18e8ec42a218198b50da3da75179cde0aeafa16005d2e5ba73ce97426e373eb72ca046c67bce9346f4ffb75f452290dfbeb9b540de0982d0fd SHA512 f3fb51f24c0d635a4b23e3b23ef6ade5c20adbc7a47dd42a2a5c020ae5ee694a662102af2aeb61895625477342fa4d8832dce3ad7ee4e8e5ee422caea8ed36c8
+DIST readline83-006.sig 123 BLAKE2B fcfa8ff25381c3ccf1ae83513e34f8f634ea3cc7db7db1d3ff8a0de10a53e5f21f5b01cb381577aba110970d1952e590e8da1f351ba44277db2ac8f184c9a475 SHA512 45d44100c0453215f030dc9f0bd0cfcbc69901c6ba7baff84ed411c4038e2965f6279ef076ae45ee76f0c0d271102eaeed0400379d3a3b345975cc2f39f0c0fe
diff --git a/sys-libs/readline/readline-8.3_p6.ebuild b/sys-libs/readline/readline-8.3_p6.ebuild
new file mode 100644
index 000000000000..24a840f7f08a
--- /dev/null
+++ b/sys-libs/readline/readline-8.3_p6.ebuild
@@ -0,0 +1,257 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+# There's no standard way of versioning the point releases upstream
+# make anyway, so while this was added for RC versions, it's fine
+# in general.
+QA_PKGCONFIG_VERSION=$(ver_cut 1-2)
+VERIFY_SIG_OPENPGP_KEY_PATH=/usr/share/openpgp-keys/chetramey.asc
+inherit flag-o-matic multilib multilib-minimal preserve-libs toolchain-funcs verify-sig
+
+# Official patches
+# See ftp://ftp.cwru.edu/pub/bash/readline-8.1-patches/
+PLEVEL="${PV##*_p}"
+MY_PV="${PV/_p*}"
+MY_PV="${MY_PV/_/-}"
+MY_P="${PN}-${MY_PV}"
+MY_PATCHES=()
+
+# Determine the patchlevel.
+case ${PV} in
+ 9999|*_alpha*|*_beta*|*_rc*)
+ # Set a negative patchlevel to indicate that it's a pre-release.
+ PLEVEL=-1
+ ;;
+ *_p*)
+ PLEVEL=${PV##*_p}
+ ;;
+ *)
+ PLEVEL=0
+esac
+
+DESCRIPTION="Another cute console display library"
+HOMEPAGE="https://tiswww.case.edu/php/chet/readline/rltop.html https://git.savannah.gnu.org/cgit/readline.git"
+
+if [[ ${PV} == 9999 ]] ; then
+ EGIT_REPO_URI="https://git.savannah.gnu.org/git/readline.git"
+ EGIT_BRANCH=devel
+ inherit git-r3
+elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then
+ # It can be useful to have snapshots in the pre-release period once
+ # the first alpha is out, as various bugs get reported and fixed from
+ # the alpha, and the next pre-release is usually quite far away.
+ #
+ # i.e. if it's worth packaging the alpha, it's worth packaging a followup.
+ READLINE_COMMIT="7cf2d923617659d216db3210f6247740f7dde1d8"
+ SRC_URI="https://git.savannah.gnu.org/cgit/readline.git/snapshot/readline-${READLINE_COMMIT}.tar.gz -> ${P}-${READLINE_COMMIT}.tar.gz"
+ S=${WORKDIR}/${PN}-${READLINE_COMMIT}
+else
+ SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz"
+ SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig )"
+ S="${WORKDIR}/${MY_P}"
+
+ if [[ ${PLEVEL} -gt 0 ]] ; then
+ # bash-5.1 -> bash51
+ my_p=${PN}$(ver_rs 1-2 '' $(ver_cut 1-2))
+
+ patch_url=
+ my_patch_index=
+
+ upstream_url_base="mirror://gnu/readline"
+
+ for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ; my_patch_index++)) ; do
+ printf -v mangled_patch_ver ${my_p}-%03d ${my_patch_index}
+ patch_url="${upstream_url_base}/${MY_P}-patches/${mangled_patch_ver}"
+
+ SRC_URI+=" ${patch_url}"
+ SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
+
+ MY_PATCHES+=( "${DISTDIR}"/${mangled_patch_ver} )
+ done
+
+ unset my_p patch_url my_patch_index upstream_url_base
+ fi
+fi
+
+LICENSE="GPL-3+"
+SLOT="0/8" # subslot matches SONAME major
+if (( PLEVEL >= 0 )); then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris"
+fi
+IUSE="static-libs +unicode utils"
+
+RDEPEND=">=sys-libs/ncurses-5.9-r3:=[static-libs?,unicode(+)?,${MULTILIB_USEDEP}]"
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ verify-sig? ( sec-keys/openpgp-keys-chetramey )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-5.0-no_rpath.patch
+ "${FILESDIR}"/${PN}-7.0-headers.patch
+ "${FILESDIR}"/${PN}-8.0-headers.patch
+)
+
+src_unpack() {
+ local patch
+
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ elif (( PLEVEL < 0 )) && [[ ${PV} == *_p* ]] ; then
+ default
+ else
+ if use verify-sig; then
+ verify-sig_verify_detached "${DISTDIR}/${MY_P}.tar.gz"{,.sig}
+
+ for patch in "${MY_PATCHES[@]}"; do
+ verify-sig_verify_detached "${patch}"{,.sig}
+ done
+ fi
+
+ unpack "${MY_P}.tar.gz"
+
+ if [[ ${GENTOO_PATCH_VER} ]]; then
+ unpack "${PN}-${GENTOO_PATCH_VER}-patches.tar.xz"
+ fi
+ fi
+}
+
+src_prepare() {
+ (( PLEVEL > 0 )) && eapply -p0 "${MY_PATCHES[@]}"
+
+ default
+
+ #(( PLEVEL < 0 )) && eautoreconf
+
+ if use prefix && ! type -P $(tc-getPKG_CONFIG) > /dev/null ; then
+ # If we're bootstrapping, make a guess. We don't have pkg-config
+ # around yet. bug #818103.
+ # Incorrectly populating this leads to underlinked libreadline.
+ local ncurses_libs
+ local ncurses_libs_suffix=$(usex unicode w '')
+
+ ncurses_libs="-lncurses${ncurses_libs_suffix}"
+
+ if has_version "sys-libs/ncurses[tinfo(+)]" ; then
+ ncurses_libs+=" -ltinfo${ncurses_libs_suffix}"
+ fi
+ else
+ # Force ncurses linking, bug #71420.
+ # Use pkg-config to get the right values, bug #457558.
+ local ncurses_libs=$($(tc-getPKG_CONFIG) ncurses$(usex unicode w '') --libs || die)
+ fi
+
+ sed -i \
+ -e "/^SHLIB_LIBS=/s:=.*:='${ncurses_libs}':" \
+ support/shobj-conf || die
+ sed -i \
+ -e "/[[:space:]]*LIBS=.-lncurses/s:-lncurses:${ncurses_libs}:" \
+ examples/rlfe/configure || die
+
+ # Fix building under Gentoo/FreeBSD; upstream FreeBSD deprecated
+ # objformat for years, so we don't want to rely on that.
+ sed -i -e '/objformat/s:if .*; then:if true; then:' support/shobj-conf || die
+
+ # For local readline headers
+ ln -s ../.. examples/rlfe/readline || die
+}
+
+src_configure() {
+ # Fix implicit decls with widechar funcs
+ append-cppflags -D_GNU_SOURCE
+ # https://lists.gnu.org/archive/html/bug-readline/2010-07/msg00013.html
+ append-cppflags -Dxrealloc=_rl_realloc -Dxmalloc=_rl_malloc -Dxfree=_rl_free
+
+ # Make sure configure picks a better ar than `ar`, bug #484866
+ export ac_cv_prog_AR="$(tc-getAR)"
+
+ # Force the test since we used sed above to force it.
+ export bash_cv_termcap_lib=ncurses
+
+ # Control cross-compiling cases when we know the right answer.
+ # In cases where the C library doesn't support wide characters, readline
+ # itself won't work correctly, so forcing the answer below should be OK.
+ if tc-is-cross-compiler ; then
+ export bash_cv_func_sigsetjmp="present"
+ export bash_cv_func_ctype_nonascii="yes"
+ # bug #503312
+ export bash_cv_wcwidth_broken="no"
+ fi
+
+ # This is for rlfe, but we need to make sure LDFLAGS doesn't change
+ # so we can re-use the config cache file between the two.
+ append-ldflags -L.
+
+ multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+ local myeconfargs=(
+ --cache-file="${BUILD_DIR}"/config.cache
+ --with-curses
+ $(use_enable static-libs static)
+ )
+
+ ECONF_SOURCE="${S}" econf "${myeconfargs[@]}"
+
+ if use utils && multilib_is_native_abi && ! tc-is-cross-compiler ; then
+ # Code is full of AC_TRY_RUN()
+ mkdir -p examples/rlfe || die
+ cd examples/rlfe || die
+
+ ECONF_SOURCE="${S}"/examples/rlfe econf --cache-file="${BUILD_DIR}"/config.cache
+ fi
+}
+
+multilib_src_compile() {
+ emake
+
+ if use utils && multilib_is_native_abi && ! tc-is-cross-compiler ; then
+ # Code is full of AC_TRY_RUN()
+ cd examples/rlfe || die
+ local l
+ for l in readline history ; do
+ ln -s ../../shlib/lib${l}$(get_libname)* lib${l}$(get_libname) || die
+ ln -s ../../lib${l}.a lib${l}.a || die
+ done
+ emake
+ fi
+}
+
+multilib_src_install() {
+ default
+
+ if multilib_is_native_abi ; then
+ if use utils && ! tc-is-cross-compiler; then
+ dobin examples/rlfe/rlfe
+ fi
+ fi
+}
+
+multilib_src_install_all() {
+ HTML_DOCS="doc/history.html doc/readline.html doc/rluserman.html" einstalldocs
+
+ dodoc USAGE
+ docinto ps
+ dodoc doc/*.ps
+}
+pkg_preinst() {
+ # bug #29865
+ # Reappeared in bug #595324 with paludis so keeping this for now...
+ preserve_old_lib \
+ /$(get_libdir)/lib{history,readline}$(get_libname 4) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 5) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 6) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 7)
+}
+
+pkg_postinst() {
+ preserve_old_lib_notify \
+ /$(get_libdir)/lib{history,readline}$(get_libname 4) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 5) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 6) \
+ /$(get_libdir)/lib{history,readline}$(get_libname 7)
+}