diff options
-rwxr-xr-x | bin/emerge | 15 |
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 |