summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-10-18 12:20:40 +0000
committerZac Medico <zmedico@gentoo.org>2006-10-18 12:20:40 +0000
commitba0a1dc73af8a17118bab2d119bdf31fc7bf39d6 (patch)
tree730077ae6c7de38c8bbfa184f89e7def69f2db02
parentd43b47b4a891ef198c84d2fead4ceba18a01ecea (diff)
downloadportage-ba0a1dc73af8a17118bab2d119bdf31fc7bf39d6.tar.gz
portage-ba0a1dc73af8a17118bab2d119bdf31fc7bf39d6.tar.bz2
portage-ba0a1dc73af8a17118bab2d119bdf31fc7bf39d6.zip
Handle unresolvable blockers properly for bug #151822.
svn path=/main/trunk/; revision=4753
-rwxr-xr-xbin/emerge15
1 files changed, 13 insertions, 2 deletions
diff --git a/bin/emerge b/bin/emerge
index 8f0d4510c..0d859479d 100755
--- a/bin/emerge
+++ b/bin/emerge
@@ -1432,11 +1432,22 @@ class depgraph:
enforce correct merge order."""
fakedb = self.mydbapi[myroot]
new_pkgs = []
+ unresolveable = False
for cpv in blocked_pkgs:
myslot = vardb.aux_get(cpv, ["SLOT"])[0]
myslot_atom = "%s:%s" % (portage.dep_getkey(cpv), myslot)
- new_pkgs.append(
- (myslot_atom, fakedb.match(myslot_atom)[0]))
+ mymatches = fakedb.match(myslot_atom)
+ if mymatches:
+ new_pkgs.append((myslot_atom, mymatches[0]))
+ else:
+ """There's an installed package that's blocked and
+ there's no upgrade found to invalidate it, so leave
+ this blocker in the digraph."""
+ unresolveable = True
+ break
+ if unresolveable:
+ continue
+
for parent in self.digraph.parent_nodes(blocker):
ptype, proot, pcpv, pstatus = parent.split()
pdbapi = self.trees[proot][self.pkg_tree_map[ptype]].dbapi