diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-12 05:57:42 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-12 05:57:42 +0000 |
commit | 0892903a84b698a7b50db396307af6c1a1216543 (patch) | |
tree | e2f9dc0d68d38209d89ea0f96689af91e64fbebd | |
parent | 9b60960253474c9fff59a84f5c6d97ad122447d4 (diff) | |
download | portage-0892903a84b698a7b50db396307af6c1a1216543.tar.gz portage-0892903a84b698a7b50db396307af6c1a1216543.tar.bz2 portage-0892903a84b698a7b50db396307af6c1a1216543.zip |
Bug #261992 - Replace the EbuildBuildDir.clean() method with a clean_log()
method since log cleanup is all that's currently needed and shutil.rmtree()
can fail with "OSError: [Errno 36] File name too long" due to strange file
names, or on FreeBSD it can fail with EPERM due to file flags in $D.
(trunk r13071)
svn path=/main/branches/2.1.6/; revision=13085
-rw-r--r-- | pym/_emerge/__init__.py | 24 |
1 files changed, 9 insertions, 15 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 6b23b4c97..737e7e430 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2488,7 +2488,7 @@ class EbuildFetcher(SpawnProcess): if not self.prefetch: self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings) self._build_dir.lock() - self._build_dir.clean() + self._build_dir.clean_log() portage.prepare_build_dirs(self.pkg.root, self._build_dir.settings, 0) if self.logfile is None: self.logfile = settings.get("PORTAGE_LOG_FILE") @@ -2559,7 +2559,7 @@ class EbuildFetcher(SpawnProcess): portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings) features = self._build_dir.settings.features if self.returncode == os.EX_OK: - self._build_dir.clean() + self._build_dir.clean_log() self._build_dir.unlock() self.config_pool.deallocate(self._build_dir.settings) self._build_dir = None @@ -2614,18 +2614,16 @@ class EbuildBuildDir(SlotObject): if catdir_lock is not None: portage.locks.unlockdir(catdir_lock) - def clean(self): + def clean_log(self): """Uses shutil.rmtree() rather than spawning a 'clean' phase. Disabled by keepwork or keeptemp in FEATURES.""" settings = self.settings - features = settings.features - if not ("keepwork" in features or "keeptemp" in features): + + for x in ('.logid', 'temp/build.log'): try: - shutil.rmtree(settings["PORTAGE_BUILDDIR"]) - except EnvironmentError, e: - if e.errno != errno.ENOENT: - raise - del e + os.unlink(os.path.join(settings["PORTAGE_BUILDDIR"], x)) + except OSError: + pass def unlock(self): if self._lock_obj is None: @@ -3396,11 +3394,7 @@ class Binpkg(CompositeTask): self._build_dir.lock() # If necessary, discard old log so that we don't # append to it. - for x in ('.logid', 'temp/build.log'): - try: - os.unlink(os.path.join(self._build_dir.dir_path, x)) - except OSError: - pass + self._build_dir.clean_log() # Initialze PORTAGE_LOG_FILE. portage.prepare_build_dirs(self.settings["ROOT"], self.settings, 1) fetcher = BinpkgFetcher(background=self.background, |