1 |
Author: zmedico |
2 |
Date: 2008-10-11 20:31:48 +0000 (Sat, 11 Oct 2008) |
3 |
New Revision: 11678 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
In EbuildFetcher._start(), in order to ensure that a new log is created when |
9 |
appropriate, clean up PORTAGE_BUILDDIR if appropriate. |
10 |
|
11 |
|
12 |
Modified: main/trunk/pym/_emerge/__init__.py |
13 |
=================================================================== |
14 |
--- main/trunk/pym/_emerge/__init__.py 2008-10-11 19:34:10 UTC (rev 11677) |
15 |
+++ main/trunk/pym/_emerge/__init__.py 2008-10-11 20:31:48 UTC (rev 11678) |
16 |
@@ -2248,6 +2248,8 @@ |
17 |
settings = self.config_pool.allocate() |
18 |
self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings) |
19 |
self._build_dir.lock() |
20 |
+ self._clean_builddir() |
21 |
+ portage.prepare_build_dirs(self.pkg.root, self._build_dir.settings, 0) |
22 |
if self.logfile is None: |
23 |
self.logfile = settings.get("PORTAGE_LOG_FILE") |
24 |
|
25 |
@@ -2277,6 +2279,18 @@ |
26 |
self.env = fetch_env |
27 |
SpawnProcess._start(self) |
28 |
|
29 |
+ def _clean_builddir(self): |
30 |
+ """Uses shutil.rmtree() rather than spawning a 'clean' phase. Disabled |
31 |
+ by keepwork or keeptemp in FEATURES.""" |
32 |
+ features = self._build_dir.settings.features |
33 |
+ if not ("keepwork" in features or "keeptemp" in features): |
34 |
+ try: |
35 |
+ shutil.rmtree(self._build_dir.settings["PORTAGE_BUILDDIR"]) |
36 |
+ except EnvironmentError, e: |
37 |
+ if e.errno != errno.ENOENT: |
38 |
+ raise |
39 |
+ del e |
40 |
+ |
41 |
def _set_returncode(self, wait_retval): |
42 |
SpawnProcess._set_returncode(self, wait_retval) |
43 |
# Collect elog messages that might have been |
44 |
@@ -2295,14 +2309,8 @@ |
45 |
if not self.prefetch: |
46 |
portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings) |
47 |
features = self._build_dir.settings.features |
48 |
- if (self.fetchonly or self.returncode == os.EX_OK) and \ |
49 |
- not ("keepwork" in features or "keeptemp" in features): |
50 |
- try: |
51 |
- shutil.rmtree(self._build_dir.settings["PORTAGE_BUILDDIR"]) |
52 |
- except EnvironmentError, e: |
53 |
- if e.errno != errno.ENOENT: |
54 |
- raise |
55 |
- del e |
56 |
+ if self.fetchonly or self.returncode == os.EX_OK: |
57 |
+ self._clean_builddir() |
58 |
self._build_dir.unlock() |
59 |
self.config_pool.deallocate(self._build_dir.settings) |
60 |
self._build_dir = None |
61 |
@@ -2338,7 +2346,6 @@ |
62 |
portage.doebuild_environment(ebuild_path, "setup", root_config.root, |
63 |
self.settings, debug, use_cache, portdb) |
64 |
dir_path = self.settings["PORTAGE_BUILDDIR"] |
65 |
- portage.prepare_build_dirs(self.pkg.root, self.settings, 0) |
66 |
|
67 |
catdir = os.path.dirname(dir_path) |
68 |
self._catdir = catdir |