summaryrefslogtreecommitdiffstats
path: root/pym/portage
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2013-01-06 12:50:28 -0800
committerZac Medico <zmedico@gentoo.org>2013-01-06 12:50:28 -0800
commit8192978cc3a38959a94a63f40f1e4585beb674e2 (patch)
tree97940dbfce7330d5c673e84479f7b8b55dc7f2ab /pym/portage
parent3b3405694dd3cdaaf7587db5fdd657bc93b73f41 (diff)
downloadportage-8192978cc3a38959a94a63f40f1e4585beb674e2.tar.gz
portage-8192978cc3a38959a94a63f40f1e4585beb674e2.tar.bz2
portage-8192978cc3a38959a94a63f40f1e4585beb674e2.zip
MetadataRegen: call cp_all for each category
List categories individually, in order to start yielding quicker, and in order to reduce latency in case of a signal interrupt.
Diffstat (limited to 'pym/portage')
-rw-r--r--pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py17
1 files changed, 10 insertions, 7 deletions
diff --git a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
index 50c9c7404..8839989a1 100644
--- a/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
+++ b/pym/portage/package/ebuild/_parallel_manifest/ManifestScheduler.py
@@ -30,13 +30,16 @@ class ManifestScheduler(AsyncScheduler):
return next(self._task_iter)
def _iter_every_cp(self):
- every_cp = self._portdb.cp_all()
- every_cp.reverse()
- try:
- while not self._terminated_tasks:
- yield every_cp.pop()
- except IndexError:
- pass
+ # List categories individually, in order to start yielding quicker,
+ # and in order to reduce latency in case of a signal interrupt.
+ categories = sorted(self._portdb.settings.categories, reverse=True)
+ cp_all = self._portdb.cp_all
+
+ while categories:
+ category = categories.pop()
+ category_cps = cp_all(categories=(category,), reverse=True)
+ while category_cps:
+ yield category_cps.pop()
def _iter_tasks(self):
portdb = self._portdb