diff options
author | Zac Medico <zmedico@gentoo.org> | 2007-10-31 02:38:29 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2007-10-31 02:38:29 +0000 |
commit | dbcdd507bdff67d884dc4168fe99db35fe0f8d60 (patch) | |
tree | 113ef03811b615075f799637a1b1ae3615ceb96f | |
parent | a697c98e010b92c9da13060fd9a173136d67cc08 (diff) | |
download | portage-dbcdd507bdff67d884dc4168fe99db35fe0f8d60.tar.gz portage-dbcdd507bdff67d884dc4168fe99db35fe0f8d60.tar.bz2 portage-dbcdd507bdff67d884dc4168fe99db35fe0f8d60.zip |
Gather some ignored dependencies so that they can be properly
processed by the depgraph when "conistent" mode is enabled.
svn path=/main/trunk/; revision=8346
-rw-r--r-- | pym/_emerge/__init__.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/pym/_emerge/__init__.py b/pym/_emerge/__init__.py index 1aaa0d04c..d48b4a1a1 100644 --- a/pym/_emerge/__init__.py +++ b/pym/_emerge/__init__.py @@ -1194,6 +1194,7 @@ class depgraph(object): self._missing_args = [] self._dep_stack = [] self._unsatisfied_deps = [] + self._ignored_deps = [] self._required_set_names = set(["args", "system", "world"]) self._select_atoms = self._select_atoms_highest_available self._select_package = self._select_pkg_highest_available @@ -1275,6 +1276,7 @@ class depgraph(object): nodeps = "--nodeps" in self.myopts empty = "empty" in self.myparams deep = "deep" in self.myparams + consistent = "consistent" in self.myparams dep_stack = self._dep_stack while dep_stack: dep = dep_stack.pop() @@ -1319,6 +1321,8 @@ class depgraph(object): # should have been masked. raise if not myarg: + if consistent: + self._ignored_deps.append(dep) continue if not self._add_pkg(dep_pkg, myparent=dep.parent, @@ -1479,11 +1483,14 @@ class depgraph(object): emerge --deep <pkgspec>; we need to recursively check dependencies of pkgspec If we are in --nodeps (no recursion) mode, we obviously only check 1 level of dependencies. """ - if "deep" not in self.myparams and not merging and \ - not ("--update" in self.myopts and arg and merging): - return 1 - elif "recurse" not in self.myparams: + dep_stack = self._dep_stack + if "recurse" not in self.myparams: return 1 + elif pkg.installed and \ + "deep" not in self.myparams: + if "consistent" not in self.myparams: + return 1 + dep_stack = self._ignored_deps self.spinner.update() @@ -1552,7 +1559,7 @@ class depgraph(object): mypriority = dep_priority.copy() if not blocker and vardb.match(atom): mypriority.satisfied = True - self._dep_stack.append( + dep_stack.append( Dependency(arg=arg, atom=atom, blocker=blocker, depth=depth, parent=pkg, priority=mypriority, root=dep_root)) @@ -2339,7 +2346,7 @@ class depgraph(object): if root == self.target_root and \ ("deep" in self.myparams or "empty" in self.myparams): required_set_names.difference_update(self._sets) - if not required_set_names: + if not required_set_names and not self._ignored_deps: continue setconfig = self.roots[root].settings.setconfig required_set_atoms = set() @@ -2354,6 +2361,9 @@ class depgraph(object): self._dep_stack.append( Dependency(atom=atom, depth=0, priority=DepPriority(), root=root)) + if self._ignored_deps: + self._dep_stack.extend(self._ignored_deps) + self._ignored_deps = [] if not self._create_graph(allow_unsatisfied=True): return 0 # Check the unsatisfied deps to see if any initially satisfied deps |