From: Fabian Groffen Date: Sun, 2 Nov 2008 10:02:21 +0000 (-0000) Subject: Merged from trunk -r11795:11796 X-Git-Url: http://git.tremily.us/gitweb.cgi?a=commitdiff_plain;h=57db6a8ddd996eba9bc81a45a8f5ccb474af632b;p=portage.git Merged from trunk -r11795:11796 | 11796 | Bug #245231 - Make EbuildFetchPretend use a private temp | | zmedico | directory in order to avoid locking the main one. | svn path=/main/branches/prefix/; revision=11798 --- diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index c7f8aa88e..64a394d22 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1617,7 +1617,23 @@ class EbuildFetchPretend(SlotObject): def execute(self): # To spawn pkg_nofetch requires PORTAGE_BUILDDIR for # ensuring sane $PWD (bug #239560) and storing elog - # messages. + # messages. Use a private temp directory, in order + # to avoid locking the main one. + settings = self.settings + global_tmpdir = settings["PORTAGE_TMPDIR"] + from tempfile import mkdtemp + private_tmpdir = mkdtemp("", "._portage_fetch_.", global_tmpdir) + settings["PORTAGE_TMPDIR"] = private_tmpdir + settings.backup_changes("PORTAGE_TMPDIR") + try: + retval = self._execute() + finally: + settings["PORTAGE_TMPDIR"] = global_tmpdir + settings.backup_changes("PORTAGE_TMPDIR") + shutil.rmtree(private_tmpdir) + return retval + + def _execute(self): build_dir = EbuildBuildDir(pkg=self.pkg, settings=self.settings) build_dir.lock() build_dir.clean() @@ -2394,7 +2410,7 @@ class EbuildBuildDir(SlotObject): self._catdir = catdir portage.util.ensure_dirs(os.path.dirname(catdir), - uid=portage.portage_uid, gid=portage.portage_gid, + gid=portage.portage_gid, mode=070, mask=0) catdir_lock = None try: