1 |
Author: zmedico |
2 |
Date: 2008-10-07 08:40:33 +0000 (Tue, 07 Oct 2008) |
3 |
New Revision: 11647 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Make EbuildFetcher direct fetch output to the normal build log. By keeping the |
9 |
output in the build log instead of the global emerge-fetch.log file, output |
10 |
from a possible fetch failure can be recovered and displayed later. |
11 |
TODO: Convert failed fetch to elog message as suggested in bug #234301. |
12 |
|
13 |
|
14 |
Modified: main/trunk/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/trunk/pym/_emerge/__init__.py 2008-10-07 08:04:55 UTC (rev 11646) |
17 |
+++ main/trunk/pym/_emerge/__init__.py 2008-10-07 08:40:33 UTC (rev 11647) |
18 |
@@ -2249,6 +2249,15 @@ |
19 |
settings = self.config_pool.allocate() |
20 |
self._build_dir = EbuildBuildDir(pkg=self.pkg, settings=settings) |
21 |
self._build_dir.lock() |
22 |
+ |
23 |
+ if self.background and self.logfile is None: |
24 |
+ fetch_log = None |
25 |
+ if not self.fetchonly: |
26 |
+ fetch_log = settings.get("PORTAGE_LOG_FILE") |
27 |
+ if fetch_log is None: |
28 |
+ fetch_log = self.scheduler.fetch.log_file |
29 |
+ self.logfile = fetch_log |
30 |
+ |
31 |
phase = "fetch" |
32 |
if self.fetchall: |
33 |
phase = "fetchall" |
34 |
@@ -2275,21 +2284,22 @@ |
35 |
self.env = fetch_env |
36 |
SpawnProcess._start(self) |
37 |
|
38 |
- def _wait_hook(self): |
39 |
+ def _set_returncode(self, wait_retval): |
40 |
+ SpawnProcess._set_returncode(self, wait_retval) |
41 |
# Collect elog messages that might have been |
42 |
# created by the pkg_nofetch phase. |
43 |
if self._build_dir is not None: |
44 |
portage.elog.elog_process(self.pkg.cpv, self._build_dir.settings) |
45 |
- try: |
46 |
- shutil.rmtree(self._build_dir.settings["PORTAGE_BUILDDIR"]) |
47 |
- except EnvironmentError, e: |
48 |
- if e.errno != errno.ENOENT: |
49 |
- raise |
50 |
- del e |
51 |
+ if self.returncode == os.EX_OK: |
52 |
+ try: |
53 |
+ shutil.rmtree(self._build_dir.settings["PORTAGE_BUILDDIR"]) |
54 |
+ except EnvironmentError, e: |
55 |
+ if e.errno != errno.ENOENT: |
56 |
+ raise |
57 |
+ del e |
58 |
self._build_dir.unlock() |
59 |
self.config_pool.deallocate(self._build_dir.settings) |
60 |
self._build_dir = None |
61 |
- SpawnProcess._wait_hook(self) |
62 |
|
63 |
class EbuildBuildDir(SlotObject): |
64 |
|
65 |
@@ -2322,6 +2332,7 @@ |
66 |
portage.doebuild_environment(ebuild_path, "setup", root_config.root, |
67 |
self.settings, debug, use_cache, portdb) |
68 |
dir_path = self.settings["PORTAGE_BUILDDIR"] |
69 |
+ portage.prepare_build_dirs(self.pkg.root, self.settings, 0) |
70 |
|
71 |
catdir = os.path.dirname(dir_path) |
72 |
self._catdir = catdir |
73 |
@@ -2432,8 +2443,6 @@ |
74 |
return |
75 |
|
76 |
fetch_log = None |
77 |
- if self.background: |
78 |
- fetch_log = self.scheduler.fetch.log_file |
79 |
|
80 |
fetcher = EbuildFetcher(config_pool=self.config_pool, |
81 |
fetchall=opts.fetch_all_uri, |