diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-10-22 07:12:15 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-10-22 07:12:15 -0700 |
commit | af83fe6a4fa759733c17e8410de6d95a23cea650 (patch) | |
tree | 353ee1aee9a4f55cfe12272222d18cc141d799c0 | |
parent | 9cfcbf1db0cc747451074f41e104d12656855385 (diff) | |
download | portage-af83fe6a4fa759733c17e8410de6d95a23cea650.tar.gz portage-af83fe6a4fa759733c17e8410de6d95a23cea650.tar.bz2 portage-af83fe6a4fa759733c17e8410de6d95a23cea650.zip |
EbuildBuildDir: tolerate some permission issues
-rw-r--r-- | pym/_emerge/EbuildBuildDir.py | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/pym/_emerge/EbuildBuildDir.py b/pym/_emerge/EbuildBuildDir.py index bdb7fbc7d..851ba7e32 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() |