Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13255 - in main/trunk/pym: _emerge portage
Date: Mon, 30 Mar 2009 23:15:28
Message-Id: E1LoQhS-0001BL-CD@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-03-30 23:15:25 +0000 (Mon, 30 Mar 2009)
3 New Revision: 13255
4
5 Modified:
6 main/trunk/pym/_emerge/__init__.py
7 main/trunk/pym/portage/__init__.py
8 Log:
9 Add support in MetadataRegen for cleansing stale cache when only a subset
10 of packages are processed.
11
12
13 Modified: main/trunk/pym/_emerge/__init__.py
14 ===================================================================
15 --- main/trunk/pym/_emerge/__init__.py 2009-03-30 22:34:00 UTC (rev 13254)
16 +++ main/trunk/pym/_emerge/__init__.py 2009-03-30 23:15:25 UTC (rev 13255)
17 @@ -11580,9 +11580,7 @@
18 if cp_iter is None:
19 cp_iter = self._iter_every_cp()
20 # We can globally cleanse stale cache only if we
21 - # iterate over every single cp. TODO: Add support
22 - # to cleanse cache for the specific cp values that
23 - # are processed.
24 + # iterate over every single cp.
25 self._global_cleanse = True
26 self._cp_iter = cp_iter
27
28 @@ -11597,6 +11595,7 @@
29 unregister=self._unregister)
30
31 self._valid_pkgs = set()
32 + self._cp_set = set()
33 self._process_iter = self._iter_metadata_processes()
34 self.returncode = os.EX_OK
35 self._error_count = 0
36 @@ -11613,8 +11612,10 @@
37 def _iter_metadata_processes(self):
38 portdb = self._portdb
39 valid_pkgs = self._valid_pkgs
40 + cp_set = self._cp_set
41
42 for cp in self._cp_iter:
43 + cp_set.add(cp)
44 portage.writemsg_stdout("Processing %s\n" % cp)
45 cpv_list = portdb.cp_list(cp)
46 for cpv in cpv_list:
47 @@ -11632,6 +11633,12 @@
48 from portage.cache.cache_errors import CacheError
49 dead_nodes = {}
50
51 + while self._schedule():
52 + self._poll_loop()
53 +
54 + while self._jobs:
55 + self._poll_loop()
56 +
57 if self._global_cleanse:
58 for mytree in portdb.porttrees:
59 try:
60 @@ -11643,14 +11650,23 @@
61 del e
62 dead_nodes = None
63 break
64 + else:
65 + cp_set = self._cp_set
66 + cpv_getkey = portage.cpv_getkey
67 + for mytree in portdb.porttrees:
68 + try:
69 + dead_nodes[mytree] = set(cpv for cpv in \
70 + portdb.auxdb[mytree].iterkeys() \
71 + if cpv_getkey(cpv) in cp_set)
72 + except CacheError, e:
73 + portage.writemsg("Error listing cache entries for " + \
74 + "'%s': %s, continuing...\n" % (mytree, e),
75 + noiselevel=-1)
76 + del e
77 + dead_nodes = None
78 + break
79
80 - while self._schedule():
81 - self._poll_loop()
82 -
83 - while self._jobs:
84 - self._poll_loop()
85 -
86 - if self._global_cleanse and dead_nodes:
87 + if dead_nodes:
88 for y in self._valid_pkgs:
89 for mytree in portdb.porttrees:
90 if portdb.findname2(y, mytree=mytree)[0]:
91
92 Modified: main/trunk/pym/portage/__init__.py
93 ===================================================================
94 --- main/trunk/pym/portage/__init__.py 2009-03-30 22:34:00 UTC (rev 13254)
95 +++ main/trunk/pym/portage/__init__.py 2009-03-30 23:15:25 UTC (rev 13255)
96 @@ -7180,6 +7180,8 @@
97 def cpv_getkey(mycpv):
98 myslash=mycpv.split("/")
99 mysplit=pkgsplit(myslash[-1])
100 + if mysplit is None:
101 + return None
102 mylen=len(myslash)
103 if mylen==2:
104 return myslash[0]+"/"+mysplit[0]