summaryrefslogtreecommitdiffstats
path: root/pym/emerge
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2007-07-06 22:58:32 +0000
committerZac Medico <zmedico@gentoo.org>2007-07-06 22:58:32 +0000
commitf5e30742ae2aa94591b526543a374712caa8e1fc (patch)
treed1bd02b39565be809f582b4fa2a754b18b96e852 /pym/emerge
parent39e952a62b6c9b6b92470796b114fca17dfb93ea (diff)
downloadportage-f5e30742ae2aa94591b526543a374712caa8e1fc.tar.gz
portage-f5e30742ae2aa94591b526543a374712caa8e1fc.tar.bz2
portage-f5e30742ae2aa94591b526543a374712caa8e1fc.zip
When depgraph updates preferences for old-style virtuals, also update them in the global config so that they are consistent everywhere. Optimize config.setinst() to minimize the work done.
svn path=/main/trunk/; revision=7185
Diffstat (limited to 'pym/emerge')
-rw-r--r--pym/emerge/__init__.py7
1 files changed, 6 insertions, 1 deletions
diff --git a/pym/emerge/__init__.py b/pym/emerge/__init__.py
index 4bf288af5..830e221de 100644
--- a/pym/emerge/__init__.py
+++ b/pym/emerge/__init__.py
@@ -1744,9 +1744,14 @@ class depgraph(object):
if p_status == "merge":
# Update old-style virtuals if this package provides any.
# These are needed for dep_virtual calls inside dep_check.
- p_db = self.trees[p_root][self.pkg_tree_map[p_type]].dbapi
+ p_db = self.mydbapi[p_root] # contains cached metadata
try:
self.pkgsettings[p_root].setinst(p_key, p_db)
+ # For consistency, also update the global virtuals.
+ settings = self.roots[p_root].settings
+ settings.unlock()
+ settings.setinst(p_key, p_db)
+ settings.lock()
except portage.exception.InvalidDependString, e:
provide = p_db.aux_get(p_key, ["PROVIDE"])[0]
show_invalid_depstring_notice(myparent, provide, str(e))