summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2009-09-19 14:57:18 +0000
committerZac Medico <zmedico@gentoo.org>2009-09-19 14:57:18 +0000
commit9b8ce4835ede7499df792aa51e4994a284576049 (patch)
tree1ccaceb968cf667eacafa7b041b74e685aecd43e /pym/_emerge
parentba009945d2add8d5282e5b5a78d2c95c182dd9f5 (diff)
downloadportage-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.py18
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):