diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-02-11 16:09:22 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-02-11 16:09:22 -0800 |
commit | 5b16e0d800f34dc90cdd8c505172ad16b97f0af4 (patch) | |
tree | 0131bf6b28aa77d47632ebacf025876ff460416c /pym/_emerge | |
parent | e4bcbdace3e0c28c39fdc9a92da38b21611638bf (diff) | |
download | portage-5b16e0d800f34dc90cdd8c505172ad16b97f0af4.tar.gz portage-5b16e0d800f34dc90cdd8c505172ad16b97f0af4.tar.bz2 portage-5b16e0d800f34dc90cdd8c505172ad16b97f0af4.zip |
depgraph: fix distorted display of virtuals
As mentioned in bug #353933, comment #4, special new-style virtual
atoms generated/distorted by _expand_new_virtuals() can prevent
extract_affecting_use() from working properly. This is fixed by
saving the original atoms so that the depgraph can map them back
into place at the appropriate step in dependency evaluation.
Diffstat (limited to 'pym/_emerge')
-rw-r--r-- | pym/_emerge/depgraph.py | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py index 0cfd1137d..91ec2509d 100644 --- a/pym/_emerge/depgraph.py +++ b/pym/_emerge/depgraph.py @@ -1240,6 +1240,12 @@ class depgraph(object): for atom, child in self._minimize_children( pkg, dep_priority, root_config, selected_atoms[pkg]): + # If this was a specially generated virtual atom + # from dep_check, map it back to the original, in + # order to avoid distortion in places like display + # or conflict resolution code. + atom = getattr(atom, '_orig_atom', atom) + if ignore_blockers and atom.blocker: # For --with-bdeps, ignore build-time only blockers # that originate from built packages. @@ -1290,6 +1296,13 @@ class depgraph(object): for atom, child in self._minimize_children( pkg, self._priority(runtime=True), root_config, atoms): + + # If this was a specially generated virtual atom + # from dep_check, map it back to the original, in + # order to avoid distortion in places like display + # or conflict resolution code. + atom = getattr(atom, '_orig_atom', atom) + # This is a GLEP 37 virtual, so its deps are all runtime. mypriority = self._priority(runtime=True) if not atom.blocker: |