1 |
Author: zmedico |
2 |
Date: 2008-08-05 06:58:04 +0000 (Tue, 05 Aug 2008) |
3 |
New Revision: 11331 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
When there is no build log to display, it means that fetch failed, so |
9 |
display the fetch log in that case. |
10 |
|
11 |
|
12 |
Modified: main/trunk/pym/_emerge/__init__.py |
13 |
=================================================================== |
14 |
--- main/trunk/pym/_emerge/__init__.py 2008-08-05 02:20:56 UTC (rev 11330) |
15 |
+++ main/trunk/pym/_emerge/__init__.py 2008-08-05 06:58:04 UTC (rev 11331) |
16 |
@@ -8794,7 +8794,8 @@ |
17 |
emergelog(self.xterm_titles, *pargs, **kwargs) |
18 |
|
19 |
class _failed_pkg(SlotObject): |
20 |
- __slots__ = ("log_path", "pkg", "returncode") |
21 |
+ __slots__ = ("build_dir", "build_log", |
22 |
+ "fetch_log", "pkg", "returncode") |
23 |
|
24 |
def __init__(self, settings, trees, mtimedb, myopts, |
25 |
spinner, mergelist, favorites, digraph): |
26 |
@@ -9415,20 +9416,41 @@ |
27 |
# If only one package failed then just show it's |
28 |
# whole log for easy viewing. |
29 |
failed_pkg = self._failed_pkgs_all[-1] |
30 |
- log_path = failed_pkg.log_path |
31 |
- if log_path is not None: |
32 |
+ build_dir = failed_pkg.build_dir |
33 |
+ log_file = None |
34 |
+ |
35 |
+ log_paths = [failed_pkg.build_log] |
36 |
+ |
37 |
+ if not (build_dir and os.path.isdir(build_dir)): |
38 |
+ log_paths.append(failed_pkg.fetch_log) |
39 |
+ |
40 |
+ for log_path in log_paths: |
41 |
+ if not log_path: |
42 |
+ continue |
43 |
+ |
44 |
try: |
45 |
+ log_size = os.stat(log_path).st_size |
46 |
+ except OSError: |
47 |
+ continue |
48 |
+ |
49 |
+ if log_size == 0: |
50 |
+ continue |
51 |
+ |
52 |
+ try: |
53 |
log_file = open(log_path, 'rb') |
54 |
except IOError: |
55 |
- pass |
56 |
- else: |
57 |
- try: |
58 |
- for line in log_file: |
59 |
- writemsg_level(line, noiselevel=-1) |
60 |
- finally: |
61 |
- log_file.close() |
62 |
- failure_log_shown = True |
63 |
+ continue |
64 |
|
65 |
+ break |
66 |
+ |
67 |
+ if log_file is not None: |
68 |
+ try: |
69 |
+ for line in log_file: |
70 |
+ writemsg_level(line, noiselevel=-1) |
71 |
+ finally: |
72 |
+ log_file.close() |
73 |
+ failure_log_shown = True |
74 |
+ |
75 |
if background and not failure_log_shown and \ |
76 |
self._failed_pkgs_all and \ |
77 |
self._failed_pkgs_die_msgs and \ |
78 |
@@ -9496,9 +9518,16 @@ |
79 |
def _do_merge_exit(self, merge): |
80 |
pkg = merge.merge.pkg |
81 |
if merge.returncode != os.EX_OK: |
82 |
- log_path = merge.merge.settings.get("PORTAGE_LOG_FILE") |
83 |
+ settings = merge.merge.settings |
84 |
+ build_dir = settings.get("PORTAGE_BUILDDIR") |
85 |
+ build_log = settings.get("PORTAGE_LOG_FILE") |
86 |
+ fetch_log = self._fetch_Log |
87 |
+ |
88 |
self._failed_pkgs.append(self._failed_pkg( |
89 |
- log_path=log_path, pkg=pkg, returncode=merge.returncode)) |
90 |
+ build_dir=build_dir, build_log=build_log, |
91 |
+ fetch_log=fetch_log, pkg=pkg, |
92 |
+ returncode=merge.returncode)) |
93 |
+ |
94 |
self._status_display.failed = len(self._failed_pkgs) |
95 |
return |
96 |
|
97 |
@@ -9533,9 +9562,16 @@ |
98 |
self._task_queues.merge.add(merge) |
99 |
self._status_display.merges = len(self._task_queues.merge) |
100 |
else: |
101 |
- log_path = build.settings.get("PORTAGE_LOG_FILE") |
102 |
+ settings = build.settings |
103 |
+ build_dir = settings.get("PORTAGE_BUILDDIR") |
104 |
+ fetch_log = self._fetch_log |
105 |
+ build_log = settings.get("PORTAGE_LOG_FILE") |
106 |
+ |
107 |
self._failed_pkgs.append(self._failed_pkg( |
108 |
- log_path=log_path, pkg=build.pkg, returncode=build.returncode)) |
109 |
+ build_dir=build_dir, build_log=build_log, |
110 |
+ fetch_log=fetch_log, pkg=build.pkg, |
111 |
+ returncode=build.returncode)) |
112 |
+ |
113 |
self._status_display.failed = len(self._failed_pkgs) |
114 |
self._deallocate_config(build.settings) |
115 |
self._jobs -= 1 |