commit: d3c19b7974aeb4ac2a1351a019e80625b4111c4b
Author: Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Aug 26 22:31:37 2022 +0000
Commit: Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Aug 26 22:44:14 2022 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=d3c19b79
app-shells/bash: drop use of 'eval' for newer versions for patch generation
Use similar approach as dev-libs/mpfr and sys-libs/readline
for generating SRC_URI & patch list.
Signed-off-by: Sam James <sam <AT> gentoo.org>
...{bash-5.2_rc2.ebuild => bash-5.1_p16-r2.ebuild} | 149 +++++++++------------
app-shells/bash/bash-5.2_rc2.ebuild | 51 ++++---
app-shells/bash/bash-5.2_rc3.ebuild | 51 ++++---
app-shells/bash/bash-9999.ebuild | 51 ++++---
4 files changed, 157 insertions(+), 145 deletions(-)
diff --git a/app-shells/bash/bash-5.2_rc2.ebuild
b/app-shells/bash/bash-5.1_p16-r2.ebuild
similarity index 66%
copy from app-shells/bash/bash-5.2_rc2.ebuild
copy to app-shells/bash/bash-5.1_p16-r2.ebuild
index d451bde867f0..27cc205c5d91 100644
--- a/app-shells/bash/bash-5.2_rc2.ebuild
+++ b/app-shells/bash/bash-5.1_p16-r2.ebuild
@@ -3,16 +3,12 @@
EAPI=7
-# TODO on release:
-# - check READLINE_VER, obviously
-# (presumably there weren't always readline releases for bash RCs etc)
-
VERIFY_SIG_OPENPGP_KEY_PATH="${BROOT}"/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}"
+GENTOO_PATCH_DEV="sam"
+GENTOO_PATCH_VER="${PV}"
# Official patchlevel
# See ftp://ftp.cwru.edu/pub/bash/bash-5.1-patches/
@@ -20,85 +16,83 @@ PLEVEL="${PV##*_p}"
MY_PV="${PV/_p*}"
MY_PV="${MY_PV/_/-}"
MY_P="${PN}-${MY_PV}"
+MY_PATCHES=()
+
is_release() {
case ${PV} in
- 9999|*_alpha*|*_beta*|*_rc*) return 1 ;;
- *) return 0 ;;
+ *_alpha*|*_beta*|*_rc*)
+ return 1
+ ;;
+ *)
+ return 0
+ ;;
esac
}
+
[[ ${PV} != *_p* ]] && PLEVEL=0
-patches() {
- local opt=${1} plevel=${2:-${PLEVEL}} pn=${3:-${PN}} pv=${4:-${MY_PV}}
- [[ ${plevel} -eq 0 ]] && return 1
- eval set -- {1..${plevel}}
- set -- $(printf "${pn}${pv/\.}-%03d " "$@")
- if [[ ${opt} == -s ]] ; then
- echo "${@/#/${DISTDIR}/}"
- else
- local u
- for u in mirror://gnu/${pn} ftp://ftp.cwru.edu/pub/bash ; do
- printf "${u}/${pn}-${pv}-patches/%s " "$@"
- printf "${u}/${pn}-${pv}-patches/%s.asc " "$@"
- done
- fi
-}
# The version of readline this bash normally ships with.
-# Note: right now, we don't use the system copy of readline for bash for
non-releases.
-READLINE_VER="8.2"
+READLINE_VER="8.1"
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 is_release ; then
- SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)"
+HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html"
+
+if is_release ; then
+ SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
+
+ 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=
+
+ for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ;
my_patch_index++)) ; do
+ for url in mirror://gnu/${pn}
ftp://ftp.cwru.edu/pub/bash ; do
+ patch_url=$(printf "${url}/${PN}-$(ver_cut
1-2)-patches/${my_p}-%03d" ${my_patch_index})
+ SRC_URI+=" ${patch_url}"
+ SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
+
+ done
+
+ MY_PATCHES+=( "${DISTDIR}"/$(printf ${my_p}-%03d
${my_patch_index}) )
+ done
+
+ unset my_pn patch_url my_patch_index
+ fi
else
- SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
- SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
+ SRC_URI="ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
+ SRC_URI+=" verify-sig? ( ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig
)"
fi
if [[ -n ${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+"
+LICENSE="GPL-3"
SLOT="0"
-if is_release ; then
- KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64
~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos
~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
-fi
-IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline"
+[[ "${PV}" == *_rc* ]] || \
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64
~riscv ~s390 ~sparc ~x86 ~x64-cygwin ~amd64-linux ~x86-linux ~ppc-macos
~x64-macos ~sparc-solaris ~sparc64-solaris ~x64-solaris ~x86-solaris"
+IUSE="afs bashlogger examples mem-scramble +net nls plugins +readline"
DEPEND="
- >=sys-libs/ncurses-5.2-r2:=
+ >=sys-libs/ncurses-5.2-r2:0=
nls? ( virtual/libintl )
+ readline? ( >=sys-libs/readline-${READLINE_VER}:0= )
"
-if is_release ; then
- DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )"
-fi
RDEPEND="
${DEPEND}
"
# We only need yacc when the .y files get patched (bash42-005, bash51-011)
-#BDEPEND="virtual/yacc"
-BDEPEND="
- pgo? ( dev-util/gperf )
- verify-sig? ( sec-keys/openpgp-keys-chetramey )
-"
+BDEPEND="virtual/yacc
+ verify-sig? ( sec-keys/openpgp-keys-chetramey )"
S="${WORKDIR}/${MY_P}"
-# EAPI 8 tries to append it but it doesn't exist here
-QA_CONFIGURE_OPTIONS="--disable-static"
-
PATCHES=(
- #"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/
-
# Patches from Chet sent to bashbug ml
- "${FILESDIR}"/${PN}-5.0-syslog-history-extern.patch
+
"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}-patches/${PN}-5.0-syslog-history-extern.patch
)
pkg_setup() {
@@ -133,7 +127,7 @@ src_unpack() {
src_prepare() {
# Include official patches
- [[ ${PLEVEL} -gt 0 ]] && eapply -p0 $(patches -s)
+ [[ ${PLEVEL} -gt 0 ]] && eapply -p0 "${MY_PATCHES[@]}"
# Clean out local libs so we know we use system ones w/releases.
if is_release ; then
@@ -189,16 +183,16 @@ src_configure() {
#use static && export LDFLAGS="${LDFLAGS} -static"
use nls || myconf+=( --disable-nls )
- if is_release ; 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%%_*}
+ # 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%%_*}
+ if is_release ; then
# Use system readline only with released versions.
myconf+=( --with-installed-readline=. )
fi
@@ -223,34 +217,13 @@ src_configure() {
}
src_compile() {
- if use pgo ; then
- # Build Bash and run its tests to generate profiles.
- emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo
-fprofile-dir=${T}/pgo"
-
- # Used in test suite.
- unset A
+ emake
- emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo
-fprofile-dir=${T}/pgo" -k check
-
- # Rebuild Bash using the profiling data we just generated.
- emake clean
- emake CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo
-fprofile-dir=${T}/pgo"
-
- use plugins && emake -C examples/loadables CFLAGS="${CFLAGS}
-fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo" all others
- else
- emake
-
- use plugins && emake -C examples/loadables all others
+ if use plugins ; then
+ emake -C examples/loadables all others
fi
}
-src_test() {
- # Used in test suite.
- unset A
-
- default
-}
-
src_install() {
local d f
diff --git a/app-shells/bash/bash-5.2_rc2.ebuild
b/app-shells/bash/bash-5.2_rc2.ebuild
index d451bde867f0..847e52506d7f 100644
--- a/app-shells/bash/bash-5.2_rc2.ebuild
+++ b/app-shells/bash/bash-5.2_rc2.ebuild
@@ -20,28 +20,20 @@ PLEVEL="${PV##*_p}"
MY_PV="${PV/_p*}"
MY_PV="${MY_PV/_/-}"
MY_P="${PN}-${MY_PV}"
+MY_PATCHES=()
+
is_release() {
case ${PV} in
- 9999|*_alpha*|*_beta*|*_rc*) return 1 ;;
- *) return 0 ;;
+ 9999|*_alpha*|*_beta*|*_rc*)
+ return 1
+ ;;
+ *)
+ return 0
+ ;;
esac
}
+
[[ ${PV} != *_p* ]] && PLEVEL=0
-patches() {
- local opt=${1} plevel=${2:-${PLEVEL}} pn=${3:-${PN}} pv=${4:-${MY_PV}}
- [[ ${plevel} -eq 0 ]] && return 1
- eval set -- {1..${plevel}}
- set -- $(printf "${pn}${pv/\.}-%03d " "$@")
- if [[ ${opt} == -s ]] ; then
- echo "${@/#/${DISTDIR}/}"
- else
- local u
- for u in mirror://gnu/${pn} ftp://ftp.cwru.edu/pub/bash ; do
- printf "${u}/${pn}-${pv}-patches/%s " "$@"
- printf "${u}/${pn}-${pv}-patches/%s.asc " "$@"
- done
- fi
-}
# The version of readline this bash normally ships with.
# Note: right now, we don't use the system copy of readline for bash for
non-releases.
@@ -49,13 +41,34 @@ READLINE_VER="8.2"
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 is_release ; then
- SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)"
+ SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
+
+ 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=
+
+ for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ;
my_patch_index++)) ; do
+ for url in mirror://gnu/${pn}
ftp://ftp.cwru.edu/pub/bash ; do
+ patch_url=$(printf "${url}/${PN}-$(ver_cut
1-2)-patches/${my_p}-%03d" ${my_patch_index})
+ SRC_URI+=" ${patch_url}"
+ SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
+ done
+
+ MY_PATCHES+=( "${DISTDIR}"/$(printf ${my_p}-%03d
${my_patch_index}) )
+ done
+
+ unset my_pn patch_url my_patch_index
+ fi
else
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
@@ -133,7 +146,7 @@ src_unpack() {
src_prepare() {
# Include official patches
- [[ ${PLEVEL} -gt 0 ]] && eapply -p0 $(patches -s)
+ [[ ${PLEVEL} -gt 0 ]] && eapply -p0 "${MY_PATCHES[@]}"
# Clean out local libs so we know we use system ones w/releases.
if is_release ; then
diff --git a/app-shells/bash/bash-5.2_rc3.ebuild
b/app-shells/bash/bash-5.2_rc3.ebuild
index d451bde867f0..847e52506d7f 100644
--- a/app-shells/bash/bash-5.2_rc3.ebuild
+++ b/app-shells/bash/bash-5.2_rc3.ebuild
@@ -20,28 +20,20 @@ PLEVEL="${PV##*_p}"
MY_PV="${PV/_p*}"
MY_PV="${MY_PV/_/-}"
MY_P="${PN}-${MY_PV}"
+MY_PATCHES=()
+
is_release() {
case ${PV} in
- 9999|*_alpha*|*_beta*|*_rc*) return 1 ;;
- *) return 0 ;;
+ 9999|*_alpha*|*_beta*|*_rc*)
+ return 1
+ ;;
+ *)
+ return 0
+ ;;
esac
}
+
[[ ${PV} != *_p* ]] && PLEVEL=0
-patches() {
- local opt=${1} plevel=${2:-${PLEVEL}} pn=${3:-${PN}} pv=${4:-${MY_PV}}
- [[ ${plevel} -eq 0 ]] && return 1
- eval set -- {1..${plevel}}
- set -- $(printf "${pn}${pv/\.}-%03d " "$@")
- if [[ ${opt} == -s ]] ; then
- echo "${@/#/${DISTDIR}/}"
- else
- local u
- for u in mirror://gnu/${pn} ftp://ftp.cwru.edu/pub/bash ; do
- printf "${u}/${pn}-${pv}-patches/%s " "$@"
- printf "${u}/${pn}-${pv}-patches/%s.asc " "$@"
- done
- fi
-}
# The version of readline this bash normally ships with.
# Note: right now, we don't use the system copy of readline for bash for
non-releases.
@@ -49,13 +41,34 @@ READLINE_VER="8.2"
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 is_release ; then
- SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)"
+ SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
+
+ 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=
+
+ for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ;
my_patch_index++)) ; do
+ for url in mirror://gnu/${pn}
ftp://ftp.cwru.edu/pub/bash ; do
+ patch_url=$(printf "${url}/${PN}-$(ver_cut
1-2)-patches/${my_p}-%03d" ${my_patch_index})
+ SRC_URI+=" ${patch_url}"
+ SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
+ done
+
+ MY_PATCHES+=( "${DISTDIR}"/$(printf ${my_p}-%03d
${my_patch_index}) )
+ done
+
+ unset my_pn patch_url my_patch_index
+ fi
else
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
@@ -133,7 +146,7 @@ src_unpack() {
src_prepare() {
# Include official patches
- [[ ${PLEVEL} -gt 0 ]] && eapply -p0 $(patches -s)
+ [[ ${PLEVEL} -gt 0 ]] && eapply -p0 "${MY_PATCHES[@]}"
# Clean out local libs so we know we use system ones w/releases.
if is_release ; then
diff --git a/app-shells/bash/bash-9999.ebuild b/app-shells/bash/bash-9999.ebuild
index d451bde867f0..847e52506d7f 100644
--- a/app-shells/bash/bash-9999.ebuild
+++ b/app-shells/bash/bash-9999.ebuild
@@ -20,28 +20,20 @@ PLEVEL="${PV##*_p}"
MY_PV="${PV/_p*}"
MY_PV="${MY_PV/_/-}"
MY_P="${PN}-${MY_PV}"
+MY_PATCHES=()
+
is_release() {
case ${PV} in
- 9999|*_alpha*|*_beta*|*_rc*) return 1 ;;
- *) return 0 ;;
+ 9999|*_alpha*|*_beta*|*_rc*)
+ return 1
+ ;;
+ *)
+ return 0
+ ;;
esac
}
+
[[ ${PV} != *_p* ]] && PLEVEL=0
-patches() {
- local opt=${1} plevel=${2:-${PLEVEL}} pn=${3:-${PN}} pv=${4:-${MY_PV}}
- [[ ${plevel} -eq 0 ]] && return 1
- eval set -- {1..${plevel}}
- set -- $(printf "${pn}${pv/\.}-%03d " "$@")
- if [[ ${opt} == -s ]] ; then
- echo "${@/#/${DISTDIR}/}"
- else
- local u
- for u in mirror://gnu/${pn} ftp://ftp.cwru.edu/pub/bash ; do
- printf "${u}/${pn}-${pv}-patches/%s " "$@"
- printf "${u}/${pn}-${pv}-patches/%s.asc " "$@"
- done
- fi
-}
# The version of readline this bash normally ships with.
# Note: right now, we don't use the system copy of readline for bash for
non-releases.
@@ -49,13 +41,34 @@ READLINE_VER="8.2"
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 is_release ; then
- SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz $(patches)"
+ SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
+
+ 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=
+
+ for ((my_patch_index=1; my_patch_index <= ${PLEVEL} ;
my_patch_index++)) ; do
+ for url in mirror://gnu/${pn}
ftp://ftp.cwru.edu/pub/bash ; do
+ patch_url=$(printf "${url}/${PN}-$(ver_cut
1-2)-patches/${my_p}-%03d" ${my_patch_index})
+ SRC_URI+=" ${patch_url}"
+ SRC_URI+=" verify-sig? ( ${patch_url}.sig )"
+ done
+
+ MY_PATCHES+=( "${DISTDIR}"/$(printf ${my_p}-%03d
${my_patch_index}) )
+ done
+
+ unset my_pn patch_url my_patch_index
+ fi
else
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig
ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
@@ -133,7 +146,7 @@ src_unpack() {
src_prepare() {
# Include official patches
- [[ ${PLEVEL} -gt 0 ]] && eapply -p0 $(patches -s)
+ [[ ${PLEVEL} -gt 0 ]] && eapply -p0 "${MY_PATCHES[@]}"
# Clean out local libs so we know we use system ones w/releases.
if is_release ; then