diff options
author | Zac Medico <zmedico@gentoo.org> | 2010-03-02 20:58:42 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2010-03-02 20:58:42 +0000 |
commit | f66489c0f219bc697ca93b07e2f04ddbe62c585c (patch) | |
tree | 23e90c3c309a90035dc68f2c7044f5cef9a61d10 | |
parent | 6dcd482441ab8c5a97546f582f02efd27650eca6 (diff) | |
download | portage-f66489c0f219bc697ca93b07e2f04ddbe62c585c.tar.gz portage-f66489c0f219bc697ca93b07e2f04ddbe62c585c.tar.bz2 portage-f66489c0f219bc697ca93b07e2f04ddbe62c585c.zip |
Fix a logic error which causes blockers from installed packages to be
ignored in some cases. Thanks to Brian Dolbec (dol-sen) for reporting.
(trunk r15446)
svn path=/main/branches/2.1.7/; revision=15655
-rw-r--r-- | pym/_emerge/depgraph.py | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 4256ed924..6c4c7b330 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -141,6 +141,10 @@ class _dynamic_depgraph_config(object): # uninstallation but may not have been added to the graph # if the graph is not complete yet. self._blocked_world_pkgs = {} + # Contains packages whose dependencies have been traversed. + # This use used to check if we have accounted for blockers + # relevant to a package. + self._traversed_pkg_deps = set() self._slot_collision_info = {} # Slot collision nodes are not allowed to block other packages since # blocker validation is only able to account for one package per slot. @@ -1211,6 +1215,7 @@ class depgraph(object): return 0 finally: portage.dep._dep_check_strict = True + self._dynamic_config._traversed_pkg_deps.add(pkg) return 1 def _add_pkg_dep_string(self, pkg, dep_root, dep_priority, dep_string, @@ -2848,6 +2853,8 @@ class depgraph(object): cpv = pkg.cpv stale_cache.discard(cpv) pkg_in_graph = self._dynamic_config.digraph.contains(pkg) + pkg_deps_added = \ + pkg in self._dynamic_config._traversed_pkg_deps # Check for masked installed packages. Only warn about # packages that are in the graph in order to avoid warning @@ -2864,7 +2871,7 @@ class depgraph(object): blocker_atoms = None blockers = None - if pkg_in_graph: + if pkg_deps_added: blockers = [] try: blockers.extend( |