From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 3D2DD138247 for ; Sat, 21 Dec 2013 09:49:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 66F2BE0A02; Sat, 21 Dec 2013 09:49:41 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id C64A9E09F0 for ; Sat, 21 Dec 2013 09:49:40 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id E609633F671 for ; Sat, 21 Dec 2013 09:49:39 +0000 (UTC) From: Mike Frysinger To: gentoo-portage-dev@lists.gentoo.org Subject: [gentoo-portage-dev] [PATCH] add a __bashpid helper for X-Mailer: git-send-email 1.8.4.3 In-Reply-To: <20131220210717.143e9f02@caribou.gateway.pace.com> References: <20131220210717.143e9f02@caribou.gateway.pace.com> Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-portage-dev@lists.gentoo.org Reply-to: gentoo-portage-dev@lists.gentoo.org X-Archives-Salt: 38c97244-d5fd-4159-b5a5-6df580f7d484 X-Archives-Hash: 3aada2e7fcb1a7473797a09b90759879 The $BASHPID variable is new to bash-4.0, so we need to add fallback logic to support older versions (notably, bash-3.2). Reported-by: Ryan Hill --- bin/ebuild-helpers/prepstrip | 4 ++-- bin/ebuild.sh | 2 +- bin/helper-functions.sh | 2 +- bin/isolated-functions.sh | 9 ++++++++- bin/phase-functions.sh | 2 +- bin/phase-helpers.sh | 2 +- 6 files changed, 14 insertions(+), 7 deletions(-) diff --git a/bin/ebuild-helpers/prepstrip b/bin/ebuild-helpers/prepstrip index 9b2d47c..64ea80d 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 35f4b91..be044e0 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 4a46278..b9bc74a 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 42d9e70..b99aec7 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 711b721..f39a024 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 1a7ae03..412decb 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= -- 1.8.4.3