summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/portageq4
-rw-r--r--pym/portage/dbapi/porttree.py11
2 files changed, 10 insertions, 5 deletions
diff --git a/bin/portageq b/bin/portageq
index eb0d0ff6..c3fe8b37 100755
--- a/bin/portageq
+++ b/bin/portageq
@@ -21,10 +21,6 @@ except KeyboardInterrupt:
import os
-# This allows portageq to be exempt from sandbox,
-# for things like updating metadata cache.
-os.environ["SANDBOX_ON"] = "0"
-
import types
#-----------------------------------------------------------------------------
diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py
index 845fdbae..3c0bc01b 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -62,7 +62,16 @@ class portdbapi(dbapi):
#self.root=settings["PORTDIR"]
self.porttree_root = os.path.realpath(porttree_root)
- self.depcachedir = self.mysettings.depcachedir[:]
+ self.depcachedir = os.path.realpath(self.mysettings.depcachedir)
+
+ if os.environ.get("SANDBOX_ON") == "1":
+ # Make api consumers exempt from sandbox violations
+ # when doing metadata cache updates.
+ sandbox_write = os.environ.get("SANDBOX_WRITE", "").split(":")
+ if self.depcachedir not in sandbox_write:
+ sandbox_write.append(self.depcachedir)
+ os.environ["SANDBOX_WRITE"] = \
+ ":".join(filter(None, sandbox_write))
self.eclassdb = eclass_cache.cache(self.porttree_root,
overlays=self.mysettings["PORTDIR_OVERLAY"].split())