summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-10-14 22:10:28 -0700
committerZac Medico <zmedico@gentoo.org>2011-10-14 22:10:28 -0700
commit4580734caa18250bd0c2bc8241dc36f308cdef2b (patch)
tree09cbc1db78bf65618d29f80c8c278e61905219dc
parent1d170ec97f6c9db495ba9cbe9256623e1b946d86 (diff)
downloadportage-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.py4
-rw-r--r--pym/portage/dbapi/porttree.py20
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."""