Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13435 - in main/branches/2.1.6/pym: _emerge portage/dbapi
Date: Thu, 30 Apr 2009 06:50:11
Message-Id: E1LzQ5w-0004X4-NB@stork.gentoo.org
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):