1 |
Author: zmedico |
2 |
Date: 2009-04-30 06:50:07 +0000 (Thu, 30 Apr 2009) |
3 |
New Revision: 13435 |
4 |
|
5 |
Modified: |
6 |
main/branches/2.1.6/pym/_emerge/__init__.py |
7 |
main/branches/2.1.6/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). (trunk r13256) |
12 |
|
13 |
Modified: main/branches/2.1.6/pym/_emerge/__init__.py |
14 |
=================================================================== |
15 |
--- main/branches/2.1.6/pym/_emerge/__init__.py 2009-04-30 06:49:50 UTC (rev 13434) |
16 |
+++ main/branches/2.1.6/pym/_emerge/__init__.py 2009-04-30 06:50:07 UTC (rev 13435) |
17 |
@@ -3005,7 +3005,7 @@ |
18 |
""" |
19 |
|
20 |
__slots__ = ("cpv", "ebuild_path", "fd_pipes", "metadata_callback", |
21 |
- "ebuild_mtime", "portdb", "repo_path", "settings") + \ |
22 |
+ "ebuild_mtime", "metadata", "portdb", "repo_path", "settings") + \ |
23 |
("_raw_metadata",) |
24 |
|
25 |
_file_names = ("ebuild",) |
26 |
@@ -3110,8 +3110,9 @@ |
27 |
self.returncode = 1 |
28 |
else: |
29 |
metadata = izip(portage.auxdbkeys, metadata_lines) |
30 |
- self.metadata_callback(self.cpv, self.ebuild_path, |
31 |
- self.repo_path, metadata, self.ebuild_mtime) |
32 |
+ self.metadata = self.metadata_callback(self.cpv, |
33 |
+ self.ebuild_path, self.repo_path, metadata, |
34 |
+ self.ebuild_mtime) |
35 |
|
36 |
class EbuildProcess(SpawnProcess): |
37 |
|
38 |
@@ -11557,7 +11558,8 @@ |
39 |
|
40 |
class MetadataRegen(PollScheduler): |
41 |
|
42 |
- def __init__(self, portdb, cp_iter=None, max_jobs=None, max_load=None): |
43 |
+ def __init__(self, portdb, cp_iter=None, consumer=None, |
44 |
+ max_jobs=None, max_load=None): |
45 |
PollScheduler.__init__(self) |
46 |
self._portdb = portdb |
47 |
self._global_cleanse = False |
48 |
@@ -11567,6 +11569,7 @@ |
49 |
# iterate over every single cp. |
50 |
self._global_cleanse = True |
51 |
self._cp_iter = cp_iter |
52 |
+ self._consumer = consumer |
53 |
|
54 |
if max_jobs is None: |
55 |
max_jobs = 1 |
56 |
@@ -11597,6 +11600,7 @@ |
57 |
portdb = self._portdb |
58 |
valid_pkgs = self._valid_pkgs |
59 |
cp_set = self._cp_set |
60 |
+ consumer = self._consumer |
61 |
|
62 |
for cp in self._cp_iter: |
63 |
cp_set.add(cp) |
64 |
@@ -11605,12 +11609,20 @@ |
65 |
for cpv in cpv_list: |
66 |
valid_pkgs.add(cpv) |
67 |
ebuild_path, repo_path = portdb.findname2(cpv) |
68 |
- metadata_process = portdb._metadata_process( |
69 |
+ metadata, st, emtime = portdb._pull_valid_cache( |
70 |
cpv, ebuild_path, repo_path) |
71 |
- if metadata_process is None: |
72 |
+ if metadata is not None: |
73 |
+ if consumer is not None: |
74 |
+ consumer(cpv, ebuild_path, |
75 |
+ repo_path, metadata) |
76 |
continue |
77 |
- yield metadata_process |
78 |
|
79 |
+ yield EbuildMetadataPhase(cpv=cpv, ebuild_path=ebuild_path, |
80 |
+ ebuild_mtime=emtime, |
81 |
+ metadata_callback=portdb._metadata_callback, |
82 |
+ portdb=portdb, repo_path=repo_path, |
83 |
+ settings=portdb.doebuild_settings) |
84 |
+ |
85 |
def run(self): |
86 |
|
87 |
portdb = self._portdb |
88 |
@@ -11684,7 +11696,13 @@ |
89 |
|
90 |
def _metadata_exit(self, metadata_process): |
91 |
self._jobs -= 1 |
92 |
- if metadata_process.returncode != os.EX_OK: |
93 |
+ if metadata_process.returncode == os.EX_OK: |
94 |
+ if self._consumer is not None: |
95 |
+ self._consumer(metadata_process.cpv, |
96 |
+ metadata_process.ebuild_path, |
97 |
+ metadata_process.repo_path, |
98 |
+ metadata_process.metadata) |
99 |
+ else: |
100 |
self.returncode = 1 |
101 |
self._error_count += 1 |
102 |
self._valid_pkgs.discard(metadata_process.cpv) |
103 |
|
104 |
Modified: main/branches/2.1.6/pym/portage/dbapi/porttree.py |
105 |
=================================================================== |
106 |
--- main/branches/2.1.6/pym/portage/dbapi/porttree.py 2009-04-30 06:49:50 UTC (rev 13434) |
107 |
+++ main/branches/2.1.6/pym/portage/dbapi/porttree.py 2009-04-30 06:50:07 UTC (rev 13435) |
108 |
@@ -349,6 +349,7 @@ |
109 |
metadata["EAPI"] = "-" + eapi.lstrip("-") |
110 |
|
111 |
self.auxdb[repo_path][cpv] = metadata |
112 |
+ return metadata |
113 |
|
114 |
def _pull_valid_cache(self, cpv, ebuild_path, repo_path): |