Gentoo Archives: gentoo-commits

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