phase-helpers.sh: handle readonly EPREFIX for local override (bug 655414)
Since ebuild.sh calls "declare -r ED EPREFIX EROOT", use env to
override EPREFIX for the called command.
Fixes: 17fce85669be ("phase-helpers.sh: fix has/best_version for cross-prefix portageq (bug 655414)")
diff --git a/bin/phase-helpers.sh b/bin/phase-helpers.sh
index 99a30a1..5c9f957 100644
--- a/bin/phase-helpers.sh
+++ b/bin/phase-helpers.sh
@@ -880,6 +880,7 @@
___best_version_and_has_version_common() {
local atom root root_arg
+ local -a cmd=()
case $1 in
--host-root|-r|-d|-b)
root_arg=$1
@@ -903,7 +904,7 @@
# Since portageq requires the root argument be consistent
# with EPREFIX, ensure consistency here (bug 655414).
root=/${PORTAGE_OVERRIDE_EPREFIX#/}
- local -x EPREFIX=${PORTAGE_OVERRIDE_EPREFIX}
+ cmd+=(env EPREFIX="${PORTAGE_OVERRIDE_EPREFIX}")
else
root=/
fi ;;
@@ -927,10 +928,11 @@
esac
if [[ -n $PORTAGE_IPC_DAEMON ]] ; then
- "${PORTAGE_BIN_PATH}"/ebuild-ipc "${FUNCNAME[1]}" "${root}" "${atom}"
+ cmd+=("${PORTAGE_BIN_PATH}"/ebuild-ipc "${FUNCNAME[1]}" "${root}" "${atom}")
else
- "${PORTAGE_BIN_PATH}"/ebuild-helpers/portageq "${FUNCNAME[1]}" "${root}" "${atom}"
+ cmd+=("${PORTAGE_BIN_PATH}"/ebuild-helpers/portageq "${FUNCNAME[1]}" "${root}" "${atom}")
fi
+ "${cmd[@]}"
local retval=$?
case "${retval}" in
0|1)