Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13256 - in main/trunk/pym: _emerge portage/dbapi
Date: Tue, 31 Mar 2009 05:50:18
Message-Id: E1LoWrY-0002Ua-Jt@stork.gentoo.org
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):