summaryrefslogtreecommitdiffstats
path: root/bin/ebuild.sh
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-12-13 08:30:56 +0000
committerZac Medico <zmedico@gentoo.org>2007-12-13 08:30:56 +0000
commitbf3d1ed76bbdfc1ee4cdbe00ef915994bdf1e9a0 (patch)
tree87afa7ed1fa07513db2ee3c17bbfdacd473192e5 /bin/ebuild.sh
parentec38501b8c759d7d8cd35a5b04d075ffab05a6be (diff)
downloadportage-bf3d1ed76bbdfc1ee4cdbe00ef915994bdf1e9a0.tar.gz
portage-bf3d1ed76bbdfc1ee4cdbe00ef915994bdf1e9a0.tar.bz2
portage-bf3d1ed76bbdfc1ee4cdbe00ef915994bdf1e9a0.zip
Properly filter SANDBOX_ON from the environment. When sourcing
${T}/environment it's a bit tricky because we have to temporarily disable sandbox since the SANDBOX_{DENY,READ,PREDICT,_WRITE} values we've just loaded may be unusable (triggering in spurious sandbox violations) until we've merged them with our current values. svn path=/main/trunk/; revision=8906
Diffstat (limited to 'bin/ebuild.sh')
-rwxr-xr-xbin/ebuild.sh17
1 files changed, 16 insertions, 1 deletions
diff --git a/bin/ebuild.sh b/bin/ebuild.sh
index ff0dd78c4..7e970c54c 100755
--- a/bin/ebuild.sh
+++ b/bin/ebuild.sh
@@ -1400,7 +1400,7 @@ filter_readonly_variables() {
PIPESTATUS PPID SHELLOPTS UID"
local filtered_sandbox_vars="SANDBOX_ACTIVE SANDBOX_BASHRC
SANDBOX_DEBUG_LOG SANDBOX_DISABLED SANDBOX_LIB
- SANDBOX_LOG"
+ SANDBOX_LOG SANDBOX_ON"
filtered_vars="${readonly_bash_vars} ${READONLY_PORTAGE_VARS}
BASH_[_[:alnum:]]*"
if hasq --filter-sandbox $* ; then
@@ -1457,7 +1457,13 @@ preprocess_ebuild_env() {
# called. Any variables that need to be relied upon should already be
# filtered out above.
(
+ export SANDBOX_ON=1
source "${T}/environment" || exit $?
+ # We have to temporarily disable sandbox since the
+ # SANDBOX_{DENY,READ,PREDICT,_WRITE} values we've just loaded
+ # may be unusable (triggering in spurious sandbox violations)
+ # until we've merged them with our current values.
+ export SANDBOX_ON=0
# It's remotely possible that save_ebuild_env() has been overridden
# by the above source command. To protect ourselves, we override it
@@ -1596,8 +1602,15 @@ elif ! hasq ${EBUILD_PHASE} depend && [ -f "${T}"/environment ] ; then
for x in SANDBOX_DENY SANDBOX_READ SANDBOX_PREDICT SANDBOX_WRITE ; do
eval PORTAGE_${x}=\${!x}
done
+ PORTAGE_SANDBOX_ON=${SANDBOX_ON}
+ export SANDBOX_ON=1
source "${T}"/environment || \
die "error sourcing environment"
+ # We have to temporarily disable sandbox since the
+ # SANDBOX_{DENY,READ,PREDICT,_WRITE} values we've just loaded
+ # may be unusable (triggering in spurious sandbox violations)
+ # until we've merged them with our current values.
+ export SANDBOX_ON=0
for x in SANDBOX_DENY SANDBOX_PREDICT SANDBOX_READ SANDBOX_WRITE ; do
eval y=\${PORTAGE_${x}}
if [ "${y}" != "${!x}" ] ; then
@@ -1607,6 +1620,8 @@ elif ! hasq ${EBUILD_PHASE} depend && [ -f "${T}"/environment ] ; then
unset PORTAGE_${x}
done
unset x y
+ export SANDBOX_ON=${PORTAGE_SANDBOX_ON}
+ unset PORTAGE_SANDBOX_ON
source_all_bashrcs
else