From fd21c4439d5922802ba8d4e8362fabd0c73ecba3 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Sun, 20 Apr 2008 20:53:33 +0000 Subject: Bug #218559 - Make portdbapi automatically add sandbox write access to self.depcachedir when appropriate. This makes the portageq blanket sandbox exemption unnecessary. (trunk r9928) svn path=/main/branches/2.1.2/; revision=9929 --- bin/portageq | 4 ---- pym/portage.py | 11 ++++++++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/bin/portageq b/bin/portageq index f0c2e19e2..d65abaa8f 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 import portage_exception #----------------------------------------------------------------------------- diff --git a/pym/portage.py b/pym/portage.py index 44f7e212a..db1ba59fb 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -7118,7 +7118,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.tmpfs = self.mysettings["PORTAGE_TMPFS"] if self.tmpfs and not os.path.exists(self.tmpfs): -- cgit v1.2.3-1-g7c22