summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-02-24 05:15:19 +0000
committerZac Medico <zmedico@gentoo.org>2010-02-24 05:15:19 +0000
commitfb5dfe2e31c8570ec0ea2a40a9efb32f994447b5 (patch)
treeecc50c95baab416abd8ddfec109252eeb3ddeeb0 /pym/_emerge/depgraph.py
parentAdd missing writmsg import. (diff)
downloadportage-idfetch-fb5dfe2e31c8570ec0ea2a40a9efb32f994447b5.tar.gz
portage-idfetch-fb5dfe2e31c8570ec0ea2a40a9efb32f994447b5.tar.bz2
portage-idfetch-fb5dfe2e31c8570ec0ea2a40a9efb32f994447b5.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. svn path=/main/trunk/; revision=15446
Diffstat (limited to 'pym/_emerge/depgraph.py')
-rw-r--r--pym/_emerge/depgraph.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index e6bffbc7..86b4cfcc 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(