Handle unresolvable blockers properly for bug #151822.
authorZac Medico <zmedico@gentoo.org>
Wed, 18 Oct 2006 12:20:40 +0000 (12:20 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 18 Oct 2006 12:20:40 +0000 (12:20 -0000)
svn path=/main/trunk/; revision=4753

bin/emerge

index 8f0d4510c0829ece36d6978bf4aeddc8249cdba5..0d859479d7270f0f9911c72167cd9b99ee4b3933 100755 (executable)
@@ -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