summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-12 05:57:42 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-12 05:57:42 +0000
commit0892903a84b698a7b50db396307af6c1a1216543 (patch)
treee2f9dc0d68d38209d89ea0f96689af91e64fbebd /pym
parent9b60960253474c9fff59a84f5c6d97ad122447d4 (diff)
downloadportage-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
Diffstat (limited to 'pym')
-rw-r--r--pym/_emerge/__init__.py24
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,