1 |
Author: zmedico |
2 |
Date: 2009-01-22 21:13:52 +0000 (Thu, 22 Jan 2009) |
3 |
New Revision: 12548 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
Log: |
8 |
Inside depgraph.loadResumeCommand(), always enable deep traversal of |
9 |
dependencies. This is necessary for correct --keep-going or --resume operation |
10 |
in case a package from a group of circularly dependent packages fails. |
11 |
|
12 |
|
13 |
Modified: main/trunk/pym/_emerge/__init__.py |
14 |
=================================================================== |
15 |
--- main/trunk/pym/_emerge/__init__.py 2009-01-22 05:55:24 UTC (rev 12547) |
16 |
+++ main/trunk/pym/_emerge/__init__.py 2009-01-22 21:13:52 UTC (rev 12548) |
17 |
@@ -8483,6 +8483,19 @@ |
18 |
else: |
19 |
self._select_package = self._select_pkg_from_graph |
20 |
self.myparams.add("selective") |
21 |
+ # Always traverse deep dependencies in order to account for |
22 |
+ # potentially unsatisfied dependencies of installed packages. |
23 |
+ # This is necessary for correct --keep-going or --resume operation |
24 |
+ # in case a package from a group of circularly dependent packages |
25 |
+ # fails. In this case, a package which has recently been installed |
26 |
+ # may have an unsatisfied circular dependency (pulled in by |
27 |
+ # PDEPEND, for example). So, even though a package is already |
28 |
+ # installed, it may not have all of it's dependencies satisfied, so |
29 |
+ # it may not be usable. If such a package is in the subgraph of |
30 |
+ # deep depenedencies of a scheduled build, that build needs to |
31 |
+ # be cancelled. In order for this type of situation to be |
32 |
+ # recognized, deep traversal of dependencies is required. |
33 |
+ self.myparams.add("deep") |
34 |
|
35 |
favorites = resume_data.get("favorites") |
36 |
args_set = self._sets["args"] |
37 |
@@ -8516,14 +8529,8 @@ |
38 |
if not self._create_graph(allow_unsatisfied=True): |
39 |
return False |
40 |
|
41 |
- # When appropriate, complete the graph before analyzing |
42 |
- # any unsatisfied deps that may exist. |
43 |
- if not self._complete_graph(): |
44 |
- return False |
45 |
- |
46 |
unsatisfied_deps = [] |
47 |
- for dep in self._unsatisfied_deps + \ |
48 |
- self._initially_unsatisfied_deps: |
49 |
+ for dep in self._unsatisfied_deps: |
50 |
if not isinstance(dep.parent, Package): |
51 |
continue |
52 |
if dep.parent.operation == "merge": |