Split out a depgraph method to check if a specific new-style virtual
authorZac Medico <zmedico@gentoo.org>
Tue, 8 Apr 2008 23:55:25 +0000 (23:55 -0000)
committerZac Medico <zmedico@gentoo.org>
Tue, 8 Apr 2008 23:55:25 +0000 (23:55 -0000)
package exists.

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

pym/_emerge/__init__.py

index 46a569ed4581d7d98c04dba4ed4aed06d97ee28b..955ab897900778f146d2914a4f1fde1f8a77f8cd 100644 (file)
@@ -2011,6 +2011,15 @@ class depgraph(object):
                        return 0
                return 1
 
+       def _have_new_virt(self, root, atom_cp):
+               ret = False
+               for db, pkg_type, built, installed, db_keys in \
+                       self._filtered_trees[root]["dbs"]:
+                       if db.cp_list(atom_cp):
+                               ret = True
+                               break
+               return ret
+
        def _iter_atoms_for_pkg(self, pkg):
                # TODO: add multiple $ROOT support
                if pkg.root != self.target_root:
@@ -2018,15 +2027,9 @@ class depgraph(object):
                atom_arg_map = self._atom_arg_map
                for atom in self._set_atoms.iterAtomsForPackage(pkg):
                        atom_cp = portage.dep_getkey(atom)
-                       if atom_cp != pkg.cp:
-                               have_new_virt = False
-                               for db, pkg_type, built, installed, db_keys in \
-                                       self._filtered_trees[pkg.root]["dbs"]:
-                                       if db.cp_list(atom_cp):
-                                               have_new_virt = True
-                                               break
-                               if have_new_virt:
-                                       continue
+                       if atom_cp != pkg.cp and \
+                               self._have_new_virt(pkg.root, atom_cp):
+                               continue
                        for arg in atom_arg_map[(atom, pkg.root)]:
                                if isinstance(arg, PackageArg) and \
                                        arg.package != pkg: