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
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 04c8d72..2fb2003 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -2507,7 +2507,7 @@
 		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 @@
 				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 @@
 			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 @@
 			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,