diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-10-14 22:10:28 -0700 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-10-14 22:10:28 -0700 |
commit | 4580734caa18250bd0c2bc8241dc36f308cdef2b (patch) | |
tree | 09cbc1db78bf65618d29f80c8c278e61905219dc | |
parent | 1d170ec97f6c9db495ba9cbe9256623e1b946d86 (diff) | |
download | portage-4580734caa18250bd0c2bc8241dc36f308cdef2b.tar.gz portage-4580734caa18250bd0c2bc8241dc36f308cdef2b.tar.bz2 portage-4580734caa18250bd0c2bc8241dc36f308cdef2b.zip |
emerge --metadata: fix breakage
The hunk that got removed from action_metadata in commit
d4ea29bf6a3ce35d49e0f54f9173e3a6e42da2d6 is actually needed when
FEATURES=metadata-transfer is enabled.
-rw-r--r-- | pym/_emerge/actions.py | 4 | ||||
-rw-r--r-- | pym/portage/dbapi/porttree.py | 20 |
2 files changed, 18 insertions, 6 deletions
diff --git a/pym/_emerge/actions.py b/pym/_emerge/actions.py index c449b5874..71a090233 100644 --- a/pym/_emerge/actions.py +++ b/pym/_emerge/actions.py @@ -1660,6 +1660,10 @@ def action_metadata(settings, portdb, myopts, porttrees=None): porttrees_data = [] for path in porttrees: src_db = portdb._pregen_auxdb.get(path) + if src_db is None: + # portdbapi does not populate _pregen_auxdb + # when FEATURES=metadata-transfer is enabled + src_db = portdb._create_pregen_cache(path) if src_db is not None: porttrees_data.append(TreeData(portdb.auxdb[path], diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py index bffae36bd..36b326c14 100644 --- a/pym/portage/dbapi/porttree.py +++ b/pym/portage/dbapi/porttree.py @@ -182,6 +182,8 @@ class portdbapi(dbapi): # ~harring filtered_auxdbkeys = [x for x in auxdbkeys if not x.startswith("UNUSED_0")] filtered_auxdbkeys.sort() + filtered_auxdbkeys = tuple(filtered_auxdbkeys) + self._filtered_auxdbkeys = filtered_auxdbkeys # If secpass < 1, we don't want to write to the cache # since then we won't be able to apply group permissions # to the cache entries/directories. @@ -212,14 +214,9 @@ class portdbapi(dbapi): for x in self.porttrees: if x in self._pregen_auxdb: continue - conf = self.repositories.get_repo_for_location(x) - cache = conf.get_pregenerated_cache(filtered_auxdbkeys, readonly=True) + cache = self._create_pregen_cache(x) if cache is not None: self._pregen_auxdb[x] = cache - try: - cache.ec = self._repo_info[x].eclass_db - except AttributeError: - pass # Selectively cache metadata in order to optimize dep matching. self._aux_cache_keys = set( ["DEPEND", "EAPI", "INHERITED", "IUSE", "KEYWORDS", "LICENSE", @@ -229,6 +226,17 @@ class portdbapi(dbapi): self._aux_cache = {} self._broken_ebuilds = set() + def _create_pregen_cache(self, tree): + conf = self.repositories.get_repo_for_location(tree) + cache = conf.get_pregenerated_cache( + self._filtered_auxdbkeys, readonly=True) + if cache is not None: + try: + cache.ec = self._repo_info[tree].eclass_db + except AttributeError: + pass + return cache + def _init_cache_dirs(self): """Create /var/cache/edb/dep and adjust permissions for the portage group.""" |