7 |
7 |
inherit flag-o-matic toolchain-funcs prefix verify-sig
|
8 |
8 |
|
9 |
9 |
# Uncomment if we have a patchset
|
10 |
|
GENTOO_PATCH_DEV="sam"
|
11 |
|
GENTOO_PATCH_VER="${PV}"
|
|
10 |
#GENTOO_PATCH_DEV="sam"
|
|
11 |
#GENTOO_PATCH_VER="${PV}"
|
12 |
12 |
|
13 |
13 |
# Official patchlevel
|
14 |
14 |
# See ftp://ftp.cwru.edu/pub/bash/bash-5.1-patches/
|
... | ... | |
20 |
20 |
|
21 |
21 |
is_release() {
|
22 |
22 |
case ${PV} in
|
23 |
|
*_alpha*|*_beta*|*_rc*)
|
|
23 |
9999|*_alpha*|*_beta*|*_rc*)
|
24 |
24 |
return 1
|
25 |
25 |
;;
|
26 |
26 |
*)
|
... | ... | |
32 |
32 |
[[ ${PV} != *_p* ]] && PLEVEL=0
|
33 |
33 |
|
34 |
34 |
# The version of readline this bash normally ships with.
|
35 |
|
READLINE_VER="8.1"
|
|
35 |
# Note: right now, we don't use the system copy of readline for bash for non-releases.
|
|
36 |
READLINE_VER="8.2_p1"
|
36 |
37 |
|
37 |
38 |
DESCRIPTION="The standard GNU Bourne again shell"
|
38 |
|
HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html"
|
|
39 |
HOMEPAGE="https://tiswww.case.edu/php/chet/bash/bashtop.html https://git.savannah.gnu.org/cgit/bash.git"
|
39 |
40 |
|
40 |
|
if is_release ; then
|
|
41 |
if [[ ${PV} == 9999 ]] ; then
|
|
42 |
EGIT_REPO_URI="https://git.savannah.gnu.org/git/bash.git"
|
|
43 |
EGIT_BRANCH=devel
|
|
44 |
inherit git-r3
|
|
45 |
elif is_release ; then
|
41 |
46 |
SRC_URI="mirror://gnu/bash/${MY_P}.tar.gz"
|
42 |
47 |
SRC_URI+=" verify-sig? ( mirror://gnu/bash/${MY_P}.tar.gz.sig )"
|
43 |
48 |
|
... | ... | |
68 |
73 |
unset my_p patch_url my_patch_index upstream_url_base mirror_url_base
|
69 |
74 |
fi
|
70 |
75 |
else
|
71 |
|
SRC_URI="ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
|
72 |
|
SRC_URI+=" verify-sig? ( ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
|
|
76 |
SRC_URI="mirror://gnu/${PN}/${MY_P}.tar.gz ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz"
|
|
77 |
SRC_URI+=" verify-sig? ( mirror://gnu/${PN}/${MY_P}.tar.gz.sig ftp://ftp.cwru.edu/pub/bash/${MY_P}.tar.gz.sig )"
|
73 |
78 |
fi
|
74 |
79 |
|
75 |
80 |
if [[ -n ${GENTOO_PATCH_VER} ]] ; then
|
76 |
81 |
SRC_URI+=" https://dev.gentoo.org/~${GENTOO_PATCH_DEV}/distfiles/${CATEGORY}/${PN}/${PN}-${GENTOO_PATCH_VER}-patches.tar.xz"
|
77 |
82 |
fi
|
78 |
83 |
|
79 |
|
LICENSE="GPL-3"
|
|
84 |
LICENSE="GPL-3+"
|
80 |
85 |
SLOT="0"
|
81 |
|
[[ "${PV}" == *_rc* ]] || \
|
82 |
|
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
83 |
|
IUSE="afs bashlogger examples mem-scramble +net nls plugins +readline"
|
|
86 |
if is_release ; then
|
|
87 |
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
|
88 |
fi
|
|
89 |
IUSE="afs bashlogger examples mem-scramble +net nls plugins pgo +readline"
|
84 |
90 |
|
85 |
91 |
DEPEND="
|
86 |
|
>=sys-libs/ncurses-5.2-r2:0=
|
|
92 |
>=sys-libs/ncurses-5.2-r2:=
|
87 |
93 |
nls? ( virtual/libintl )
|
88 |
|
readline? ( >=sys-libs/readline-${READLINE_VER}:0= )
|
89 |
94 |
"
|
|
95 |
if is_release ; then
|
|
96 |
DEPEND+=" readline? ( >=sys-libs/readline-${READLINE_VER}:= )"
|
|
97 |
fi
|
90 |
98 |
RDEPEND="
|
91 |
99 |
${DEPEND}
|
92 |
100 |
"
|
93 |
101 |
# We only need bison (yacc) when the .y files get patched (bash42-005, bash51-011)
|
94 |
|
BDEPEND="sys-devel/bison
|
95 |
|
verify-sig? ( sec-keys/openpgp-keys-chetramey )"
|
|
102 |
BDEPEND="
|
|
103 |
sys-devel/bison
|
|
104 |
pgo? ( dev-util/gperf )
|
|
105 |
verify-sig? ( sec-keys/openpgp-keys-chetramey )
|
|
106 |
"
|
96 |
107 |
|
97 |
108 |
S="${WORKDIR}/${MY_P}"
|
98 |
109 |
|
|
110 |
# EAPI 8 tries to append it but it doesn't exist here
|
|
111 |
QA_CONFIGURE_OPTIONS="--disable-static"
|
|
112 |
|
99 |
113 |
PATCHES=(
|
100 |
|
# Patches from Chet sent to bashbug ml
|
101 |
|
"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}-patches/${PN}-5.0-syslog-history-extern.patch
|
|
114 |
#"${WORKDIR}"/${PN}-${GENTOO_PATCH_VER}/
|
102 |
115 |
|
103 |
|
"${FILESDIR}"/${PN}-5.1_p16-configure-clang16.patch
|
|
116 |
# Patches from Chet sent to bash-bug ml
|
|
117 |
"${FILESDIR}"/${PN}-5.0-syslog-history-extern.patch
|
|
118 |
"${FILESDIR}"/${PN}-5.2_p15-random-ub.patch
|
|
119 |
"${FILESDIR}"/${PN}-5.2_p15-configure-clang16.patch
|
104 |
120 |
)
|
105 |
121 |
|
106 |
122 |
pkg_setup() {
|
... | ... | |
156 |
172 |
sed -i -r '/^(HS|RL)USER/s:=.*:=:' doc/Makefile.in || die
|
157 |
173 |
touch -r . doc/* || die
|
158 |
174 |
|
|
175 |
# Sometimes hangs (more noticeable w/ pgo), bug #907403.
|
|
176 |
rm tests/run-jobs || die
|
|
177 |
|
159 |
178 |
eapply -p0 "${PATCHES[@]}"
|
160 |
179 |
eapply_user
|
161 |
180 |
}
|
... | ... | |
203 |
222 |
#use static && export LDFLAGS="${LDFLAGS} -static"
|
204 |
223 |
use nls || myconf+=( --disable-nls )
|
205 |
224 |
|
206 |
|
# Historically, we always used the builtin readline, but since
|
207 |
|
# our handling of SONAME upgrades has gotten much more stable
|
208 |
|
# in the PM (and the readline ebuild itself preserves the old
|
209 |
|
# libs during upgrades), linking against the system copy should
|
210 |
|
# be safe.
|
211 |
|
# Exact cached version here doesn't really matter as long as it
|
212 |
|
# is at least what's in the DEPEND up above.
|
213 |
|
export ac_cv_rl_version=${READLINE_VER%%_*}
|
214 |
|
|
215 |
225 |
if is_release ; then
|
|
226 |
# Historically, we always used the builtin readline, but since
|
|
227 |
# our handling of SONAME upgrades has gotten much more stable
|
|
228 |
# in the PM (and the readline ebuild itself preserves the old
|
|
229 |
# libs during upgrades), linking against the system copy should
|
|
230 |
# be safe.
|
|
231 |
# Exact cached version here doesn't really matter as long as it
|
|
232 |
# is at least what's in the DEPEND up above.
|
|
233 |
export ac_cv_rl_version=${READLINE_VER%%_*}
|
|
234 |
|
216 |
235 |
# Use system readline only with released versions.
|
217 |
236 |
myconf+=( --with-installed-readline=. )
|
218 |
237 |
fi
|
... | ... | |
237 |
256 |
}
|
238 |
257 |
|
239 |
258 |
src_compile() {
|
240 |
|
emake
|
|
259 |
if use pgo ; then
|
|
260 |
# Build Bash and run its tests to generate profiles.
|
|
261 |
emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo -fprofile-dir=${T}/pgo"
|
241 |
262 |
|
242 |
|
if use plugins ; then
|
243 |
|
emake -C examples/loadables all others
|
|
263 |
# Used in test suite.
|
|
264 |
unset A
|
|
265 |
|
|
266 |
emake CFLAGS="${CFLAGS} -fprofile-generate=${T}/pgo -fprofile-dir=${T}/pgo" -k check
|
|
267 |
|
|
268 |
if tc-is-clang; then
|
|
269 |
llvm-profdata merge "${T}"/pgo --output="${T}"/pgo/default.profdata || die
|
|
270 |
fi
|
|
271 |
|
|
272 |
# Rebuild Bash using the profiling data we just generated.
|
|
273 |
emake clean
|
|
274 |
emake CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo"
|
|
275 |
|
|
276 |
use plugins && emake -C examples/loadables CFLAGS="${CFLAGS} -fprofile-use=${T}/pgo -fprofile-dir=${T}/pgo" all others
|
|
277 |
else
|
|
278 |
emake
|
|
279 |
|
|
280 |
use plugins && emake -C examples/loadables all others
|
244 |
281 |
fi
|
245 |
282 |
}
|
246 |
283 |
|
|
284 |
src_test() {
|
|
285 |
# Used in test suite.
|
|
286 |
unset A
|
|
287 |
|
|
288 |
default
|
|
289 |
}
|
|
290 |
|
247 |
291 |
src_install() {
|
248 |
292 |
local d f
|
249 |
293 |
|