summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2006-12-31 15:35:02 +0000
committerZac Medico <zmedico@gentoo.org>2006-12-31 15:35:02 +0000
commita73c32979f07ba27560a84a41532705f49535824 (patch)
treeb062537c9ec9fe1da3d8bdbbe900ae8be03f0c8a /bin/repoman
parentUse slot atom matching to simplify detection of downgrades relative to instal... (diff)
downloadportage-multirepo-a73c32979f07ba27560a84a41532705f49535824.tar.gz
portage-multirepo-a73c32979f07ba27560a84a41532705f49535824.tar.bz2
portage-multirepo-a73c32979f07ba27560a84a41532705f49535824.zip
For bug #159224, use separate xmatch caches for each value of ACCEPT_KEYWORDS.
svn path=/main/trunk/; revision=5438
Diffstat (limited to 'bin/repoman')
-rwxr-xr-xbin/repoman16
1 files changed, 11 insertions, 5 deletions
diff --git a/bin/repoman b/bin/repoman
index 0cc74f42..fabde282 100755
--- a/bin/repoman
+++ b/bin/repoman
@@ -727,6 +727,7 @@ def x11_deprecation_check(depstr):
arch_caches={}
+arch_xmatch_caches = {}
for x in scanlist:
#ebuilds and digests added to cvs respectively.
if verbose:
@@ -1136,16 +1137,13 @@ for x in scanlist:
profdir = portdir+"/profiles/"+prof[0]
if prof[0] in arch_caches:
- dep_settings, xcache = arch_caches[prof[0]]
+ dep_settings = arch_caches[prof[0]]
else:
dep_settings = portage.config(
config_profile_path=profdir,
config_incrementals=portage_const.INCREMENTALS,
local_config=False)
- portdb.melt()
- portdb.freeze()
- xcache = portdb.xcache
- arch_caches[prof[0]] = (dep_settings, xcache)
+ arch_caches[prof[0]] = dep_settings
while True:
try:
# Protect ACCEPT_KEYWORDS from config.regenerate()
@@ -1154,6 +1152,14 @@ for x in scanlist:
except ValueError:
break
+ xmatch_cache_key = (prof[0], tuple(groups))
+ xcache = arch_xmatch_caches.get(xmatch_cache_key)
+ if xcache is None:
+ portdb.melt()
+ portdb.freeze()
+ xcache = portdb.xcache
+ arch_xmatch_caches[xmatch_cache_key] = xcache
+
trees["/"]["porttree"].settings = dep_settings
portdb.mysettings = dep_settings
portdb.xcache = xcache