Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13254 - main/trunk/pym/_emerge
Date: Mon, 30 Mar 2009 22:34:04
Message-Id: E1LoQ3N-0000EJ-RV@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-03-30 22:34:00 +0000 (Mon, 30 Mar 2009)
3 New Revision: 13254
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 Log:
8 Add a cp_iter keyword argument to the MetadataRegen constructor, which can be
9 used to do a regen for a subset of packages. TODO: Add support to cleanse
10 cache for the specific cp values that are processed.
11
12
13 Modified: main/trunk/pym/_emerge/__init__.py
14 ===================================================================
15 --- main/trunk/pym/_emerge/__init__.py 2009-03-30 21:54:39 UTC (rev 13253)
16 +++ main/trunk/pym/_emerge/__init__.py 2009-03-30 22:34:00 UTC (rev 13254)
17 @@ -11573,9 +11573,18 @@
18
19 class MetadataRegen(PollScheduler):
20
21 - def __init__(self, portdb, max_jobs=None, max_load=None):
22 + def __init__(self, portdb, cp_iter=None, max_jobs=None, max_load=None):
23 PollScheduler.__init__(self)
24 self._portdb = portdb
25 + self._global_cleanse = False
26 + if cp_iter is None:
27 + cp_iter = self._iter_every_cp()
28 + # We can globally cleanse stale cache only if we
29 + # iterate over every single cp. TODO: Add support
30 + # to cleanse cache for the specific cp values that
31 + # are processed.
32 + self._global_cleanse = True
33 + self._cp_iter = cp_iter
34
35 if max_jobs is None:
36 max_jobs = 1
37 @@ -11592,14 +11601,20 @@
38 self.returncode = os.EX_OK
39 self._error_count = 0
40
41 + def _iter_every_cp(self):
42 + every_cp = self._portdb.cp_all()
43 + every_cp.sort(reverse=True)
44 + try:
45 + while True:
46 + yield every_cp.pop()
47 + except IndexError:
48 + pass
49 +
50 def _iter_metadata_processes(self):
51 portdb = self._portdb
52 valid_pkgs = self._valid_pkgs
53 - every_cp = portdb.cp_all()
54 - every_cp.sort(reverse=True)
55
56 - while every_cp:
57 - cp = every_cp.pop()
58 + for cp in self._cp_iter:
59 portage.writemsg_stdout("Processing %s\n" % cp)
60 cpv_list = portdb.cp_list(cp)
61 for cpv in cpv_list:
62 @@ -11617,15 +11632,17 @@
63 from portage.cache.cache_errors import CacheError
64 dead_nodes = {}
65
66 - for mytree in portdb.porttrees:
67 - try:
68 - dead_nodes[mytree] = set(portdb.auxdb[mytree].iterkeys())
69 - except CacheError, e:
70 - portage.writemsg("Error listing cache entries for " + \
71 - "'%s': %s, continuing...\n" % (mytree, e), noiselevel=-1)
72 - del e
73 - dead_nodes = None
74 - break
75 + if self._global_cleanse:
76 + for mytree in portdb.porttrees:
77 + try:
78 + dead_nodes[mytree] = set(portdb.auxdb[mytree].iterkeys())
79 + except CacheError, e:
80 + portage.writemsg("Error listing cache entries for " + \
81 + "'%s': %s, continuing...\n" % (mytree, e),
82 + noiselevel=-1)
83 + del e
84 + dead_nodes = None
85 + break
86
87 while self._schedule():
88 self._poll_loop()
89 @@ -11633,7 +11650,7 @@
90 while self._jobs:
91 self._poll_loop()
92
93 - if dead_nodes:
94 + if self._global_cleanse and dead_nodes:
95 for y in self._valid_pkgs:
96 for mytree in portdb.porttrees:
97 if portdb.findname2(y, mytree=mytree)[0]: