From: Mike Frysinger Date: Sat, 21 Dec 2013 09:46:10 +0000 (-0500) Subject: add a __bashpid helper for --- diff --git a/bin/ebuild-helpers/prepstrip b/bin/ebuild-helpers/prepstrip index 9b2d47cbd..64ea80d71 100755 --- a/bin/ebuild-helpers/prepstrip +++ b/bin/ebuild-helpers/prepstrip @@ -116,7 +116,7 @@ save_elf_sources() { buildid=$(debugedit -i \ -b "${WORKDIR}" \ -d "${prepstrip_sources_dir}" \ - -l "${tmpdir}/sources/${x##*/}.${BASHPID}" \ + -l "${tmpdir}/sources/${x##*/}.${BASHPID:-$(__bashpid)}" \ "${x}") } @@ -208,7 +208,7 @@ process_elf() { # see if we can split & strip at the same time if [[ -n ${SPLIT_STRIP_FLAGS} ]] ; then local shortname="${x##*/}.debug" - local splitdebug="${tmpdir}/splitdebug/${shortname}.${BASHPID}" + local splitdebug="${tmpdir}/splitdebug/${shortname}.${BASHPID:-$(__bashpid)}" ${already_stripped} || \ ${STRIP} ${strip_flags} \ -f "${splitdebug}" \ diff --git a/bin/ebuild.sh b/bin/ebuild.sh index 35f4b912a..be044e08d 100755 --- a/bin/ebuild.sh +++ b/bin/ebuild.sh @@ -468,7 +468,7 @@ if [[ -n ${QA_INTERCEPTORS} ]] ; then fi # Subshell/helper die support (must export for the die helper). -export EBUILD_MASTER_PID=$BASHPID +export EBUILD_MASTER_PID=${BASHPID:-$(__bashpid)} trap 'exit 1' SIGTERM if ! has "$EBUILD_PHASE" clean cleanrm depend && \ diff --git a/bin/helper-functions.sh b/bin/helper-functions.sh index 4a4627800..b9bc74a2e 100644 --- a/bin/helper-functions.sh +++ b/bin/helper-functions.sh @@ -34,7 +34,7 @@ __multijob_init() { } __multijob_child_init() { - trap 'echo ${BASHPID} $? >&'${mj_write_fd} EXIT + trap 'echo ${BASHPID:-$(__bashpid)} $? >&'${mj_write_fd} EXIT trap 'exit 1' INT TERM } diff --git a/bin/isolated-functions.sh b/bin/isolated-functions.sh index 42d9e708d..b99aec729 100644 --- a/bin/isolated-functions.sh +++ b/bin/isolated-functions.sh @@ -98,6 +98,13 @@ nonfatal() { PORTAGE_NONFATAL=1 "$@" } +__bashpid() { + # The BASHPID variable is new to bash-4.0, so add a hack for older + # versions. This must be used like so: + # ${BASHPID:-$(__bashpid)} + sh -c 'echo ${PPID}' +} + __helpers_die() { if ___eapi_helpers_can_die; then die "$@" @@ -216,7 +223,7 @@ die() { [[ -n $PORTAGE_IPC_DAEMON ]] && "$PORTAGE_BIN_PATH"/ebuild-ipc exit 1 # subshell die support - [[ $BASHPID = $EBUILD_MASTER_PID ]] || kill -s SIGTERM $EBUILD_MASTER_PID + [[ ${BASHPID:-$(__bashpid)} == ${EBUILD_MASTER_PID} ]] || kill -s SIGTERM ${EBUILD_MASTER_PID} exit 1 } diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh index 711b72116..f39a024a2 100644 --- a/bin/phase-functions.sh +++ b/bin/phase-functions.sh @@ -830,7 +830,7 @@ __ebuild_main() { # setup EBUILD_MASTER_PID to refer to the current $BASHPID, # which seems to give the best results when further # nested subshells call die. - export EBUILD_MASTER_PID=$BASHPID + export EBUILD_MASTER_PID=${BASHPID:-$(__bashpid)} trap 'exit 1' SIGTERM #a reasonable default for $S diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh index 1a7ae03c5..412decbe0 100644 --- a/bin/phase-helpers.sh +++ b/bin/phase-helpers.sh @@ -469,7 +469,7 @@ unpack() { econf() { local x - local pid=${BASHPID} + local pid=${BASHPID:-$(__bashpid)} if ! ___eapi_has_prefix_variables; then local EPREFIX=