diff options
-rwxr-xr-x | bin/repoman | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/bin/repoman b/bin/repoman index 0cc74f426..fabde2821 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 |