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

svn path=/main/trunk/; revision=10014

pym/_emerge/__init__.py

index 06060b0fdc301c39e52d3c7984bd10a76c08cc4a..9476343540a3f35f43b81a0b6d82699f2c02fcde 100644 (file)
@@ -1583,11 +1583,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()