1 |
Author: zmedico |
2 |
Date: 2008-10-12 00:09:40 +0000 (Sun, 12 Oct 2008) |
3 |
New Revision: 11679 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Make the Scheduler class treat failed fetches the same as other failed |
9 |
packages, and don't bail out due to a failure when in --fetchonly mode. |
10 |
This fixes an issue with --fetchonly bailing out instead of continuing |
11 |
to fetch. |
12 |
|
13 |
|
14 |
Modified: main/trunk/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/trunk/pym/_emerge/__init__.py 2008-10-11 20:31:48 UTC (rev 11678) |
17 |
+++ main/trunk/pym/_emerge/__init__.py 2008-10-12 00:09:40 UTC (rev 11679) |
18 |
@@ -3484,7 +3484,7 @@ |
19 |
|
20 |
__slots__ = ("args_set", |
21 |
"binpkg_opts", "build_opts", "config_pool", "emerge_opts", |
22 |
- "failed_fetches", "find_blockers", "logger", "mtimedb", "pkg", |
23 |
+ "find_blockers", "logger", "mtimedb", "pkg", |
24 |
"pkg_count", "pkg_to_replace", "prefetcher", |
25 |
"settings", "statusMessage", "world_atom") + \ |
26 |
("_install_task",) |
27 |
@@ -3544,7 +3544,7 @@ |
28 |
settings=settings, world_atom=world_atom) |
29 |
|
30 |
self._install_task = build |
31 |
- self._start_task(build, self._ebuild_exit) |
32 |
+ self._start_task(build, self._default_final_exit) |
33 |
return |
34 |
|
35 |
elif pkg.type_name == "binary": |
36 |
@@ -3560,12 +3560,6 @@ |
37 |
self._start_task(binpkg, self._default_final_exit) |
38 |
return |
39 |
|
40 |
- def _ebuild_exit(self, build): |
41 |
- if self._final_exit(build) != os.EX_OK: |
42 |
- if self.build_opts.fetchonly: |
43 |
- self.failed_fetches.append(self.pkg.cpv) |
44 |
- self.wait() |
45 |
- |
46 |
def _poll(self): |
47 |
self._install_task.poll() |
48 |
return self.returncode |
49 |
@@ -3578,7 +3572,6 @@ |
50 |
|
51 |
pkg = self.pkg |
52 |
build_opts = self.build_opts |
53 |
- failed_fetches = self.failed_fetches |
54 |
find_blockers = self.find_blockers |
55 |
logger = self.logger |
56 |
mtimedb = self.mtimedb |
57 |
@@ -9082,7 +9075,6 @@ |
58 |
self._failed_pkgs = [] |
59 |
self._failed_pkgs_all = [] |
60 |
self._failed_pkgs_die_msgs = [] |
61 |
- self._failed_fetches = [] |
62 |
self._parallel_fetch = False |
63 |
merge_count = len([x for x in mergelist \ |
64 |
if isinstance(x, Package) and x.operation == "merge"]) |
65 |
@@ -9441,34 +9433,6 @@ |
66 |
|
67 |
return prefetcher |
68 |
|
69 |
- def _show_failed_fetches(self): |
70 |
- failed_fetches = self._failed_fetches |
71 |
- if not failed_fetches or not \ |
72 |
- ("--fetchonly" in self.myopts or \ |
73 |
- "--fetch-all-uri" in self.myopts): |
74 |
- return |
75 |
- |
76 |
- if self._background: |
77 |
- msg = "Some fetch errors were " + \ |
78 |
- "encountered. Please see %s for details." % \ |
79 |
- self._fetch_log |
80 |
- else: |
81 |
- msg = "Some fetch errors were " + \ |
82 |
- "encountered. Please see above for details." |
83 |
- |
84 |
- prefix = bad(" * ") |
85 |
- msg = "".join("%s%s\n" % (prefix, line) \ |
86 |
- for line in textwrap.wrap(msg, 70)) |
87 |
- writemsg_level(msg, level=logging.ERROR, noiselevel=-1) |
88 |
- |
89 |
- msg = [] |
90 |
- msg.append("") |
91 |
- for cpv in failed_fetches: |
92 |
- msg.append(" %s" % cpv) |
93 |
- msg.append("") |
94 |
- writemsg_level("".join("%s%s\n" % (prefix, line) \ |
95 |
- for line in msg), level=logging.ERROR, noiselevel=-1) |
96 |
- |
97 |
def _is_restart_scheduled(self): |
98 |
""" |
99 |
Check if the merge list contains a replacement |
100 |
@@ -9567,15 +9531,13 @@ |
101 |
return rval |
102 |
|
103 |
keep_going = "--keep-going" in self.myopts |
104 |
+ fetchonly = self._build_opts.fetchonly |
105 |
mtimedb = self._mtimedb |
106 |
failed_pkgs = self._failed_pkgs |
107 |
|
108 |
while True: |
109 |
rval = self._merge() |
110 |
- self._show_failed_fetches() |
111 |
- del self._failed_fetches[:] |
112 |
- |
113 |
- if rval == os.EX_OK or not keep_going: |
114 |
+ if rval == os.EX_OK or fetchonly or not keep_going: |
115 |
break |
116 |
if "resume" not in mtimedb: |
117 |
break |
118 |
@@ -9963,6 +9925,10 @@ |
119 |
if self._poll_event_handlers: |
120 |
self._poll_loop() |
121 |
|
122 |
+ def _keep_scheduling(self): |
123 |
+ return bool(self._pkg_queue and \ |
124 |
+ not (self._failed_pkgs and not self._build_opts.fetchonly)) |
125 |
+ |
126 |
def _schedule_tasks(self): |
127 |
self._schedule_tasks_imp() |
128 |
self._status_display.display() |
129 |
@@ -9974,7 +9940,7 @@ |
130 |
|
131 |
# Cancel prefetchers if they're the only reason |
132 |
# the main poll loop is still running. |
133 |
- if self._failed_pkgs and \ |
134 |
+ if self._failed_pkgs and not self._build_opts.fetchonly and \ |
135 |
not (self._jobs or self._task_queues.merge) and \ |
136 |
self._task_queues.fetch: |
137 |
self._task_queues.fetch.clear() |
138 |
@@ -9984,7 +9950,7 @@ |
139 |
self._schedule_tasks_imp() |
140 |
self._status_display.display() |
141 |
|
142 |
- return bool(self._pkg_queue and not self._failed_pkgs) |
143 |
+ return self._keep_scheduling() |
144 |
|
145 |
def _job_delay(self): |
146 |
""" |
147 |
@@ -10014,7 +9980,7 @@ |
148 |
|
149 |
while True: |
150 |
|
151 |
- if not self._pkg_queue or self._failed_pkgs: |
152 |
+ if not self._keep_scheduling(): |
153 |
return bool(state_change) |
154 |
|
155 |
if self._choose_pkg_return_early or \ |
156 |
@@ -10071,7 +10037,6 @@ |
157 |
config_pool=self._ConfigPool(pkg.root, |
158 |
self._allocate_config, self._deallocate_config), |
159 |
emerge_opts=self.myopts, |
160 |
- failed_fetches=self._failed_fetches, |
161 |
find_blockers=self._find_blockers(pkg), logger=self._logger, |
162 |
mtimedb=self._mtimedb, pkg=pkg, pkg_count=self._pkg_count.copy(), |
163 |
pkg_to_replace=pkg_to_replace, |