diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-03-12 05:32:59 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-03-12 05:32:59 +0000 |
commit | 0d2cd06c85b3ef31cb491f31edfa319fcc4adf25 (patch) | |
tree | 5e3424c57192dfb9894e2851c0f46c995624a0b0 | |
parent | 3b44fff5b04d13dfa2af6c2c948076cd38dd350f (diff) | |
download | portage-0d2cd06c85b3ef31cb491f31edfa319fcc4adf25.tar.gz portage-0d2cd06c85b3ef31cb491f31edfa319fcc4adf25.tar.bz2 portage-0d2cd06c85b3ef31cb491f31edfa319fcc4adf25.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.
svn path=/main/trunk/; revision=13071
-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 04c8d72b5..2fb2003a8 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -2507,7 +2507,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") @@ -2578,7 +2578,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 @@ -2633,18 +2633,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: @@ -3415,11 +3413,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, |