1 |
Author: zmedico |
2 |
Date: 2009-03-31 05:50:15 +0000 (Tue, 31 Mar 2009) |
3 |
New Revision: 13256 |
4 |
|
5 |
Modified: |
6 |
main/trunk/pym/_emerge/__init__.py |
7 |
main/trunk/pym/portage/dbapi/porttree.py |
8 |
Log: |
9 |
Add a "consumer" keyword parameter to the MetadataRegen constructor which |
10 |
can be used to pass in a callback that is called for each ebuild that is |
11 |
processed (allowing access to the ebuild metadata). |
12 |
|
13 |
|
14 |
Modified: main/trunk/pym/_emerge/__init__.py |
15 |
=================================================================== |
16 |
--- main/trunk/pym/_emerge/__init__.py 2009-03-30 23:15:25 UTC (rev 13255) |
17 |
+++ main/trunk/pym/_emerge/__init__.py 2009-03-31 05:50:15 UTC (rev 13256) |
18 |
@@ -3024,7 +3024,7 @@ |
19 |
""" |
20 |
|
21 |
__slots__ = ("cpv", "ebuild_path", "fd_pipes", "metadata_callback", |
22 |
- "ebuild_mtime", "portdb", "repo_path", "settings") + \ |
23 |
+ "ebuild_mtime", "metadata", "portdb", "repo_path", "settings") + \ |
24 |
("_raw_metadata",) |
25 |
|
26 |
_file_names = ("ebuild",) |
27 |
@@ -3129,8 +3129,9 @@ |
28 |
self.returncode = 1 |
29 |
else: |
30 |
metadata = izip(portage.auxdbkeys, metadata_lines) |
31 |
- self.metadata_callback(self.cpv, self.ebuild_path, |
32 |
- self.repo_path, metadata, self.ebuild_mtime) |
33 |
+ self.metadata = self.metadata_callback(self.cpv, |
34 |
+ self.ebuild_path, self.repo_path, metadata, |
35 |
+ self.ebuild_mtime) |
36 |
|
37 |
class EbuildProcess(SpawnProcess): |
38 |
|
39 |
@@ -11573,7 +11574,8 @@ |
40 |
|
41 |
class MetadataRegen(PollScheduler): |
42 |
|
43 |
- def __init__(self, portdb, cp_iter=None, max_jobs=None, max_load=None): |
44 |
+ def __init__(self, portdb, cp_iter=None, consumer=None, |
45 |
+ max_jobs=None, max_load=None): |
46 |
PollScheduler.__init__(self) |
47 |
self._portdb = portdb |
48 |
self._global_cleanse = False |
49 |
@@ -11583,6 +11585,7 @@ |
50 |
# iterate over every single cp. |
51 |
self._global_cleanse = True |
52 |
self._cp_iter = cp_iter |
53 |
+ self._consumer = consumer |
54 |
|
55 |
if max_jobs is None: |
56 |
max_jobs = 1 |
57 |
@@ -11613,6 +11616,7 @@ |
58 |
portdb = self._portdb |
59 |
valid_pkgs = self._valid_pkgs |
60 |
cp_set = self._cp_set |
61 |
+ consumer = self._consumer |
62 |
|
63 |
for cp in self._cp_iter: |
64 |
cp_set.add(cp) |
65 |
@@ -11621,12 +11625,20 @@ |
66 |
for cpv in cpv_list: |
67 |
valid_pkgs.add(cpv) |
68 |
ebuild_path, repo_path = portdb.findname2(cpv) |
69 |
- metadata_process = portdb._metadata_process( |
70 |
+ metadata, st, emtime = portdb._pull_valid_cache( |
71 |
cpv, ebuild_path, repo_path) |
72 |
- if metadata_process is None: |
73 |
+ if metadata is not None: |
74 |
+ if consumer is not None: |
75 |
+ consumer(cpv, ebuild_path, |
76 |
+ repo_path, metadata) |
77 |
continue |
78 |
- yield metadata_process |
79 |
|
80 |
+ yield EbuildMetadataPhase(cpv=cpv, ebuild_path=ebuild_path, |
81 |
+ ebuild_mtime=emtime, |
82 |
+ metadata_callback=portdb._metadata_callback, |
83 |
+ portdb=portdb, repo_path=repo_path, |
84 |
+ settings=portdb.doebuild_settings) |
85 |
+ |
86 |
def run(self): |
87 |
|
88 |
portdb = self._portdb |
89 |
@@ -11700,7 +11712,13 @@ |
90 |
|
91 |
def _metadata_exit(self, metadata_process): |
92 |
self._jobs -= 1 |
93 |
- if metadata_process.returncode != os.EX_OK: |
94 |
+ if metadata_process.returncode == os.EX_OK: |
95 |
+ if self._consumer is not None: |
96 |
+ self._consumer(metadata_process.cpv, |
97 |
+ metadata_process.ebuild_path, |
98 |
+ metadata_process.repo_path, |
99 |
+ metadata_process.metadata) |
100 |
+ else: |
101 |
self.returncode = 1 |
102 |
self._error_count += 1 |
103 |
self._valid_pkgs.discard(metadata_process.cpv) |
104 |
|
105 |
Modified: main/trunk/pym/portage/dbapi/porttree.py |
106 |
=================================================================== |
107 |
--- main/trunk/pym/portage/dbapi/porttree.py 2009-03-30 23:15:25 UTC (rev 13255) |
108 |
+++ main/trunk/pym/portage/dbapi/porttree.py 2009-03-31 05:50:15 UTC (rev 13256) |
109 |
@@ -349,6 +349,7 @@ |
110 |
metadata["EAPI"] = "-" + eapi.lstrip("-") |
111 |
|
112 |
self.auxdb[repo_path][cpv] = metadata |
113 |
+ return metadata |
114 |
|
115 |
def _pull_valid_cache(self, cpv, ebuild_path, repo_path): |