From ba0a1dc73af8a17118bab2d119bdf31fc7bf39d6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Wed, 18 Oct 2006 12:20:40 +0000 Subject: Handle unresolvable blockers properly for bug #151822. svn path=/main/trunk/; revision=4753 --- bin/emerge | 15 +++++++++++++-- 1 file 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 -- cgit v1.2.3-1-g7c22