Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r11331 - main/trunk/pym/_emerge
Date: Tue, 05 Aug 2008 06:58:08
Message-Id: E1KQGUg-0003Eq-Dl@stork.gentoo.org
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