diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-05-08 23:08:43 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-05-08 23:08:43 -0700 |
commit | 1a693adbc6ea559e92f88268c0d5b3d54c0f7c06 (patch) | |
tree | b59ca0e3d43a1b1950ebff9ba3da05c1e52b8cd0 | |
parent | b3d51db7521faa2f7c2dbc0d71894e46e74231d0 (diff) | |
download | portage-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.
-rw-r--r-- | pym/_emerge/unmerge.py | 10 |
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): |