summaryrefslogtreecommitdiffstats
path: root/pym/_emerge/unmerge.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-05-08 23:08:43 -0700
committerZac Medico <zmedico@gentoo.org>2011-05-08 23:08:43 -0700
commit1a693adbc6ea559e92f88268c0d5b3d54c0f7c06 (patch)
treeb59ca0e3d43a1b1950ebff9ba3da05c1e52b8cd0 /pym/_emerge/unmerge.py
parentb3d51db7521faa2f7c2dbc0d71894e46e74231d0 (diff)
downloadportage-1a693adbc6ea559e92f88268c0d5b3d54c0f7c06.tar.gz
portage-1a693adbc6ea559e92f88268c0d5b3d54c0f7c06.tar.bz2
portage-1a693adbc6ea559e92f88268c0d5b3d54c0f7c06.zip
unmerge: skip getvirtuals() if cat is not virtual
This allows us to avoid triggering the old-style virtual code which scans /var/db/pkg/*/*/PROVIDE.
Diffstat (limited to 'pym/_emerge/unmerge.py')
-rw-r--r--pym/_emerge/unmerge.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/pym/_emerge/unmerge.py b/pym/_emerge/unmerge.py
index 7e66ff9fb..6c0ef8dbc 100644
--- a/pym/_emerge/unmerge.py
+++ b/pym/_emerge/unmerge.py
@@ -67,8 +67,14 @@ def unmerge(root_config, myopts, unmerge_action,
syslist = []
for x in realsyslist:
- mycp = portage.dep_getkey(x)
- if mycp in settings.getvirtuals():
+ mycp = x.cp
+ # Since Gentoo stopped using old-style virtuals in
+ # 2011, typically it's possible to avoid getvirtuals()
+ # calls entirely. It will not be triggered here by
+ # new-style virtuals since those are expanded to
+ # non-virtual atoms above by expand_new_virt().
+ if mycp.startswith("virtual/") and \
+ mycp in settings.getvirtuals():
providers = []
for provider in settings.getvirtuals()[mycp]:
if vartree.dbapi.match(provider):