commit: 84431fe188ed1b3e2e7b52918329bd696d8304b1
Author: Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Mon Jul 16 05:07:10 2018 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Mon Jul 16 05:18:51 2018 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=84431fe1
portdbapi.cp_list: honor porttrees modifications (bug 650814)
Consumers, such as repoman and emirrordist, may modify the porttrees
attribute in order to modify the effective set of repositories for all
portdbapi operations.
Fixes: 27eeeb6e4fc8 ("portdbapi.cp_list: cache repo associations (bug 650814)")
Bug: https://bugs.gentoo.org/650814
pym/portage/dbapi/porttree.py | 25 +++++++++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/pym/portage/dbapi/porttree.py b/pym/portage/dbapi/porttree.py
index 2e271ea76..677452273 100644
--- a/pym/portage/dbapi/porttree.py
+++ b/pym/portage/dbapi/porttree.py
@@ -322,6 +322,26 @@ class portdbapi(dbapi):
self._better_cache = None
self._broken_ebuilds = set()
+ def _set_porttrees(self, porttrees):
+ """
+ Consumers, such as repoman and emirrordist, may modify the
porttrees
+ attribute in order to modify the effective set of repositories
for
+ all portdbapi operations.
+
+ @param porttrees: list of repo locations, in ascending order by
+ repo priority
+ @type porttrees: list
+ """
+ self._porttrees_repos = portage.OrderedDict((repo.name, repo)
+ for repo in
(self.repositories.get_repo_for_location(location)
+ for location in porttrees))
+ self._porttrees = tuple(porttrees)
+
+ def _get_porttrees(self):
+ return self._porttrees
+
+ porttrees = property(_get_porttrees, _set_porttrees)
+
@property
def _event_loop(self):
if portage._internal_caller:
@@ -972,9 +992,10 @@ class portdbapi(dbapi):
repos =
[self.repositories.get_repo_for_location(location)
for location in mytree]
elif self._better_cache is None:
- repos = list(self.repositories)
+ repos = self._porttrees_repos.values()
else:
- repos = reversed(self._better_cache[mycp])
+ repos = [repo for repo in
reversed(self._better_cache[mycp])
+ if repo.name in self._porttrees_repos]
mylist = []
for repo in repos:
oroot = repo.location