summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-10-22 07:12:15 -0700
committerZac Medico <zmedico@gentoo.org>2010-10-22 08:20:25 -0700
commit36ebfb9d7e61146a5c3739376ebb86f36e7cb601 (patch)
tree195a330b5be0780451c50a9b5aa0288f031e323c /pym
parent22af1f35152d30084299baab4e9ca3b0b50fec65 (diff)
downloadportage-36ebfb9d7e61146a5c3739376ebb86f36e7cb601.tar.gz
portage-36ebfb9d7e61146a5c3739376ebb86f36e7cb601.tar.bz2
portage-36ebfb9d7e61146a5c3739376ebb86f36e7cb601.zip
EbuildBuildDir: tolerate some permission issues
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/EbuildBuildDir.py21
1 files changed, 15 insertions, 6 deletions
diff --git a/pym/_emerge/EbuildBuildDir.py b/pym/_emerge/EbuildBuildDir.py
index de3f56dfb..ba18269b1 100644
--- a/pym/_emerge/EbuildBuildDir.py
+++ b/pym/_emerge/EbuildBuildDir.py
@@ -5,6 +5,7 @@ from _emerge.AsynchronousLock import AsynchronousLock
from _emerge.SlotObject import SlotObject
import portage
from portage import os
+from portage.exception import PortageException
import errno
class EbuildBuildDir(SlotObject):
@@ -32,16 +33,24 @@ class EbuildBuildDir(SlotObject):
catdir = os.path.dirname(dir_path)
self._catdir = catdir
- portage.util.ensure_dirs(os.path.dirname(catdir),
- gid=portage.portage_gid,
- mode=0o70, mask=0)
+ try:
+ portage.util.ensure_dirs(os.path.dirname(catdir),
+ gid=portage.portage_gid,
+ mode=0o70, mask=0)
+ except PortageException:
+ if not os.path.isdir(os.path.dirname(catdir)):
+ raise
catdir_lock = AsynchronousLock(path=catdir, scheduler=self.scheduler)
catdir_lock.start()
catdir_lock.wait()
try:
- portage.util.ensure_dirs(catdir,
- gid=portage.portage_gid,
- mode=0o70, mask=0)
+ try:
+ portage.util.ensure_dirs(catdir,
+ gid=portage.portage_gid,
+ mode=0o70, mask=0)
+ except PortageException:
+ if not os.path.isdir(catdir):
+ raise
builddir_lock = AsynchronousLock(path=dir_path,
scheduler=self.scheduler)
builddir_lock.start()