Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:master commit in: pym/repoman/modules/scan/arches/, pym/repoman/modules/scan/eclasses/, ...
Date: Fri, 29 Apr 2016 17:24:52
Message-Id: 1461598133.a05acb46919638ef60a4303c2bc6d92e9e6c0771.dolsen@gentoo
1 commit: a05acb46919638ef60a4303c2bc6d92e9e6c0771
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Sun Apr 24 01:34:37 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=a05acb46
7
8 More new data structure change fixes
9
10 Fix arches not being cleared every ebuild.
11
12 pym/repoman/modules/scan/arches/arches.py | 1 +
13 pym/repoman/modules/scan/depend/depend.py | 1 +
14 pym/repoman/modules/scan/ebuild/__init__.py | 2 +-
15 pym/repoman/modules/scan/ebuild/ebuild.py | 2 +-
16 pym/repoman/modules/scan/ebuild/isebuild.py | 11 ++++--
17 pym/repoman/modules/scan/eclasses/live.py | 5 ++-
18 pym/repoman/modules/scan/keywords/__init__.py | 4 +-
19 pym/repoman/modules/scan/metadata/__init__.py | 2 +-
20 pym/repoman/modules/scan/metadata/unused.py | 2 +-
21 pym/repoman/modules/scan/use/use_flags.py | 13 +++---
22 pym/repoman/scanner.py | 57 +++++++++++++++++----------
23 11 files changed, 62 insertions(+), 38 deletions(-)
24
25 diff --git a/pym/repoman/modules/scan/arches/arches.py b/pym/repoman/modules/scan/arches/arches.py
26 index 8bc7a24..4df25a8 100644
27 --- a/pym/repoman/modules/scan/arches/arches.py
28 +++ b/pym/repoman/modules/scan/arches/arches.py
29 @@ -69,6 +69,7 @@ class ArchChecks(ScanBase):
30 arches.add(('**', '**', ('**',)))
31 # update the dynamic data
32 dyn_arches = kwargs.get('arches')
33 + #dyn_arches.clear()
34 dyn_arches.update(arches)
35 return False
36
37
38 diff --git a/pym/repoman/modules/scan/depend/depend.py b/pym/repoman/modules/scan/depend/depend.py
39 index a5f91d3..cd1fb33 100644
40 --- a/pym/repoman/modules/scan/depend/depend.py
41 +++ b/pym/repoman/modules/scan/depend/depend.py
42 @@ -145,6 +145,7 @@ class DependChecks(ScanBase):
43
44 # update the dynamic data
45 dyn_unknown = kwargs.get('unknown_pkgs')
46 + dyn_unknown.clear()
47 dyn_unknown.update(unknown_pkgs)
48 self.set_result_pass([
49 (kwargs.get('badlicsyntax'), badlicsyntax),
50
51 diff --git a/pym/repoman/modules/scan/ebuild/__init__.py b/pym/repoman/modules/scan/ebuild/__init__.py
52 index ea21ece..efb2feb 100644
53 --- a/pym/repoman/modules/scan/ebuild/__init__.py
54 +++ b/pym/repoman/modules/scan/ebuild/__init__.py
55 @@ -21,7 +21,7 @@ module_spec = {
56 'mod_kwargs': ['portdb', 'qatracker', 'repo_settings'
57 ],
58 'func_kwargs': {'checkdirlist': 'list', 'checkdir': None, 'xpkg': None,
59 - 'validity_fuse': None, 'can_force': None, 'pkgs': 'dict',
60 + 'validity_future': 'Future', 'can_force': None, 'pkgs': 'dict',
61 },
62 },
63 'ebuild-module': {
64
65 diff --git a/pym/repoman/modules/scan/ebuild/ebuild.py b/pym/repoman/modules/scan/ebuild/ebuild.py
66 index b015985..b02cdcd 100644
67 --- a/pym/repoman/modules/scan/ebuild/ebuild.py
68 +++ b/pym/repoman/modules/scan/ebuild/ebuild.py
69 @@ -86,7 +86,7 @@ class Ebuild(ScanBase):
70 self.qatracker.add_error(
71 "ebuild.notadded", self.xpkg + "/" + self.y_ebuild + ".ebuild")
72 # update the dynamic data
73 - self.set_result_raise([('ebuild', self)])
74 + self.set_result_raise([(kwargs.get('ebuild'), self)])
75 return False
76
77 def set_pkg_data(self, **kwargs):
78
79 diff --git a/pym/repoman/modules/scan/ebuild/isebuild.py b/pym/repoman/modules/scan/ebuild/isebuild.py
80 index 3e288a3..24680e2 100644
81 --- a/pym/repoman/modules/scan/ebuild/isebuild.py
82 +++ b/pym/repoman/modules/scan/ebuild/isebuild.py
83 @@ -13,6 +13,7 @@ from portage import os
84 from repoman.qa_data import no_exec, allvars
85 from repoman.modules.scan.scanbase import ScanBase
86
87 +
88 class IsEbuild(ScanBase):
89 '''Performs basic tests to confirm it is an ebuild'''
90
91 @@ -88,9 +89,13 @@ class IsEbuild(ScanBase):
92 self.continue_ = True
93 self.set_result_pass([(can_force, False)])
94 # set our updated data
95 - self.set_result_raise([
96 - (kwargs.get('pkgs'), pkgs),
97 - ])
98 + dyn_pkgs = kwargs.get('pkgs')
99 + # clear() sets it to None,
100 + # we don't want to kill the pointer reference
101 + # just set it back to an empty dict()
102 + for key in list(dyn_pkgs):
103 + dyn_pkgs.pop(key)
104 + dyn_pkgs.update(pkgs)
105 return self.continue_
106
107 @property
108
109 diff --git a/pym/repoman/modules/scan/eclasses/live.py b/pym/repoman/modules/scan/eclasses/live.py
110 index e5bb7dc..85e829c 100644
111 --- a/pym/repoman/modules/scan/eclasses/live.py
112 +++ b/pym/repoman/modules/scan/eclasses/live.py
113 @@ -25,10 +25,11 @@ class LiveEclassChecks(ScanBase):
114
115 @returns: dictionary, including {live_ebuild}
116 '''
117 + ebuild = kwargs.get('ebuild').result()
118 # update the dynamic data
119 dyn_live = kwargs.get('live_ebuild')
120 - dyn_live.update(LIVE_ECLASSES.intersection(
121 - kwargs.get('ebuild').inherited))
122 + #dyn_live.clear()
123 + dyn_live.update(LIVE_ECLASSES.intersection(ebuild.inherited))
124 return False
125
126 def check(self, **kwargs):
127
128 diff --git a/pym/repoman/modules/scan/keywords/__init__.py b/pym/repoman/modules/scan/keywords/__init__.py
129 index 2d92dba..2b3f6ca 100644
130 --- a/pym/repoman/modules/scan/keywords/__init__.py
131 +++ b/pym/repoman/modules/scan/keywords/__init__.py
132 @@ -20,8 +20,8 @@ module_spec = {
133 },
134 'mod_kwargs': ['qatracker', 'options', 'repo_metadata', 'profiles',
135 ],
136 - 'func_kwargs': {'pkg': None, 'xpkg': None, 'ebuild': None,
137 - 'y_ebuild': None, 'changed': None, 'live_ebuild': None,
138 + 'func_kwargs': {'pkg': 'Future', 'xpkg': None, 'ebuild': 'Future',
139 + 'y_ebuild': None, 'changed': None, 'live_ebuild': 'set',
140 },
141 },
142 }
143
144 diff --git a/pym/repoman/modules/scan/metadata/__init__.py b/pym/repoman/modules/scan/metadata/__init__.py
145 index af9771b..9ccf377 100644
146 --- a/pym/repoman/modules/scan/metadata/__init__.py
147 +++ b/pym/repoman/modules/scan/metadata/__init__.py
148 @@ -48,7 +48,7 @@ module_spec = {
149 },
150 'mod_kwargs': ['qatracker',
151 ],
152 - 'func_kwargs': {'ebuild': None, 'pkg': None,
153 + 'func_kwargs': {'ebuild': None, 'pkg': 'Future',
154 },
155 },
156 'license-metadata': {
157
158 diff --git a/pym/repoman/modules/scan/metadata/unused.py b/pym/repoman/modules/scan/metadata/unused.py
159 index 0184d78..fdca418 100644
160 --- a/pym/repoman/modules/scan/metadata/unused.py
161 +++ b/pym/repoman/modules/scan/metadata/unused.py
162 @@ -23,7 +23,7 @@ class UnusedCheck(ScanBase):
163 @param validity_future: Future instance
164 '''
165 xpkg = kwargs.get('xpkg')
166 - muselist = kwargs.get('muselist').result()
167 + muselist = self.get_result(kwargs.get('muselist'), set())
168 used_useflags = kwargs.get('used_useflags')
169 valid_state = self.get_result(kwargs['validity_future'], True)
170 # check if there are unused local USE-descriptions in metadata.xml
171
172 diff --git a/pym/repoman/modules/scan/use/use_flags.py b/pym/repoman/modules/scan/use/use_flags.py
173 index 70f7583..b2b1cc0 100644
174 --- a/pym/repoman/modules/scan/use/use_flags.py
175 +++ b/pym/repoman/modules/scan/use/use_flags.py
176 @@ -42,20 +42,21 @@ class USEFlagChecks(ScanBase):
177 package = kwargs.get('xpkg')
178 ebuild = kwargs.get('ebuild').result()
179 y_ebuild = kwargs.get('y_ebuild')
180 - localUseFlags = kwargs.get('muselist').result()
181 + localUseFlags = self.get_result(kwargs.get('muselist'), set())
182 + dyn_ebuild_used = kwargs.get('ebuild_UsedUseFlags')
183 + dyn_used = kwargs.get('used_useflags')
184 # reset state variables for the run
185 self.useFlags = []
186 self.defaultUseFlags = []
187 self.usedUseFlags = set()
188 + dyn_ebuild_used.clear()
189 + # perform the checks
190 self._checkGlobal(pkg)
191 self._checkMetadata(package, ebuild, y_ebuild, localUseFlags)
192 self._checkRequiredUSE(pkg, ebuild)
193 # update the dynamic data
194 - used_useflags = kwargs.get('used_useflags').union(self.usedUseFlags)
195 - dyn_ebuild_used = kwargs.get('ebuild_UsedUseFlags')
196 - dyn_ebuild_used.update(self.usedUseFlags)
197 - dyn_used = kwargs.get('used_useflags')
198 - dyn_used.update(used_useflags)
199 + dyn_ebuild_used.union(self.usedUseFlags)
200 + dyn_used.update(self.usedUseFlags)
201 return False
202
203
204
205 diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
206 index 3d2c69c..eaf023b 100644
207 --- a/pym/repoman/scanner.py
208 +++ b/pym/repoman/scanner.py
209 @@ -203,11 +203,6 @@ class Scanner(object):
210 }
211 # initialize the plugin checks here
212 self.modules = {}
213 - for mod in ['manifests', 'isebuild', 'keywords', 'files', 'vcsstatus',
214 - 'fetches', 'pkgmetadata']:
215 - mod_class = MODULE_CONTROLLER.get_class(mod)
216 - logging.debug("Initializing class name: %s", mod_class.__name__)
217 - self.modules[mod_class.__name__] = mod_class(**self.set_kwargs(mod))
218
219 def set_kwargs(self, mod):
220 '''Creates a limited set of kwargs to pass to the module's __init__()
221 @@ -231,17 +226,25 @@ class Scanner(object):
222 '''
223 func_kwargs = MODULE_CONTROLLER.modules[mod]['func_kwargs']
224 # determine new keys
225 - required = set(func_kwargs.viewkeys())
226 - exist = set(dynamic_data.viewkeys())
227 - new = exist.difference(required)
228 + required = set(list(func_kwargs))
229 + exist = set(list(dynamic_data))
230 + new = required.difference(exist)
231 # update dynamic_data with initialized entries
232 for key in new:
233 - dynamic_data[key] = DATA_TYPES[func_kwargs['key']]()
234 + logging.debug("set_func_kwargs(); adding: %s, %s",
235 + key, func_kwargs[key])
236 + dynamic_data[key] = DATA_TYPES[func_kwargs[key]]()
237 kwargs = {}
238 for key in required:
239 kwargs[key] = dynamic_data[key]
240 return kwargs
241
242 + def reset_futures(self, dynamic_data):
243 + for key in list(dynamic_data):
244 + #if key in ['ebuild', 'pkg']: # and isinstance(dynamic_data[key], Future):
245 + if isinstance(dynamic_data[key], Future) and key not in ['muselist']:
246 + dynamic_data[key] = Future()
247 +
248 def scan_pkgs(self, can_force):
249 for xpkg in self.effective_scanlist:
250 xpkg_continue = False
251 @@ -270,16 +273,26 @@ class Scanner(object):
252 'repolevel': self.repolevel,
253 'catdir': catdir,
254 'pkgdir': pkgdir,
255 - 'validity_future': Future()
256 + 'validity_future': Future(),
257 + 'y_ebuild': None,
258 + # this needs to be reset at the pkg level only,
259 + # easiest is to just initialize it here
260 + 'muselist': Future(),
261 }
262 # need to set it up for ==> self.modules or some other ordered list
263 - for mod in ['Manifests', 'IsEbuild', 'KeywordChecks', 'FileChecks',
264 - 'VCSStatus', 'FetchChecks', 'PkgMetadata']:
265 - logging.debug("scan_pkgs; module: %s", mod)
266 - do_it, functions = self.modules[mod].runInPkgs
267 + for mod in [('manifests', 'Manifests'), ('isebuild', 'IsEbuild'),
268 + ('keywords', 'KeywordChecks'), ('files', 'FileChecks'),
269 + ('vcsstatus', 'VCSStatus'), ('fetches', 'FetchChecks'),
270 + ('pkgmetadata', 'PkgMetadata'),
271 + ]:
272 + mod_class = MODULE_CONTROLLER.get_class(mod[0])
273 + logging.debug("Initializing class name: %s", mod_class.__name__)
274 + self.modules[mod_class.__name__] = mod_class(**self.set_kwargs(mod[0]))
275 + logging.debug("scan_pkgs; module: %s", mod[1])
276 + do_it, functions = self.modules[mod[1]].runInPkgs
277 if do_it:
278 for func in functions:
279 - _continue = func(**self.set_func_kwargs(mod, dynamic_data))
280 + _continue = func(**self.set_func_kwargs(mod[0], dynamic_data))
281 if _continue:
282 # If we can't access all the metadata then it's totally unsafe to
283 # commit since there's no way to generate a correct Manifest.
284 @@ -312,6 +325,7 @@ class Scanner(object):
285 dynamic_data['used_useflags'] = set()
286
287 for y_ebuild in ebuildlist:
288 + self.reset_futures(dynamic_data)
289 dynamic_data['y_ebuild'] = y_ebuild
290 y_ebuild_continue = False
291
292 @@ -320,7 +334,8 @@ class Scanner(object):
293 for mod in [('ebuild', 'Ebuild'), ('live', 'LiveEclassChecks'),
294 ('eapi', 'EAPIChecks'), ('ebuild_metadata', 'EbuildMetadata'),
295 ('thirdpartymirrors', 'ThirdPartyMirrors'),
296 - ('description', 'DescriptionChecks'), (None, 'KeywordChecks'),
297 + ('description', 'DescriptionChecks'),
298 + ('keywords', 'KeywordChecks'),
299 ('arches', 'ArchChecks'), ('depend', 'DependChecks'),
300 ('use_flags', 'USEFlagChecks'), ('ruby', 'RubyEclassChecks'),
301 ('license', 'LicenseChecks'), ('restrict', 'RestrictChecks'),
302 @@ -329,17 +344,17 @@ class Scanner(object):
303 ('options', 'Options'), ('profile', 'ProfileDependsChecks'),
304 ('unknown', 'DependUnknown'),
305 ]:
306 - if mod[0]:
307 + if mod[0] and mod[1] not in self.modules:
308 mod_class = MODULE_CONTROLLER.get_class(mod[0])
309 logging.debug("Initializing class name: %s", mod_class.__name__)
310 - self.modules[mod[1]] = mod_class(**self.set_kwargs(mod))
311 + self.modules[mod[1]] = mod_class(**self.set_kwargs(mod[0]))
312 logging.debug("scan_ebuilds: module: %s", mod[1])
313 do_it, functions = self.modules[mod[1]].runInEbuilds
314 logging.debug("do_it: %s, functions: %s", do_it, [x.__name__ for x in functions])
315 if do_it:
316 for func in functions:
317 logging.debug("\tRunning function: %s", func)
318 - _continue = func(**self.set_func_kwargs(mod, dynamic_data))
319 + _continue = func(**self.set_func_kwargs(mod[0], dynamic_data))
320 if _continue:
321 # If we can't access all the metadata then it's totally unsafe to
322 # commit since there's no way to generate a correct Manifest.
323 @@ -363,14 +378,14 @@ class Scanner(object):
324 if mod[0]:
325 mod_class = MODULE_CONTROLLER.get_class(mod[0])
326 logging.debug("Initializing class name: %s", mod_class.__name__)
327 - self.modules[mod[1]] = mod_class(**self.set_kwargs(mod))
328 + self.modules[mod[1]] = mod_class(**self.set_kwargs(mod[0]))
329 logging.debug("scan_ebuilds final checks: module: %s", mod[1])
330 do_it, functions = self.modules[mod[1]].runInFinal
331 logging.debug("do_it: %s, functions: %s", do_it, [x.__name__ for x in functions])
332 if do_it:
333 for func in functions:
334 logging.debug("\tRunning function: %s", func)
335 - _continue = func(**self.set_func_kwargs(mod, dynamic_data))
336 + _continue = func(**self.set_func_kwargs(mod[0], dynamic_data))
337 if _continue:
338 xpkg_complete = True
339 # logging.debug("\t>>> Continuing")