Bug #195370 - Prevent bogus upgrade display when a
authorZac Medico <zmedico@gentoo.org>
Fri, 12 Oct 2007 06:58:10 +0000 (06:58 -0000)
committerZac Medico <zmedico@gentoo.org>
Fri, 12 Oct 2007 06:58:10 +0000 (06:58 -0000)
new-style virtual is first installed and it replaces
an old-style virtual. (trunk r8039)

svn path=/main/branches/2.1.2/; revision=8070

bin/emerge

index af1042c8fa31220f674b4929cd00d8c66089d103..e93872291aa1b70bcd9ef66cfeaffa9bf2d0f95b 100755 (executable)
@@ -2957,10 +2957,15 @@ class depgraph:
                                                        counters.reinst += 1
                                elif vardb.match(portage.dep_getkey(pkg_key)):
                                        mynewslot = mydbapi.aux_get(pkg_key, ["SLOT"])[0]
-                                       myoldlist = self.trees[x[1]]["vartree"].dbapi.match(
-                                               portage.pkgsplit(x[2])[0])
-                                       myinslotlist = [inst_pkg for inst_pkg in myoldlist
-                                               if mynewslot == vardb.aux_get(inst_pkg, ["SLOT"])[0]]
+                                       slot_atom = "%s:%s" % \
+                                               (portage.cpv_getkey(pkg_key), mynewslot)
+                                       myinslotlist = vardb.match(slot_atom)
+                                       # If this is the first install of a new-style virtual, we
+                                       # need to filter out old-style virtual matches.
+                                       if myinslotlist and \
+                                               portage.cpv_getkey(myinslotlist[0]) != \
+                                               portage.cpv_getkey(pkg_key):
+                                               myinslotlist = None
                                        if myinslotlist:
                                                myoldbest=portage.best(myinslotlist)
                                                addl="   "+fetch