Fix PackageVirtualDbapi.cpv_inject() to make sure packages with duplicate
authorZac Medico <zmedico@gentoo.org>
Mon, 28 Apr 2008 02:03:48 +0000 (02:03 -0000)
committerZac Medico <zmedico@gentoo.org>
Mon, 28 Apr 2008 02:03:48 +0000 (02:03 -0000)
cpv or slot are handled correctly. (trunk r10014)

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

bin/emerge

index 21d63ebe35963b5c3254ada154bd403c61e3d8ed..dc7f88742c27ce0088843d35a9a70677aa5d2a71 100755 (executable)
@@ -1722,11 +1722,17 @@ class PackageVirtualDbapi(portage.dbapi):
                if cp_list is None:
                        cp_list = []
                        self._cp_map[pkg.cp] = cp_list
+               e_pkg = self._cpv_map.get(pkg.cpv)
+               if e_pkg is not None:
+                       if e_pkg == pkg:
+                               return
+                       self.cpv_remove(e_pkg)
                for e_pkg in cp_list:
                        if e_pkg.slot_atom == pkg.slot_atom:
                                if e_pkg == pkg:
                                        return
                                self.cpv_remove(e_pkg)
+                               break
                cp_list.append(pkg)
                self._cpv_map[pkg.cpv] = pkg
                self._clear_cache()