diff options
author | Zac Medico <zmedico@gentoo.org> | 2009-09-19 14:57:18 +0000 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2009-09-19 14:57:18 +0000 |
commit | 9b8ce4835ede7499df792aa51e4994a284576049 (patch) | |
tree | 1ccaceb968cf667eacafa7b041b74e685aecd43e /pym/_emerge | |
parent | ba009945d2add8d5282e5b5a78d2c95c182dd9f5 (diff) | |
download | portage-9b8ce4835ede7499df792aa51e4994a284576049.tar.gz portage-9b8ce4835ede7499df792aa51e4994a284576049.tar.bz2 portage-9b8ce4835ede7499df792aa51e4994a284576049.zip |
Fix _expand_new_virtuals() to preserve USE deps in atoms for new-style
virtuals, and update the corresponding depgraph code.
svn path=/main/trunk/; revision=14281
Diffstat (limited to 'pym/_emerge')
-rw-r--r-- | pym/_emerge/depgraph.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index b44e5b19f..d52d5ac6a 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1901,16 +1901,20 @@ class depgraph(object): for node in atom_graph: if isinstance(node, Atom): continue - if node == parent.cpv: + if node is parent: pkg = parent else: - virt_atom = Atom('=' + node) + pkg, virt_atom = node if virt_atom not in chosen_atoms: continue - pkg, existing_node = self._select_package( - root, virt_atom) - if pkg is None: - raise AssertionError(node) + if not portage.match_from_list(virt_atom, [pkg]): + # Typically this means that the atom + # specifies USE deps that are unsatisfied + # by the selected package. The caller will + # record this as an unsatisfied dependency + # when necessary. + continue + selected_atoms[pkg] = [atom for atom in \ atom_graph.child_nodes(node) if atom in chosen_atoms] @@ -5000,6 +5004,8 @@ class _dep_check_composite_db(portage.dbapi): metadata = self._cpv_pkg_map[cpv].metadata return [metadata.get(x, "") for x in wants] + def match_pkgs(self, atom): + return [self._cpv_pkg_map[cpv] for cpv in self.match(atom)] def ambiguous_package_name(arg, atoms, root_config, spinner, myopts): |