summaryrefslogtreecommitdiffstats
path: root/pym
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2010-03-02 20:58:42 +0000
committerZac Medico <zmedico@gentoo.org>2010-03-02 20:58:42 +0000
commitf66489c0f219bc697ca93b07e2f04ddbe62c585c (patch)
tree23e90c3c309a90035dc68f2c7044f5cef9a61d10 /pym
parent6dcd482441ab8c5a97546f582f02efd27650eca6 (diff)
downloadportage-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
Diffstat (limited to 'pym')
-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 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(