aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-02-11 16:09:22 -0800
committerZac Medico <zmedico@gentoo.org>2011-02-11 16:09:22 -0800
commit5b16e0d800f34dc90cdd8c505172ad16b97f0af4 (patch)
tree0131bf6b28aa77d47632ebacf025876ff460416c /pym/_emerge/depgraph.py
parentdepgraph: avoid reinstall of identical binpkg (diff)
downloadportage-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/depgraph.py')
-rw-r--r--pym/_emerge/depgraph.py13
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: