summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-03-11 03:23:16 +0000
committerZac Medico <zmedico@gentoo.org>2009-03-11 03:23:16 +0000
commit6146bde2feee2c33e6b94cc3ab10687c063b92b2 (patch)
tree2fa6325b87d8980f1013f7d729f72914c4f2612b
parent7571c15586b03fc5761a28bdce0b5f90e0e4c3d6 (diff)
downloadportage-6146bde2feee2c33e6b94cc3ab10687c063b92b2.tar.gz
portage-6146bde2feee2c33e6b94cc3ab10687c063b92b2.tar.bz2
portage-6146bde2feee2c33e6b94cc3ab10687c063b92b2.zip
Inside depgraph.loadResumeCommand(), always enable deep traversal of
dependencies. This is necessary for correct --keep-going or --resume operation in case a package from a group of circularly dependent packages fails. (trunk r12548) svn path=/main/branches/2.1.6/; revision=12834
-rw-r--r--pym/_emerge/__init__.py21
1 files changed, 14 insertions, 7 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py
index 2b764fad6..7002335dd 100644
--- a/pym/_emerge/__init__.py
+++ b/pym/_emerge/__init__.py
@@ -8467,6 +8467,19 @@ class depgraph(object):
else:
self._select_package = self._select_pkg_from_graph
self.myparams.add("selective")
+ # Always traverse deep dependencies in order to account for
+ # potentially unsatisfied dependencies of installed packages.
+ # This is necessary for correct --keep-going or --resume operation
+ # in case a package from a group of circularly dependent packages
+ # fails. In this case, a package which has recently been installed
+ # may have an unsatisfied circular dependency (pulled in by
+ # PDEPEND, for example). So, even though a package is already
+ # installed, it may not have all of it's dependencies satisfied, so
+ # it may not be usable. If such a package is in the subgraph of
+ # deep depenedencies of a scheduled build, that build needs to
+ # be cancelled. In order for this type of situation to be
+ # recognized, deep traversal of dependencies is required.
+ self.myparams.add("deep")
favorites = resume_data.get("favorites")
args_set = self._sets["args"]
@@ -8500,14 +8513,8 @@ class depgraph(object):
if not self._create_graph(allow_unsatisfied=True):
return False
- # When appropriate, complete the graph before analyzing
- # any unsatisfied deps that may exist.
- if not self._complete_graph():
- return False
-
unsatisfied_deps = []
- for dep in self._unsatisfied_deps + \
- self._initially_unsatisfied_deps:
+ for dep in self._unsatisfied_deps:
if not isinstance(dep.parent, Package):
continue
if dep.parent.operation == "merge":