1 |
commit: 7ec0953fd023a6285beaea0421b438de2b88a2e6 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Apr 25 01:15:36 2016 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Mon Apr 25 15:28:53 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=7ec0953f |
7 |
|
8 |
repoman: Convert all pointer type dynamic_data to the new ExtendedFuture class |
9 |
|
10 |
pym/repoman/main.py | 13 ++--- |
11 |
pym/repoman/modules/scan/arches/__init__.py | 4 +- |
12 |
pym/repoman/modules/scan/arches/arches.py | 5 +- |
13 |
pym/repoman/modules/scan/depend/__init__.py | 22 +++++-- |
14 |
pym/repoman/modules/scan/depend/depend.py | 15 +++-- |
15 |
pym/repoman/modules/scan/depend/profile.py | 10 ++-- |
16 |
pym/repoman/modules/scan/depend/unknown.py | 6 +- |
17 |
pym/repoman/modules/scan/directories/__init__.py | 12 +++- |
18 |
pym/repoman/modules/scan/directories/files.py | 2 +- |
19 |
pym/repoman/modules/scan/directories/mtime.py | 4 +- |
20 |
pym/repoman/modules/scan/eapi/__init__.py | 3 +- |
21 |
pym/repoman/modules/scan/eapi/eapi.py | 2 +- |
22 |
pym/repoman/modules/scan/ebuild/__init__.py | 29 ++++++--- |
23 |
pym/repoman/modules/scan/ebuild/ebuild.py | 18 +++--- |
24 |
pym/repoman/modules/scan/ebuild/isebuild.py | 17 ++---- |
25 |
pym/repoman/modules/scan/ebuild/multicheck.py | 4 +- |
26 |
pym/repoman/modules/scan/eclasses/__init__.py | 12 +++- |
27 |
pym/repoman/modules/scan/eclasses/live.py | 11 ++-- |
28 |
pym/repoman/modules/scan/eclasses/ruby.py | 4 +- |
29 |
pym/repoman/modules/scan/fetch/__init__.py | 9 ++- |
30 |
pym/repoman/modules/scan/fetch/fetches.py | 3 +- |
31 |
pym/repoman/modules/scan/keywords/__init__.py | 9 ++- |
32 |
pym/repoman/modules/scan/keywords/keywords.py | 6 +- |
33 |
pym/repoman/modules/scan/manifest/__init__.py | 4 +- |
34 |
pym/repoman/modules/scan/metadata/__init__.py | 39 +++++++++---- |
35 |
pym/repoman/modules/scan/metadata/description.py | 4 +- |
36 |
.../modules/scan/metadata/ebuild_metadata.py | 11 ++-- |
37 |
pym/repoman/modules/scan/metadata/license.py | 4 +- |
38 |
pym/repoman/modules/scan/metadata/pkgmetadata.py | 12 ++-- |
39 |
pym/repoman/modules/scan/metadata/restrict.py | 2 +- |
40 |
pym/repoman/modules/scan/metadata/unused.py | 6 +- |
41 |
pym/repoman/modules/scan/mirrors/__init__.py | 4 +- |
42 |
.../modules/scan/mirrors/thirdpartymirrors.py | 5 +- |
43 |
pym/repoman/modules/scan/scanbase.py | 36 ------------ |
44 |
pym/repoman/modules/scan/status/__init__.py | 7 ++- |
45 |
pym/repoman/modules/scan/status/vcsstatus.py | 5 +- |
46 |
pym/repoman/modules/scan/use/__init__.py | 10 +++- |
47 |
pym/repoman/modules/scan/use/use_flags.py | 10 +--- |
48 |
pym/repoman/scanner.py | 68 +++++++++++++++++----- |
49 |
39 files changed, 255 insertions(+), 192 deletions(-) |
50 |
|
51 |
diff --git a/pym/repoman/main.py b/pym/repoman/main.py |
52 |
index 62c3c2c..2009a44 100755 |
53 |
--- a/pym/repoman/main.py |
54 |
+++ b/pym/repoman/main.py |
55 |
@@ -22,8 +22,8 @@ import portage.repository.config |
56 |
from portage.output import create_color_func, nocolor |
57 |
from portage.output import ConsoleStyleFile, StyleWriter |
58 |
from portage.util import formatter |
59 |
-from portage.util.futures import ( |
60 |
- Future, |
61 |
+from portage.util.futures.extendedfutures import ( |
62 |
+ ExtendedFuture, |
63 |
InvalidStateError, |
64 |
) |
65 |
|
66 |
@@ -79,7 +79,7 @@ def repoman_main(argv): |
67 |
# Set this to False when an extraordinary issue (generally |
68 |
# something other than a QA issue) makes it impossible to |
69 |
# commit (like if Manifest generation fails). |
70 |
- can_force = Future() |
71 |
+ can_force = ExtendedFuture(True) |
72 |
|
73 |
portdir, portdir_overlay, mydir = utilities.FindPortdir(repoman_settings) |
74 |
if portdir is None: |
75 |
@@ -174,14 +174,9 @@ def repoman_main(argv): |
76 |
qa_output = qa_output.getvalue() |
77 |
qa_output = qa_output.splitlines(True) |
78 |
|
79 |
- try: |
80 |
- can_force = can_force.result() |
81 |
- except InvalidStateError: |
82 |
- can_force = True |
83 |
- |
84 |
# output the results |
85 |
actions = Actions(repo_settings, options, scanner, vcs_settings) |
86 |
- if actions.inform(can_force, result): |
87 |
+ if actions.inform(can_force.get(), result): |
88 |
# perform any other actions |
89 |
actions.perform(qa_output) |
90 |
|
91 |
|
92 |
diff --git a/pym/repoman/modules/scan/arches/__init__.py b/pym/repoman/modules/scan/arches/__init__.py |
93 |
index e4a4806..d66be1e 100644 |
94 |
--- a/pym/repoman/modules/scan/arches/__init__.py |
95 |
+++ b/pym/repoman/modules/scan/arches/__init__.py |
96 |
@@ -20,7 +20,9 @@ module_spec = { |
97 |
}, |
98 |
'mod_kwargs': ['options', 'repo_settings', 'profiles' |
99 |
], |
100 |
- 'func_kwargs': {'ebuild': None, 'arches': 'set', |
101 |
+ 'func_kwargs': { |
102 |
+ 'arches': ('Future', 'set'), |
103 |
+ 'ebuild': (None, None), |
104 |
}, |
105 |
}, |
106 |
} |
107 |
|
108 |
diff --git a/pym/repoman/modules/scan/arches/arches.py b/pym/repoman/modules/scan/arches/arches.py |
109 |
index 6e1c17d..b86848d 100644 |
110 |
--- a/pym/repoman/modules/scan/arches/arches.py |
111 |
+++ b/pym/repoman/modules/scan/arches/arches.py |
112 |
@@ -23,7 +23,7 @@ class ArchChecks(ScanBase): |
113 |
@param ebuild: Ebuild which we check (object). |
114 |
@returns: dictionary, including arches set |
115 |
''' |
116 |
- ebuild = kwargs.get('ebuild').result() |
117 |
+ ebuild = kwargs.get('ebuild').get() |
118 |
if self.options.ignore_arches: |
119 |
arches = [[ |
120 |
self.repo_settings.repoman_settings["ARCH"], self.repo_settings.repoman_settings["ARCH"], |
121 |
@@ -69,8 +69,7 @@ class ArchChecks(ScanBase): |
122 |
arches.add(('**', '**', ('**',))) |
123 |
# update the dynamic data |
124 |
dyn_arches = kwargs.get('arches') |
125 |
- dyn_arches.clear() |
126 |
- dyn_arches.update(arches) |
127 |
+ dyn_arches.set(arches) |
128 |
return False |
129 |
|
130 |
@property |
131 |
|
132 |
diff --git a/pym/repoman/modules/scan/depend/__init__.py b/pym/repoman/modules/scan/depend/__init__.py |
133 |
index cf5b415..27c803d 100644 |
134 |
--- a/pym/repoman/modules/scan/depend/__init__.py |
135 |
+++ b/pym/repoman/modules/scan/depend/__init__.py |
136 |
@@ -20,8 +20,12 @@ module_spec = { |
137 |
}, |
138 |
'mod_kwargs': ['qatracker', 'portdb' |
139 |
], |
140 |
- 'func_kwargs': {'ebuild': None, 'pkg': None, 'unknown_pkgs': 'set', |
141 |
- 'badlicsyntax': 'Future', 'baddepsyntax': 'Future', |
142 |
+ 'func_kwargs': { |
143 |
+ 'baddepsyntax': ('Future', False), |
144 |
+ 'badlicsyntax': ('Future', False), |
145 |
+ 'ebuild': (None, None), |
146 |
+ 'pkg': (None, None), |
147 |
+ 'unknown_pkgs': ('Future', 'UNSET'), |
148 |
}, |
149 |
}, |
150 |
'profile-module': { |
151 |
@@ -36,8 +40,12 @@ module_spec = { |
152 |
'repo_settings', 'include_arches', 'caches', |
153 |
'repoman_incrementals', 'env', 'have', 'dev_keywords' |
154 |
], |
155 |
- 'func_kwargs': {'arches': None, 'ebuild': None, 'pkg': None, |
156 |
- 'unknown_pkgs': None, 'baddepsyntax': None, |
157 |
+ 'func_kwargs': { |
158 |
+ 'arches': (None, None), |
159 |
+ 'baddepsyntax': (None, None), |
160 |
+ 'ebuild': (None, None), |
161 |
+ 'pkg': (None, None), |
162 |
+ 'unknown_pkgs': (None, None), |
163 |
}, |
164 |
}, |
165 |
'unknown-module': { |
166 |
@@ -50,8 +58,10 @@ module_spec = { |
167 |
}, |
168 |
'mod_kwargs': ['qatracker', |
169 |
], |
170 |
- 'func_kwargs': {'ebuild': None, 'unknown_pkgs': 'set', |
171 |
- 'baddepsyntax': None, |
172 |
+ 'func_kwargs': { |
173 |
+ 'baddepsyntax': (None, None), |
174 |
+ 'ebuild': (None, None), |
175 |
+ 'unknown_pkgs': ('Future', 'UNSET'), |
176 |
}, |
177 |
}, |
178 |
} |
179 |
|
180 |
diff --git a/pym/repoman/modules/scan/depend/depend.py b/pym/repoman/modules/scan/depend/depend.py |
181 |
index cd1fb33..44a21e9 100644 |
182 |
--- a/pym/repoman/modules/scan/depend/depend.py |
183 |
+++ b/pym/repoman/modules/scan/depend/depend.py |
184 |
@@ -28,8 +28,8 @@ class DependChecks(ScanBase): |
185 |
@param ebuild: Ebuild which we check (object). |
186 |
@returns: boolean |
187 |
''' |
188 |
- ebuild = kwargs.get('ebuild').result() |
189 |
- pkg = kwargs.get('pkg').result() |
190 |
+ ebuild = kwargs.get('ebuild').get() |
191 |
+ pkg = kwargs.get('pkg').get() |
192 |
|
193 |
unknown_pkgs = set() |
194 |
|
195 |
@@ -145,12 +145,11 @@ class DependChecks(ScanBase): |
196 |
|
197 |
# update the dynamic data |
198 |
dyn_unknown = kwargs.get('unknown_pkgs') |
199 |
- dyn_unknown.clear() |
200 |
- dyn_unknown.update(unknown_pkgs) |
201 |
- self.set_result_pass([ |
202 |
- (kwargs.get('badlicsyntax'), badlicsyntax), |
203 |
- (kwargs.get('baddepsyntax'), baddepsyntax), |
204 |
- ]) |
205 |
+ dyn_unknown.set(unknown_pkgs) |
206 |
+ dyn_badlicsyntax = kwargs.get('badlicsyntax') |
207 |
+ dyn_badlicsyntax.set(badlicsyntax, ignore_InvalidState=True) |
208 |
+ dyn_baddepsyntax = kwargs.get('baddepsyntax') |
209 |
+ dyn_baddepsyntax.set(baddepsyntax, ignore_InvalidState=True) |
210 |
return False |
211 |
|
212 |
@property |
213 |
|
214 |
diff --git a/pym/repoman/modules/scan/depend/profile.py b/pym/repoman/modules/scan/depend/profile.py |
215 |
index b4ec8ca..8fc7721 100644 |
216 |
--- a/pym/repoman/modules/scan/depend/profile.py |
217 |
+++ b/pym/repoman/modules/scan/depend/profile.py |
218 |
@@ -56,11 +56,11 @@ class ProfileDependsChecks(ScanBase): |
219 |
@param unknown_pkgs: set of tuples (type, atom.unevaluated_atom) |
220 |
@returns: dictionary |
221 |
''' |
222 |
- arches = kwargs.get('arches') |
223 |
- ebuild = kwargs.get('ebuild').result() |
224 |
- pkg = kwargs.get('pkg').result() |
225 |
- baddepsyntax = self.get_result(kwargs.get('baddepsyntax'), False) |
226 |
- unknown_pkgs = kwargs.get('unknown_pkgs') |
227 |
+ arches = kwargs.get('arches').get() |
228 |
+ ebuild = kwargs.get('ebuild').get() |
229 |
+ pkg = kwargs.get('pkg').get() |
230 |
+ baddepsyntax = kwargs.get('baddepsyntax').get() |
231 |
+ unknown_pkgs = kwargs.get('unknown_pkgs').get() |
232 |
|
233 |
relevant_profiles = [] |
234 |
for keyword, arch, groups in arches: |
235 |
|
236 |
diff --git a/pym/repoman/modules/scan/depend/unknown.py b/pym/repoman/modules/scan/depend/unknown.py |
237 |
index 9e8f7f8..6667d4f 100644 |
238 |
--- a/pym/repoman/modules/scan/depend/unknown.py |
239 |
+++ b/pym/repoman/modules/scan/depend/unknown.py |
240 |
@@ -21,9 +21,9 @@ class DependUnknown(ScanBase): |
241 |
@param unknown_pkgs: set of tuples (type, atom.unevaluated_atom) |
242 |
@returns: dictionary |
243 |
''' |
244 |
- ebuild = kwargs.get('ebuild').result() |
245 |
- baddepsyntax = self.get_result(kwargs.get('baddepsyntax'), False) |
246 |
- unknown_pkgs = kwargs.get('unknown_pkgs') |
247 |
+ ebuild = kwargs.get('ebuild').get() |
248 |
+ baddepsyntax = kwargs.get('baddepsyntax').get() |
249 |
+ unknown_pkgs = kwargs.get('unknown_pkgs').get() |
250 |
|
251 |
if not baddepsyntax and unknown_pkgs: |
252 |
type_map = {} |
253 |
|
254 |
diff --git a/pym/repoman/modules/scan/directories/__init__.py b/pym/repoman/modules/scan/directories/__init__.py |
255 |
index 0193843..47834cb 100644 |
256 |
--- a/pym/repoman/modules/scan/directories/__init__.py |
257 |
+++ b/pym/repoman/modules/scan/directories/__init__.py |
258 |
@@ -20,8 +20,11 @@ module_spec = { |
259 |
}, |
260 |
'mod_kwargs': ['portdb', 'qatracker', 'repo_settings', 'vcs_settings', |
261 |
], |
262 |
- 'func_kwargs': {'checkdir': None, 'checkdirlist': None, |
263 |
- 'checkdir_relative': None, 'changed': None, |
264 |
+ 'func_kwargs': { |
265 |
+ 'changed': (None, None), |
266 |
+ 'checkdir': (None, None), |
267 |
+ 'checkdirlist': (None, None), |
268 |
+ 'checkdir_relative': (None, None), |
269 |
}, |
270 |
}, |
271 |
'mtime-module': { |
272 |
@@ -34,7 +37,10 @@ module_spec = { |
273 |
}, |
274 |
'mod_kwargs': ['vcs_settings', |
275 |
], |
276 |
- 'func_kwargs': {'ebuild': None, 'changed': None, 'pkg': None, |
277 |
+ 'func_kwargs': { |
278 |
+ 'changed': (None, None), |
279 |
+ 'ebuild': (None, None), |
280 |
+ 'pkg': (None, None), |
281 |
}, |
282 |
}, |
283 |
} |
284 |
|
285 |
diff --git a/pym/repoman/modules/scan/directories/files.py b/pym/repoman/modules/scan/directories/files.py |
286 |
index 94a0791..2aed264 100644 |
287 |
--- a/pym/repoman/modules/scan/directories/files.py |
288 |
+++ b/pym/repoman/modules/scan/directories/files.py |
289 |
@@ -39,7 +39,7 @@ class FileChecks(ScanBase): |
290 |
@returns: dictionary |
291 |
''' |
292 |
checkdir = kwargs.get('checkdir') |
293 |
- checkdirlist = kwargs.get('checkdirlist') |
294 |
+ checkdirlist = kwargs.get('checkdirlist').get() |
295 |
checkdir_relative = kwargs.get('checkdir_relative') |
296 |
changed = kwargs.get('changed').changed |
297 |
new = kwargs.get('changed').new |
298 |
|
299 |
diff --git a/pym/repoman/modules/scan/directories/mtime.py b/pym/repoman/modules/scan/directories/mtime.py |
300 |
index 6c667df..134a86b 100644 |
301 |
--- a/pym/repoman/modules/scan/directories/mtime.py |
302 |
+++ b/pym/repoman/modules/scan/directories/mtime.py |
303 |
@@ -15,9 +15,9 @@ class MtimeChecks(ScanBase): |
304 |
@param changed: dictionary instance |
305 |
@returns: dictionary |
306 |
''' |
307 |
- ebuild = kwargs.get('ebuild').result() |
308 |
+ ebuild = kwargs.get('ebuild').get() |
309 |
changed = kwargs.get('changed') |
310 |
- pkg = kwargs.get('pkg').result() |
311 |
+ pkg = kwargs.get('pkg').get() |
312 |
if not self.vcs_settings.vcs_preserves_mtime: |
313 |
if ebuild.ebuild_path not in changed.new_ebuilds and \ |
314 |
ebuild.ebuild_path not in changed.ebuilds: |
315 |
|
316 |
diff --git a/pym/repoman/modules/scan/eapi/__init__.py b/pym/repoman/modules/scan/eapi/__init__.py |
317 |
index 376e79a..4c3dd6e 100644 |
318 |
--- a/pym/repoman/modules/scan/eapi/__init__.py |
319 |
+++ b/pym/repoman/modules/scan/eapi/__init__.py |
320 |
@@ -20,7 +20,8 @@ module_spec = { |
321 |
}, |
322 |
'mod_kwargs': ['qatracker', 'repo_settings' |
323 |
], |
324 |
- 'func_kwargs': {'ebuild': None, |
325 |
+ 'func_kwargs': { |
326 |
+ 'ebuild': (None, None), |
327 |
}, |
328 |
}, |
329 |
} |
330 |
|
331 |
diff --git a/pym/repoman/modules/scan/eapi/eapi.py b/pym/repoman/modules/scan/eapi/eapi.py |
332 |
index 18bab3d..1d4ad5a 100644 |
333 |
--- a/pym/repoman/modules/scan/eapi/eapi.py |
334 |
+++ b/pym/repoman/modules/scan/eapi/eapi.py |
335 |
@@ -23,7 +23,7 @@ class EAPIChecks(ScanBase): |
336 |
@param ebuild: Ebuild which we check (object). |
337 |
@returns: dictionary |
338 |
''' |
339 |
- ebuild = kwargs.get('ebuild').result() |
340 |
+ ebuild = kwargs.get('ebuild').get() |
341 |
|
342 |
if not self._checkBanned(ebuild): |
343 |
self._checkDeprecated(ebuild) |
344 |
|
345 |
diff --git a/pym/repoman/modules/scan/ebuild/__init__.py b/pym/repoman/modules/scan/ebuild/__init__.py |
346 |
index efb2feb..b243314 100644 |
347 |
--- a/pym/repoman/modules/scan/ebuild/__init__.py |
348 |
+++ b/pym/repoman/modules/scan/ebuild/__init__.py |
349 |
@@ -20,8 +20,13 @@ module_spec = { |
350 |
}, |
351 |
'mod_kwargs': ['portdb', 'qatracker', 'repo_settings' |
352 |
], |
353 |
- 'func_kwargs': {'checkdirlist': 'list', 'checkdir': None, 'xpkg': None, |
354 |
- 'validity_future': 'Future', 'can_force': None, 'pkgs': 'dict', |
355 |
+ 'func_kwargs': { |
356 |
+ 'can_force': (None, None), |
357 |
+ 'checkdir': (None, None), |
358 |
+ 'checkdirlist': (None, None), |
359 |
+ 'pkgs': ('Future', 'dict'), |
360 |
+ 'validity_future': ('Future', True), |
361 |
+ 'xpkg': (None, None), |
362 |
}, |
363 |
}, |
364 |
'ebuild-module': { |
365 |
@@ -34,10 +39,18 @@ module_spec = { |
366 |
}, |
367 |
'mod_kwargs': ['qatracker', 'repo_settings', 'vcs_settings', 'checks', |
368 |
], |
369 |
- 'func_kwargs': {'xpkg': None, 'y_ebuild': None, 'changed': None, |
370 |
- 'changelog_modified': None, 'pkg': 'Future', 'pkgs': None, |
371 |
- 'ebuild': 'Future', 'validity_future': None, 'pkgdir': None, |
372 |
- 'repolevel': None, 'catdir': None, |
373 |
+ 'func_kwargs': { |
374 |
+ 'catdir': (None, None), |
375 |
+ 'changed': (None, None), |
376 |
+ 'changelog_modified': (None, None), |
377 |
+ 'ebuild': ('Future', 'UNSET'), |
378 |
+ 'pkg': ('Future', 'UNSET'), |
379 |
+ 'pkgdir': (None, None), |
380 |
+ 'pkgs': (None, None), |
381 |
+ 'repolevel': (None, None), |
382 |
+ 'validity_future': (None, None), |
383 |
+ 'xpkg': (None, None), |
384 |
+ 'y_ebuild': (None, None), |
385 |
}, |
386 |
}, |
387 |
'multicheck-module': { |
388 |
@@ -50,7 +63,9 @@ module_spec = { |
389 |
}, |
390 |
'mod_kwargs': ['qatracker', 'options' |
391 |
], |
392 |
- 'func_kwargs': {'ebuild': None, 'pkg': None, |
393 |
+ 'func_kwargs': { |
394 |
+ 'ebuild': (None, None), |
395 |
+ 'pkg': (None, None), |
396 |
}, |
397 |
}, |
398 |
} |
399 |
|
400 |
diff --git a/pym/repoman/modules/scan/ebuild/ebuild.py b/pym/repoman/modules/scan/ebuild/ebuild.py |
401 |
index b02cdcd..92b1ea4 100644 |
402 |
--- a/pym/repoman/modules/scan/ebuild/ebuild.py |
403 |
+++ b/pym/repoman/modules/scan/ebuild/ebuild.py |
404 |
@@ -86,7 +86,8 @@ class Ebuild(ScanBase): |
405 |
self.qatracker.add_error( |
406 |
"ebuild.notadded", self.xpkg + "/" + self.y_ebuild + ".ebuild") |
407 |
# update the dynamic data |
408 |
- self.set_result_raise([(kwargs.get('ebuild'), self)]) |
409 |
+ dyn_ebuild = kwargs.get('ebuild') |
410 |
+ dyn_ebuild.set(self) |
411 |
return False |
412 |
|
413 |
def set_pkg_data(self, **kwargs): |
414 |
@@ -95,7 +96,8 @@ class Ebuild(ScanBase): |
415 |
@param pkgs: the dynamic list of ebuilds |
416 |
@returns: dictionary |
417 |
''' |
418 |
- self.pkg = kwargs.get('pkgs')[self.y_ebuild] |
419 |
+ pkgs = kwargs.get('pkgs').get() |
420 |
+ self.pkg = pkgs[self.y_ebuild] |
421 |
self.metadata = self.pkg._metadata |
422 |
self.eapi = self.metadata["EAPI"] |
423 |
self.inherited = self.pkg.inherited |
424 |
@@ -133,21 +135,17 @@ class Ebuild(ScanBase): |
425 |
@returns: dictionary, including {pkg object} |
426 |
''' |
427 |
fuse = kwargs.get('validity_future') |
428 |
+ dyn_pkg = kwargs.get('pkg') |
429 |
if self.pkg.invalid: |
430 |
for k, msgs in self.pkg.invalid.items(): |
431 |
for msg in msgs: |
432 |
self.qatracker.add_error(k, "%s: %s" % (self.relative_path, msg)) |
433 |
# update the dynamic data |
434 |
- self.set_result_pass([ |
435 |
- (fuse, False),]) |
436 |
- self.set_result_raise([ |
437 |
- (kwargs.get('pkg'), self.pkg), |
438 |
- ]) |
439 |
+ fuse.set(False, ignore_InvalidState=True) |
440 |
+ dyn_pkg.set(self.pkg) |
441 |
return True |
442 |
# update the dynamic data |
443 |
- self.set_result_raise([ |
444 |
- (kwargs.get('pkg'), self.pkg), |
445 |
- ]) |
446 |
+ dyn_pkg.set(self.pkg) |
447 |
return False |
448 |
|
449 |
@property |
450 |
|
451 |
diff --git a/pym/repoman/modules/scan/ebuild/isebuild.py b/pym/repoman/modules/scan/ebuild/isebuild.py |
452 |
index 24680e2..7277ad0 100644 |
453 |
--- a/pym/repoman/modules/scan/ebuild/isebuild.py |
454 |
+++ b/pym/repoman/modules/scan/ebuild/isebuild.py |
455 |
@@ -39,7 +39,7 @@ class IsEbuild(ScanBase): |
456 |
@param validity_future: Future instance |
457 |
@returns: dictionary, including {pkgs, can_force} |
458 |
''' |
459 |
- checkdirlist = kwargs.get('checkdirlist') |
460 |
+ checkdirlist = kwargs.get('checkdirlist').get() |
461 |
checkdir = kwargs.get('checkdir') |
462 |
xpkg = kwargs.get('xpkg') |
463 |
fuse = kwargs.get('validity_future') |
464 |
@@ -65,15 +65,15 @@ class IsEbuild(ScanBase): |
465 |
try: |
466 |
myaux = dict(zip(allvars, self.portdb.aux_get(cpv, allvars))) |
467 |
except KeyError: |
468 |
- self.set_result_pass([(fuse, False)]) |
469 |
+ fuse.set(False, ignore_InvalidState=True) |
470 |
self.qatracker.add_error("ebuild.syntax", os.path.join(xpkg, y)) |
471 |
continue |
472 |
except IOError: |
473 |
- self.set_result_pass([(fuse, False)]) |
474 |
+ fuse.set(False, ignore_InvalidState=True) |
475 |
self.qatracker.add_error("ebuild.output", os.path.join(xpkg, y)) |
476 |
continue |
477 |
if not portage.eapi_is_supported(myaux["EAPI"]): |
478 |
- self.set_result_pass([(fuse, False)]) |
479 |
+ fuse.set(False, ignore_InvalidState=True) |
480 |
self.qatracker.add_error("EAPI.unsupported", os.path.join(xpkg, y)) |
481 |
continue |
482 |
pkgs[pf] = Package( |
483 |
@@ -87,15 +87,10 @@ class IsEbuild(ScanBase): |
484 |
# metadata leads to false positives for several checks, and false |
485 |
# positives confuse users. |
486 |
self.continue_ = True |
487 |
- self.set_result_pass([(can_force, False)]) |
488 |
+ can_force.set(False, ignore_InvalidState=True) |
489 |
# set our updated data |
490 |
dyn_pkgs = kwargs.get('pkgs') |
491 |
- # clear() sets it to None, |
492 |
- # we don't want to kill the pointer reference |
493 |
- # just set it back to an empty dict() |
494 |
- for key in list(dyn_pkgs): |
495 |
- dyn_pkgs.pop(key) |
496 |
- dyn_pkgs.update(pkgs) |
497 |
+ dyn_pkgs.set(pkgs) |
498 |
return self.continue_ |
499 |
|
500 |
@property |
501 |
|
502 |
diff --git a/pym/repoman/modules/scan/ebuild/multicheck.py b/pym/repoman/modules/scan/ebuild/multicheck.py |
503 |
index ed7556d..9e36e2a 100644 |
504 |
--- a/pym/repoman/modules/scan/ebuild/multicheck.py |
505 |
+++ b/pym/repoman/modules/scan/ebuild/multicheck.py |
506 |
@@ -31,8 +31,8 @@ class MultiCheck(ScanBase): |
507 |
@param ebuild: Ebuild which we check (object). |
508 |
@returns: dictionary |
509 |
''' |
510 |
- ebuild = kwargs.get('ebuild').result() |
511 |
- pkg = kwargs.get('pkg').result() |
512 |
+ ebuild = kwargs.get('ebuild').get() |
513 |
+ pkg = kwargs.get('pkg').get() |
514 |
try: |
515 |
# All ebuilds should have utf_8 encoding. |
516 |
f = io.open( |
517 |
|
518 |
diff --git a/pym/repoman/modules/scan/eclasses/__init__.py b/pym/repoman/modules/scan/eclasses/__init__.py |
519 |
index 7be954c..63bb86f 100644 |
520 |
--- a/pym/repoman/modules/scan/eclasses/__init__.py |
521 |
+++ b/pym/repoman/modules/scan/eclasses/__init__.py |
522 |
@@ -20,8 +20,12 @@ module_spec = { |
523 |
}, |
524 |
'mod_kwargs': ['qatracker', 'repo_metadata', 'repo_settings', |
525 |
], |
526 |
- 'func_kwargs': {'live_ebuild': 'set', 'pkg': None, 'xpkg': None, |
527 |
- 'ebuild': None, 'y_ebuild': None, |
528 |
+ 'func_kwargs': { |
529 |
+ 'ebuild': (None, None), |
530 |
+ 'live_ebuild': ('Future', 'UNSET'), |
531 |
+ 'pkg': (None, None), |
532 |
+ 'xpkg': (None, None), |
533 |
+ 'y_ebuild': (None, None), |
534 |
}, |
535 |
}, |
536 |
'ruby-module': { |
537 |
@@ -34,7 +38,9 @@ module_spec = { |
538 |
}, |
539 |
'mod_kwargs': ['qatracker' |
540 |
], |
541 |
- 'func_kwargs': {'pkg': None, 'ebuild': None, |
542 |
+ 'func_kwargs': { |
543 |
+ 'ebuild': (None, None), |
544 |
+ 'pkg': (None, None), |
545 |
}, |
546 |
}, |
547 |
} |
548 |
|
549 |
diff --git a/pym/repoman/modules/scan/eclasses/live.py b/pym/repoman/modules/scan/eclasses/live.py |
550 |
index 85e829c..842cbab 100644 |
551 |
--- a/pym/repoman/modules/scan/eclasses/live.py |
552 |
+++ b/pym/repoman/modules/scan/eclasses/live.py |
553 |
@@ -25,11 +25,10 @@ class LiveEclassChecks(ScanBase): |
554 |
|
555 |
@returns: dictionary, including {live_ebuild} |
556 |
''' |
557 |
- ebuild = kwargs.get('ebuild').result() |
558 |
+ ebuild = kwargs.get('ebuild').get() |
559 |
# update the dynamic data |
560 |
dyn_live = kwargs.get('live_ebuild') |
561 |
- #dyn_live.clear() |
562 |
- dyn_live.update(LIVE_ECLASSES.intersection(ebuild.inherited)) |
563 |
+ dyn_live.set(LIVE_ECLASSES.intersection(ebuild.inherited)) |
564 |
return False |
565 |
|
566 |
def check(self, **kwargs): |
567 |
@@ -46,12 +45,12 @@ class LiveEclassChecks(ScanBase): |
568 |
''' |
569 |
pkg = kwargs.get("pkg").result() |
570 |
package = kwargs.get('xpkg') |
571 |
- ebuild = kwargs.get('ebuild').result() |
572 |
+ ebuild = kwargs.get('ebuild').get() |
573 |
y_ebuild = kwargs.get('y_ebuild') |
574 |
keywords = ebuild.keywords |
575 |
+ live_ebuild = kwargs.get('live_ebuild').get() |
576 |
|
577 |
- if not (kwargs.get('live_ebuild') and |
578 |
- self.repo_settings.repo_config.name == "gentoo"): |
579 |
+ if not live_ebuild and self.repo_settings.repo_config.name == "gentoo": |
580 |
return False |
581 |
|
582 |
is_stable = lambda kw: not kw.startswith("~") and not kw.startswith("-") |
583 |
|
584 |
diff --git a/pym/repoman/modules/scan/eclasses/ruby.py b/pym/repoman/modules/scan/eclasses/ruby.py |
585 |
index 92b9649..b350180 100644 |
586 |
--- a/pym/repoman/modules/scan/eclasses/ruby.py |
587 |
+++ b/pym/repoman/modules/scan/eclasses/ruby.py |
588 |
@@ -25,8 +25,8 @@ class RubyEclassChecks(ScanBase): |
589 |
@param ebuild: Ebuild which we check (object). |
590 |
@returns: dictionary |
591 |
''' |
592 |
- pkg = kwargs.get('pkg').result() |
593 |
- ebuild = kwargs.get('ebuild').result() |
594 |
+ pkg = kwargs.get('pkg').get() |
595 |
+ ebuild = kwargs.get('ebuild').get() |
596 |
is_inherited = lambda eclass: eclass in pkg.inherited |
597 |
is_old_ruby_eclass_inherited = filter( |
598 |
is_inherited, self.old_ruby_eclasses) |
599 |
|
600 |
diff --git a/pym/repoman/modules/scan/fetch/__init__.py b/pym/repoman/modules/scan/fetch/__init__.py |
601 |
index 795eabf..1228435 100644 |
602 |
--- a/pym/repoman/modules/scan/fetch/__init__.py |
603 |
+++ b/pym/repoman/modules/scan/fetch/__init__.py |
604 |
@@ -20,9 +20,12 @@ module_spec = { |
605 |
}, |
606 |
'mod_kwargs': ['portdb', 'qatracker', 'repo_settings', 'vcs_settings', |
607 |
], |
608 |
- 'func_kwargs': {'xpkg': None, 'checkdir': None, |
609 |
- 'checkdir_relative': None, 'changed': None, |
610 |
- 'src_uri_error': 'Future', |
611 |
+ 'func_kwargs': { |
612 |
+ 'changed': (None, None), |
613 |
+ 'checkdir': (None, None), |
614 |
+ 'checkdir_relative': (None, None), |
615 |
+ 'src_uri_error': ('Future', 'UNSET'), |
616 |
+ 'xpkg': (None, None), |
617 |
}, |
618 |
}, |
619 |
} |
620 |
|
621 |
diff --git a/pym/repoman/modules/scan/fetch/fetches.py b/pym/repoman/modules/scan/fetch/fetches.py |
622 |
index f6adece..ddbf6bd 100644 |
623 |
--- a/pym/repoman/modules/scan/fetch/fetches.py |
624 |
+++ b/pym/repoman/modules/scan/fetch/fetches.py |
625 |
@@ -131,7 +131,8 @@ class FetchChecks(ScanBase): |
626 |
"file.name", |
627 |
"%s/files/%s: char '%s'" % (checkdir, y, y[index])) |
628 |
# update the dynamic data |
629 |
- self.set_result_pass([(kwargs.get('src_uri_error'), self._src_uri_error)]) |
630 |
+ dyn_src_uri_error = kwargs.get('src_uri_error') |
631 |
+ dyn_src_uri_error.set(self._src_uri_error) |
632 |
return False |
633 |
|
634 |
def digests(self, checkdir): |
635 |
|
636 |
diff --git a/pym/repoman/modules/scan/keywords/__init__.py b/pym/repoman/modules/scan/keywords/__init__.py |
637 |
index 2b3f6ca..1c424ca 100644 |
638 |
--- a/pym/repoman/modules/scan/keywords/__init__.py |
639 |
+++ b/pym/repoman/modules/scan/keywords/__init__.py |
640 |
@@ -20,8 +20,13 @@ module_spec = { |
641 |
}, |
642 |
'mod_kwargs': ['qatracker', 'options', 'repo_metadata', 'profiles', |
643 |
], |
644 |
- 'func_kwargs': {'pkg': 'Future', 'xpkg': None, 'ebuild': 'Future', |
645 |
- 'y_ebuild': None, 'changed': None, 'live_ebuild': 'set', |
646 |
+ 'func_kwargs': { |
647 |
+ 'changed': (None, None), |
648 |
+ 'ebuild': ('Future', 'UNSET'), |
649 |
+ 'live_ebuild': ('Future', 'UNSET'), |
650 |
+ 'pkg': ('Future', 'UNSET'), |
651 |
+ 'xpkg': None, |
652 |
+ 'y_ebuild': (None, None), |
653 |
}, |
654 |
}, |
655 |
} |
656 |
|
657 |
diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py |
658 |
index ec48bb6..af94c6f 100644 |
659 |
--- a/pym/repoman/modules/scan/keywords/keywords.py |
660 |
+++ b/pym/repoman/modules/scan/keywords/keywords.py |
661 |
@@ -40,12 +40,12 @@ class KeywordChecks(ScanBase): |
662 |
@param live_ebuild: A boolean that determines if this is a live ebuild. |
663 |
@returns: dictionary |
664 |
''' |
665 |
- pkg = kwargs.get('pkg').result() |
666 |
+ pkg = kwargs.get('pkg').get() |
667 |
xpkg =kwargs.get('xpkg') |
668 |
- ebuild = kwargs.get('ebuild').result() |
669 |
+ ebuild = kwargs.get('ebuild').get() |
670 |
y_ebuild = kwargs.get('y_ebuild') |
671 |
changed = kwargs.get('changed') |
672 |
- live_ebuild = kwargs.get('live_ebuild') |
673 |
+ live_ebuild = kwargs.get('live_ebuild').get() |
674 |
if not self.options.straight_to_stable: |
675 |
self._checkAddedWithStableKeywords( |
676 |
xpkg, ebuild, y_ebuild, ebuild.keywords, changed) |
677 |
|
678 |
diff --git a/pym/repoman/modules/scan/manifest/__init__.py b/pym/repoman/modules/scan/manifest/__init__.py |
679 |
index bd9f8da..dca431b 100644 |
680 |
--- a/pym/repoman/modules/scan/manifest/__init__.py |
681 |
+++ b/pym/repoman/modules/scan/manifest/__init__.py |
682 |
@@ -20,7 +20,9 @@ module_spec = { |
683 |
}, |
684 |
'mod_kwargs': ['options', 'portdb', 'qatracker', 'repo_settings', |
685 |
], |
686 |
- 'func_kwargs': {'checkdir': None, 'xpkg': None, |
687 |
+ 'func_kwargs': { |
688 |
+ 'checkdir': (None, None), |
689 |
+ 'xpkg': (None, None), |
690 |
}, |
691 |
}, |
692 |
} |
693 |
|
694 |
diff --git a/pym/repoman/modules/scan/metadata/__init__.py b/pym/repoman/modules/scan/metadata/__init__.py |
695 |
index 9ccf377..98df9cf 100644 |
696 |
--- a/pym/repoman/modules/scan/metadata/__init__.py |
697 |
+++ b/pym/repoman/modules/scan/metadata/__init__.py |
698 |
@@ -20,8 +20,12 @@ module_spec = { |
699 |
}, |
700 |
'mod_kwargs': ['repo_settings', 'qatracker', 'options', 'metadata_dtd', |
701 |
], |
702 |
- 'func_kwargs': {'xpkg': None, 'checkdir': None, 'checkdirlist': None, |
703 |
- 'repolevel': None, 'muselist': 'Future', |
704 |
+ 'func_kwargs': { |
705 |
+ 'checkdir': (None, None), |
706 |
+ 'checkdirlist': (None, None), |
707 |
+ 'muselist': ('Future', 'set'), |
708 |
+ 'repolevel': (None, None), |
709 |
+ 'xpkg': (None, None), |
710 |
}, |
711 |
}, |
712 |
'ebuild-metadata': { |
713 |
@@ -34,8 +38,12 @@ module_spec = { |
714 |
}, |
715 |
'mod_kwargs': ['qatracker', |
716 |
], |
717 |
- 'func_kwargs': {'ebuild': None, 'catdir': None, 'live_ebuild': None, |
718 |
- 'xpkg': None, 'y_ebuild': None, |
719 |
+ 'func_kwargs': { |
720 |
+ 'catdir': (None, None), |
721 |
+ 'ebuild': (None, None), |
722 |
+ 'live_ebuild': (None, None), |
723 |
+ 'xpkg': (None, None), |
724 |
+ 'y_ebuild': (None, None), |
725 |
}, |
726 |
}, |
727 |
'description-metadata': { |
728 |
@@ -48,7 +56,9 @@ module_spec = { |
729 |
}, |
730 |
'mod_kwargs': ['qatracker', |
731 |
], |
732 |
- 'func_kwargs': {'ebuild': None, 'pkg': 'Future', |
733 |
+ 'func_kwargs': { |
734 |
+ 'ebuild': (None, None), |
735 |
+ 'pkg': ('Future', 'UNSET'), |
736 |
}, |
737 |
}, |
738 |
'license-metadata': { |
739 |
@@ -61,8 +71,11 @@ module_spec = { |
740 |
}, |
741 |
'mod_kwargs': ['qatracker', 'repo_metadata', |
742 |
], |
743 |
- 'func_kwargs': {'xpkg': None, 'ebuild': None, 'y_ebuild': None, |
744 |
- 'badlicsyntax': None, |
745 |
+ 'func_kwargs': { |
746 |
+ 'badlicsyntax': (None, None), |
747 |
+ 'ebuild': (None, None), |
748 |
+ 'xpkg': (None, None), |
749 |
+ 'y_ebuild': (None, None), |
750 |
}, |
751 |
}, |
752 |
'restrict-metadata': { |
753 |
@@ -75,7 +88,10 @@ module_spec = { |
754 |
}, |
755 |
'mod_kwargs': ['qatracker', |
756 |
], |
757 |
- 'func_kwargs': {'xpkg': None, 'ebuild': None, 'y_ebuild': None, |
758 |
+ 'func_kwargs': { |
759 |
+ 'ebuild': (None, None), |
760 |
+ 'xpkg': (None, None), |
761 |
+ 'y_ebuild': (None, None), |
762 |
}, |
763 |
}, |
764 |
'unused-metadata': { |
765 |
@@ -88,8 +104,11 @@ module_spec = { |
766 |
}, |
767 |
'mod_kwargs': ['qatracker', |
768 |
], |
769 |
- 'func_kwargs': {'xpkg': None, 'muselist': None, 'used_useflags': None, |
770 |
- 'validity_future': None, |
771 |
+ 'func_kwargs': { |
772 |
+ 'muselist': (None, None), |
773 |
+ 'used_useflags': (None, None), |
774 |
+ 'validity_future': (None, None), |
775 |
+ 'xpkg': (None, None), |
776 |
}, |
777 |
}, |
778 |
} |
779 |
|
780 |
diff --git a/pym/repoman/modules/scan/metadata/description.py b/pym/repoman/modules/scan/metadata/description.py |
781 |
index 8bce8d8..79f62e1 100644 |
782 |
--- a/pym/repoman/modules/scan/metadata/description.py |
783 |
+++ b/pym/repoman/modules/scan/metadata/description.py |
784 |
@@ -21,8 +21,8 @@ class DescriptionChecks(ScanBase): |
785 |
@param pkg: Package in which we check (object). |
786 |
@param ebuild: Ebuild which we check (object). |
787 |
''' |
788 |
- ebuild = kwargs.get('ebuild').result() |
789 |
- pkg = kwargs.get('pkg').result() |
790 |
+ ebuild = kwargs.get('ebuild').get() |
791 |
+ pkg = kwargs.get('pkg').get() |
792 |
# 14 is the length of DESCRIPTION="" |
793 |
if len(pkg._metadata['DESCRIPTION']) > max_desc_len: |
794 |
self.qatracker.add_error( |
795 |
|
796 |
diff --git a/pym/repoman/modules/scan/metadata/ebuild_metadata.py b/pym/repoman/modules/scan/metadata/ebuild_metadata.py |
797 |
index 38b13d5..e239b47 100644 |
798 |
--- a/pym/repoman/modules/scan/metadata/ebuild_metadata.py |
799 |
+++ b/pym/repoman/modules/scan/metadata/ebuild_metadata.py |
800 |
@@ -20,7 +20,7 @@ class EbuildMetadata(ScanBase): |
801 |
self.qatracker = kwargs.get('qatracker') |
802 |
|
803 |
def invalidchar(self, **kwargs): |
804 |
- ebuild = kwargs.get('ebuild').result() |
805 |
+ ebuild = kwargs.get('ebuild').get() |
806 |
for k, v in ebuild.metadata.items(): |
807 |
if not isinstance(v, basestring): |
808 |
continue |
809 |
@@ -34,13 +34,14 @@ class EbuildMetadata(ScanBase): |
810 |
return False |
811 |
|
812 |
def missing(self, **kwargs): |
813 |
- ebuild = kwargs.get('ebuild').result() |
814 |
+ ebuild = kwargs.get('ebuild').get() |
815 |
+ live_ebuild = kwargs.get('live_ebuild').get() |
816 |
for pos, missing_var in enumerate(missingvars): |
817 |
if not ebuild.metadata.get(missing_var): |
818 |
if kwargs.get('catdir') == "virtual" and \ |
819 |
missing_var in ("HOMEPAGE", "LICENSE"): |
820 |
continue |
821 |
- if kwargs.get('live_ebuild') and missing_var == "KEYWORDS": |
822 |
+ if live_ebuild and missing_var == "KEYWORDS": |
823 |
continue |
824 |
myqakey = missingvars[pos] + ".missing" |
825 |
self.qatracker.add_error(myqakey, '%s/%s.ebuild' |
826 |
@@ -48,13 +49,13 @@ class EbuildMetadata(ScanBase): |
827 |
return False |
828 |
|
829 |
def old_virtual(self, **kwargs): |
830 |
- ebuild = kwargs.get('ebuild').result() |
831 |
+ ebuild = kwargs.get('ebuild').get() |
832 |
if ebuild.metadata.get("PROVIDE"): |
833 |
self.qatracker.add_error("virtual.oldstyle", ebuild.relative_path) |
834 |
return False |
835 |
|
836 |
def virtual(self, **kwargs): |
837 |
- ebuild = kwargs.get('ebuild').result() |
838 |
+ ebuild = kwargs.get('ebuild').get() |
839 |
if kwargs.get('catdir') == "virtual": |
840 |
for var in ("HOMEPAGE", "LICENSE"): |
841 |
if ebuild.metadata.get(var): |
842 |
|
843 |
diff --git a/pym/repoman/modules/scan/metadata/license.py b/pym/repoman/modules/scan/metadata/license.py |
844 |
index b08834a..4a67c70 100644 |
845 |
--- a/pym/repoman/modules/scan/metadata/license.py |
846 |
+++ b/pym/repoman/modules/scan/metadata/license.py |
847 |
@@ -26,9 +26,9 @@ class LicenseChecks(ScanBase): |
848 |
@param y_ebuild: Ebuild which we check (string). |
849 |
''' |
850 |
xpkg = kwargs.get('xpkg') |
851 |
- ebuild = kwargs.get('ebuild').result() |
852 |
+ ebuild = kwargs.get('ebuild').get() |
853 |
y_ebuild = kwargs.get('y_ebuild') |
854 |
- if not self.get_result(kwargs.get('badlicsyntax'), False): |
855 |
+ if not kwargs.get('badlicsyntax').get(): |
856 |
# Parse the LICENSE variable, remove USE conditions and flatten it. |
857 |
licenses = portage.dep.use_reduce( |
858 |
ebuild.metadata["LICENSE"], matchall=1, flat=True) |
859 |
|
860 |
diff --git a/pym/repoman/modules/scan/metadata/pkgmetadata.py b/pym/repoman/modules/scan/metadata/pkgmetadata.py |
861 |
index 242c923..9216d77 100644 |
862 |
--- a/pym/repoman/modules/scan/metadata/pkgmetadata.py |
863 |
+++ b/pym/repoman/modules/scan/metadata/pkgmetadata.py |
864 |
@@ -68,15 +68,14 @@ class PkgMetadata(ScanBase): |
865 |
''' |
866 |
xpkg = kwargs.get('xpkg') |
867 |
checkdir = kwargs.get('checkdir') |
868 |
- checkdirlist = kwargs.get('checkdirlist') |
869 |
+ checkdirlist = kwargs.get('checkdirlist').get() |
870 |
repolevel = kwargs.get('repolevel') |
871 |
|
872 |
self.musedict = {} |
873 |
if self.options.mode in ['manifest']: |
874 |
# update the dynamic data |
875 |
- self.set_result_raise([ |
876 |
- (kwargs.get('muselist'), frozenset(self.musedict)) |
877 |
- ]) |
878 |
+ dyn_muselist = kwargs.get('muselist') |
879 |
+ dyn_muselist.set(frozenset(self.musedict)) |
880 |
return False |
881 |
|
882 |
# metadata.xml file check |
883 |
@@ -189,9 +188,8 @@ class PkgMetadata(ScanBase): |
884 |
self.qatracker.add_error("metadata.bad", xpkg + "/metadata.xml") |
885 |
del metadata_bad |
886 |
# update the dynamic data |
887 |
- self.set_result_raise([ |
888 |
- (kwargs.get('muselist'), frozenset(self.musedict)) |
889 |
- ]) |
890 |
+ dyn_muselist = kwargs.get('muselist') |
891 |
+ dyn_muselist.set(frozenset(self.musedict)) |
892 |
return False |
893 |
|
894 |
@property |
895 |
|
896 |
diff --git a/pym/repoman/modules/scan/metadata/restrict.py b/pym/repoman/modules/scan/metadata/restrict.py |
897 |
index 044cc2a..0f9c5e5 100644 |
898 |
--- a/pym/repoman/modules/scan/metadata/restrict.py |
899 |
+++ b/pym/repoman/modules/scan/metadata/restrict.py |
900 |
@@ -21,7 +21,7 @@ class RestrictChecks(ScanBase): |
901 |
|
902 |
def check(self, **kwargs): |
903 |
xpkg = kwargs.get('xpkg') |
904 |
- ebuild = kwargs.get('ebuild').result() |
905 |
+ ebuild = kwargs.get('ebuild').get() |
906 |
y_ebuild = kwargs.get('y_ebuild') |
907 |
myrestrict = None |
908 |
|
909 |
|
910 |
diff --git a/pym/repoman/modules/scan/metadata/unused.py b/pym/repoman/modules/scan/metadata/unused.py |
911 |
index fdca418..7733847 100644 |
912 |
--- a/pym/repoman/modules/scan/metadata/unused.py |
913 |
+++ b/pym/repoman/modules/scan/metadata/unused.py |
914 |
@@ -1,8 +1,6 @@ |
915 |
|
916 |
from repoman.modules.scan.scanbase import ScanBase |
917 |
|
918 |
-from portage.util.futures import InvalidStateError |
919 |
- |
920 |
|
921 |
class UnusedCheck(ScanBase): |
922 |
'''Checks and reports any un-used metadata.xml use flag descriptions''' |
923 |
@@ -23,9 +21,9 @@ class UnusedCheck(ScanBase): |
924 |
@param validity_future: Future instance |
925 |
''' |
926 |
xpkg = kwargs.get('xpkg') |
927 |
- muselist = self.get_result(kwargs.get('muselist'), set()) |
928 |
+ muselist = kwargs.get('muselist').get() |
929 |
used_useflags = kwargs.get('used_useflags') |
930 |
- valid_state = self.get_result(kwargs['validity_future'], True) |
931 |
+ valid_state = kwargs.get('validity_future').get() |
932 |
# check if there are unused local USE-descriptions in metadata.xml |
933 |
# (unless there are any invalids, to avoid noise) |
934 |
if valid_state: |
935 |
|
936 |
diff --git a/pym/repoman/modules/scan/mirrors/__init__.py b/pym/repoman/modules/scan/mirrors/__init__.py |
937 |
index 1885dca..94ded6d 100644 |
938 |
--- a/pym/repoman/modules/scan/mirrors/__init__.py |
939 |
+++ b/pym/repoman/modules/scan/mirrors/__init__.py |
940 |
@@ -20,7 +20,9 @@ module_spec = { |
941 |
}, |
942 |
'mod_kwargs': ['repo_settings', 'qatracker', |
943 |
], |
944 |
- 'func_kwargs': {'ebuild': None, 'src_uri_error': None, |
945 |
+ 'func_kwargs': { |
946 |
+ 'ebuild': (None, None), |
947 |
+ 'src_uri_error': (None, None), |
948 |
}, |
949 |
}, |
950 |
} |
951 |
|
952 |
diff --git a/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py b/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py |
953 |
index 8e3d250..9118d59 100644 |
954 |
--- a/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py |
955 |
+++ b/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py |
956 |
@@ -33,8 +33,9 @@ class ThirdPartyMirrors(ScanBase): |
957 |
@param src_uri_error: boolean |
958 |
@returns: dictionary |
959 |
''' |
960 |
- ebuild = kwargs.get('ebuild').result() |
961 |
- if self.get_result(kwargs.get('src_uri_error'), False): |
962 |
+ ebuild = kwargs.get('ebuild').get() |
963 |
+ src_uri_error = kwargs.get('src_uri_error').get() |
964 |
+ if src_uri_error: |
965 |
return True |
966 |
for uri in portage.dep.use_reduce( |
967 |
ebuild.metadata["SRC_URI"], matchall=True, is_src_uri=True, |
968 |
|
969 |
diff --git a/pym/repoman/modules/scan/scanbase.py b/pym/repoman/modules/scan/scanbase.py |
970 |
index 740092e..e5160d2 100644 |
971 |
--- a/pym/repoman/modules/scan/scanbase.py |
972 |
+++ b/pym/repoman/modules/scan/scanbase.py |
973 |
@@ -1,7 +1,5 @@ |
974 |
# -*- coding:utf-8 -*- |
975 |
|
976 |
-from portage.util.futures import InvalidStateError |
977 |
- |
978 |
|
979 |
class ScanBase(object): |
980 |
'''Skeleton class for performing a scan for one or more items |
981 |
@@ -35,40 +33,6 @@ class ScanBase(object): |
982 |
return False # used as a continue True/False value |
983 |
""" |
984 |
|
985 |
- @staticmethod |
986 |
- def set_result_pass(items): |
987 |
- '''Set Future instance results, pass on InvalidStateError |
988 |
- |
989 |
- @param items: iterable of key, value tuples |
990 |
- ''' |
991 |
- for key, value in items: |
992 |
- try: |
993 |
- key.set_result(value) |
994 |
- except InvalidStateError: |
995 |
- pass |
996 |
- |
997 |
- @staticmethod |
998 |
- def set_result_raise(items): |
999 |
- '''Set Future instance results, raises an exception on InvalidStateError |
1000 |
- |
1001 |
- @param items: iterable of key, value tuples |
1002 |
- ''' |
1003 |
- for key, value in items: |
1004 |
- key.set_result(value) |
1005 |
- |
1006 |
- def get_result(self, future, unset_value=None): |
1007 |
- '''Returns a Future result, or the unset value passed in |
1008 |
- |
1009 |
- @param future: The Future instance being queried |
1010 |
- @param unset_value: |
1011 |
- @returns: Future result |
1012 |
- ''' |
1013 |
- try: |
1014 |
- result = future.result() |
1015 |
- except InvalidStateError: |
1016 |
- result = unset_value |
1017 |
- return result |
1018 |
- |
1019 |
@property |
1020 |
def runInPkgs(self): |
1021 |
'''Package level scans''' |
1022 |
|
1023 |
diff --git a/pym/repoman/modules/scan/status/__init__.py b/pym/repoman/modules/scan/status/__init__.py |
1024 |
index f4683bb..5f30639 100644 |
1025 |
--- a/pym/repoman/modules/scan/status/__init__.py |
1026 |
+++ b/pym/repoman/modules/scan/status/__init__.py |
1027 |
@@ -20,8 +20,11 @@ module_spec = { |
1028 |
}, |
1029 |
'mod_kwargs': ['vcs_settings', 'checks', |
1030 |
], |
1031 |
- 'func_kwargs': {'checkdir': None, 'checkdir_relative': None, |
1032 |
- 'xpkg': None, 'eadded': 'Future', |
1033 |
+ 'func_kwargs': { |
1034 |
+ 'checkdir': (None, None), |
1035 |
+ 'checkdir_relative': (None, None), |
1036 |
+ 'eadded': ('Future', 'UNSET'), |
1037 |
+ 'xpkg': (None, None), |
1038 |
}, |
1039 |
}, |
1040 |
} |
1041 |
|
1042 |
diff --git a/pym/repoman/modules/scan/status/vcsstatus.py b/pym/repoman/modules/scan/status/vcsstatus.py |
1043 |
index cadc5c0..fd56560 100644 |
1044 |
--- a/pym/repoman/modules/scan/status/vcsstatus.py |
1045 |
+++ b/pym/repoman/modules/scan/status/vcsstatus.py |
1046 |
@@ -32,9 +32,8 @@ class VCSStatus(ScanBase): |
1047 |
if self.check_not_added: |
1048 |
self.vcs_settings.status.check(checkdir, checkdir_relative, xpkg) |
1049 |
# update the dynamic data |
1050 |
- self.set_result_pass([ |
1051 |
- (kwargs.get('eadded'), self.vcs_settings.status.eadded), |
1052 |
- ]) |
1053 |
+ dyn_eadded = kwargs.get('eadded') |
1054 |
+ dyn_eadded.set(self.vcs_settings.status.eadded) |
1055 |
return False |
1056 |
|
1057 |
@property |
1058 |
|
1059 |
diff --git a/pym/repoman/modules/scan/use/__init__.py b/pym/repoman/modules/scan/use/__init__.py |
1060 |
index f157386..32da5d9 100644 |
1061 |
--- a/pym/repoman/modules/scan/use/__init__.py |
1062 |
+++ b/pym/repoman/modules/scan/use/__init__.py |
1063 |
@@ -20,9 +20,13 @@ module_spec = { |
1064 |
}, |
1065 |
'mod_kwargs': ['qatracker', 'uselist', |
1066 |
], |
1067 |
- 'func_kwargs': {'pkg': None, 'xpkg': None, 'ebuild': None, |
1068 |
- 'y_ebuild': None, 'muselist': None, 'ebuild_UsedUseFlags': 'set', |
1069 |
- 'used_useflags': None, |
1070 |
+ 'func_kwargs': { |
1071 |
+ 'ebuild': (None, None), |
1072 |
+ 'muselist': (None, None), |
1073 |
+ 'pkg': (None, None), |
1074 |
+ 'used_useflags': (None, None), |
1075 |
+ 'xpkg': (None, None), |
1076 |
+ 'y_ebuild': (None, None), |
1077 |
}, |
1078 |
}, |
1079 |
} |
1080 |
|
1081 |
diff --git a/pym/repoman/modules/scan/use/use_flags.py b/pym/repoman/modules/scan/use/use_flags.py |
1082 |
index b2b1cc0..ae8cd0d 100644 |
1083 |
--- a/pym/repoman/modules/scan/use/use_flags.py |
1084 |
+++ b/pym/repoman/modules/scan/use/use_flags.py |
1085 |
@@ -38,24 +38,20 @@ class USEFlagChecks(ScanBase): |
1086 |
@param muselist: Local USE flags of the package |
1087 |
@returns: dictionary, including {ebuild_UsedUseFlags, used_useflags} |
1088 |
''' |
1089 |
- pkg = kwargs.get('pkg').result() |
1090 |
+ pkg = kwargs.get('pkg').get() |
1091 |
package = kwargs.get('xpkg') |
1092 |
- ebuild = kwargs.get('ebuild').result() |
1093 |
+ ebuild = kwargs.get('ebuild').get() |
1094 |
y_ebuild = kwargs.get('y_ebuild') |
1095 |
- localUseFlags = self.get_result(kwargs.get('muselist'), set()) |
1096 |
- dyn_ebuild_used = kwargs.get('ebuild_UsedUseFlags') |
1097 |
+ localUseFlags = kwargs.get('muselist').get() |
1098 |
dyn_used = kwargs.get('used_useflags') |
1099 |
# reset state variables for the run |
1100 |
self.useFlags = [] |
1101 |
self.defaultUseFlags = [] |
1102 |
self.usedUseFlags = set() |
1103 |
- dyn_ebuild_used.clear() |
1104 |
# perform the checks |
1105 |
self._checkGlobal(pkg) |
1106 |
self._checkMetadata(package, ebuild, y_ebuild, localUseFlags) |
1107 |
self._checkRequiredUSE(pkg, ebuild) |
1108 |
- # update the dynamic data |
1109 |
- dyn_ebuild_used.union(self.usedUseFlags) |
1110 |
dyn_used.update(self.usedUseFlags) |
1111 |
return False |
1112 |
|
1113 |
|
1114 |
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py |
1115 |
index b3eeafd..c9b76a4 100644 |
1116 |
--- a/pym/repoman/scanner.py |
1117 |
+++ b/pym/repoman/scanner.py |
1118 |
@@ -9,7 +9,7 @@ import portage |
1119 |
from portage import normalize_path |
1120 |
from portage import os |
1121 |
from portage.output import green |
1122 |
-from portage.util.futures.futures import Future |
1123 |
+from portage.util.futures.extendedfutures import ExtendedFuture |
1124 |
from repoman.modules.commit import repochecks |
1125 |
from repoman.profile import check_profiles, dev_profile_keywords, setup_profile |
1126 |
from repoman.repos import repo_metadata |
1127 |
@@ -28,7 +28,7 @@ MODULE_NAMES = MODULE_CONTROLLER.module_names[:] |
1128 |
# initial development debug info |
1129 |
logging.debug("module_names: %s", MODULE_NAMES) |
1130 |
|
1131 |
-DATA_TYPES = {'dict': dict, 'Future': Future, 'list': list, 'set': set} |
1132 |
+DATA_TYPES = {'dict': dict, 'Future': ExtendedFuture, 'list': list, 'set': set} |
1133 |
|
1134 |
|
1135 |
class Scanner(object): |
1136 |
@@ -203,6 +203,8 @@ class Scanner(object): |
1137 |
} |
1138 |
# initialize the plugin checks here |
1139 |
self.modules = {} |
1140 |
+ self.ext_futures = {} |
1141 |
+ self.pkg_level_futures = None |
1142 |
|
1143 |
def set_kwargs(self, mod): |
1144 |
'''Creates a limited set of kwargs to pass to the module's __init__() |
1145 |
@@ -215,8 +217,7 @@ class Scanner(object): |
1146 |
kwargs[key] = self.kwargs[key] |
1147 |
return kwargs |
1148 |
|
1149 |
- @staticmethod |
1150 |
- def set_func_kwargs(mod, dynamic_data=None): |
1151 |
+ def set_func_kwargs(self, mod, dynamic_data=None): |
1152 |
'''Updates the dynamic_data dictionary with any new key, value pairs. |
1153 |
Creates a limited set of kwargs to pass to the modulefunctions to run |
1154 |
|
1155 |
@@ -233,17 +234,49 @@ class Scanner(object): |
1156 |
for key in new: |
1157 |
logging.debug("set_func_kwargs(); adding: %s, %s", |
1158 |
key, func_kwargs[key]) |
1159 |
- dynamic_data[key] = DATA_TYPES[func_kwargs[key]]() |
1160 |
+ logging.debug("set_func_kwargs(); adding: %s, %s", |
1161 |
+ key, func_kwargs[key]) |
1162 |
+ if func_kwargs[key][0] in ['Future', 'ExtendedFuture']: |
1163 |
+ if key not in self.ext_futures: |
1164 |
+ logging.debug( |
1165 |
+ "Adding a new key: %s to the ExtendedFuture dict", key) |
1166 |
+ self.ext_futures[key] = func_kwargs[key] |
1167 |
+ self._set_future(dynamic_data, key, func_kwargs[key]) |
1168 |
+ else: # builtin python data type |
1169 |
+ dynamic_data[key] = DATA_TYPES[func_kwargs[key][0]]() |
1170 |
kwargs = {} |
1171 |
for key in required: |
1172 |
kwargs[key] = dynamic_data[key] |
1173 |
return kwargs |
1174 |
|
1175 |
def reset_futures(self, dynamic_data): |
1176 |
- for key in list(dynamic_data): |
1177 |
- #if key in ['ebuild', 'pkg']: # and isinstance(dynamic_data[key], Future): |
1178 |
- if isinstance(dynamic_data[key], Future) and key not in ['muselist']: |
1179 |
- dynamic_data[key] = Future() |
1180 |
+ '''Reset any Future data types |
1181 |
+ |
1182 |
+ @param dynamic_data: dictionary |
1183 |
+ ''' |
1184 |
+ for key in list(self.ext_futures): |
1185 |
+ if key not in self.pkg_level_futures: |
1186 |
+ self._set_future(dynamic_data, key, self.ext_futures[key]) |
1187 |
+ |
1188 |
+ @staticmethod |
1189 |
+ def _set_future(dynamic_data, key, data): |
1190 |
+ '''Set a dynamic_data key to a new ExtendedFuture instance |
1191 |
+ |
1192 |
+ @param dynamic_data: dictionary |
1193 |
+ @param key: tuple of (dictionary-key, default-value) |
1194 |
+ ''' |
1195 |
+ #print("***", key, data) |
1196 |
+ if data[0] in ['Future', 'ExtendedFuture']: |
1197 |
+ if data[1] in ['UNSET']: |
1198 |
+ #print("adding unset default") |
1199 |
+ dynamic_data[key] = ExtendedFuture() |
1200 |
+ else: |
1201 |
+ if data[1] in DATA_TYPES: |
1202 |
+ default = DATA_TYPES[data[1]]() |
1203 |
+ else: |
1204 |
+ default = data[1] |
1205 |
+ #print("adding default:", default) |
1206 |
+ dynamic_data[key] = ExtendedFuture(default) |
1207 |
|
1208 |
def scan_pkgs(self, can_force): |
1209 |
for xpkg in self.effective_scanlist: |
1210 |
@@ -264,7 +297,7 @@ class Scanner(object): |
1211 |
checkdirlist = os.listdir(checkdir) |
1212 |
|
1213 |
dynamic_data = { |
1214 |
- 'checkdirlist': checkdirlist, |
1215 |
+ 'checkdirlist': ExtendedFuture(checkdirlist), |
1216 |
'checkdir': checkdir, |
1217 |
'xpkg': xpkg, |
1218 |
'changed': self.changed, |
1219 |
@@ -273,12 +306,21 @@ class Scanner(object): |
1220 |
'repolevel': self.repolevel, |
1221 |
'catdir': catdir, |
1222 |
'pkgdir': pkgdir, |
1223 |
- 'validity_future': Future(), |
1224 |
+ 'pkgs': ExtendedFuture({}), |
1225 |
+ 'validity_future': ExtendedFuture(True), |
1226 |
'y_ebuild': None, |
1227 |
# this needs to be reset at the pkg level only, |
1228 |
# easiest is to just initialize it here |
1229 |
- 'muselist': Future(), |
1230 |
+ 'muselist': ExtendedFuture(set()), |
1231 |
+ 'src_uri_error': ExtendedFuture(), |
1232 |
} |
1233 |
+ self.pkg_level_futures = [ |
1234 |
+ 'checkdirlist', |
1235 |
+ 'muselist', |
1236 |
+ 'pkgs', |
1237 |
+ 'src_uri_error', |
1238 |
+ 'validity_future', |
1239 |
+ ] |
1240 |
# need to set it up for ==> self.modules or some other ordered list |
1241 |
for mod in [('manifests', 'Manifests'), ('isebuild', 'IsEbuild'), |
1242 |
('keywords', 'KeywordChecks'), ('files', 'FileChecks'), |
1243 |
@@ -306,7 +348,7 @@ class Scanner(object): |
1244 |
continue |
1245 |
|
1246 |
# Sort ebuilds in ascending order for the KEYWORDS.dropped check. |
1247 |
- self.pkgs = dynamic_data['pkgs'] |
1248 |
+ self.pkgs = dynamic_data['pkgs'].get() |
1249 |
ebuildlist = sorted(self.pkgs.values()) |
1250 |
ebuildlist = [pkg.pf for pkg in ebuildlist] |