summaryrefslogtreecommitdiffstats
path: root/pym/_emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-09-30 01:30:00 -0700
committerZac Medico <zmedico@gentoo.org>2011-09-30 01:30:00 -0700
commitd1a3c0f5ab81d1dbf70c0b8e5322cfb2d11b8ce7 (patch)
tree7681a0e08874199793568c11df2ced5232d44d2c /pym/_emerge
parenta24bcfcfad95fcf4b71064e386fb6272f41ff49a (diff)
downloadportage-d1a3c0f5ab81d1dbf70c0b8e5322cfb2d11b8ce7.tar.gz
portage-d1a3c0f5ab81d1dbf70c0b8e5322cfb2d11b8ce7.tar.bz2
portage-d1a3c0f5ab81d1dbf70c0b8e5322cfb2d11b8ce7.zip
depgraph: pull in new-style virtuals more
This causes new-style virtuals to get pulled in for virtuals that are already satisfied by installed old-style virtuals. This case is common, due to PROVIDE being (removed without revision bump) from lots of ebuilds.
Diffstat (limited to 'pym/_emerge')
-rw-r--r--pym/_emerge/depgraph.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/pym/_emerge/depgraph.py b/pym/_emerge/depgraph.py
index da61709e7..9638ce9a7 100644
--- a/pym/_emerge/depgraph.py
+++ b/pym/_emerge/depgraph.py
@@ -3953,6 +3953,12 @@ class depgraph(object):
e_pkg = self._dynamic_config._slot_pkg_map[root].get(pkg.slot_atom)
if not e_pkg:
break
+
+ if e_pkg.cp != atom_cp and \
+ self._have_new_virt(root, atom_cp):
+ # pull in a new-style virtual instead
+ break
+
# Use PackageSet.findAtomForPackage()
# for PROVIDE support.
if atom_set.findAtomForPackage(e_pkg, modified_use=self._pkg_use_enabled(e_pkg)):