1 |
commit: b0cc44e4e57948421b474ad6693c6aa3994b6555 |
2 |
Author: Tom Wijsman <tomwij <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Jun 6 12:24:18 2014 +0000 |
4 |
Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> |
5 |
CommitDate: Wed Oct 1 23:45:34 2014 +0000 |
6 |
URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=b0cc44e4 |
7 |
|
8 |
repoman: Apply PEP 8 guidelines again (except for W191) |
9 |
|
10 |
--- |
11 |
pym/repoman/_portage.py | 1 - |
12 |
pym/repoman/_xml.py | 6 -- |
13 |
pym/repoman/checks/directories/files.py | 17 ++-- |
14 |
pym/repoman/checks/ebuilds/checks.py | 2 +- |
15 |
pym/repoman/checks/ebuilds/eclasses/live.py | 2 +- |
16 |
pym/repoman/checks/ebuilds/eclasses/ruby.py | 2 +- |
17 |
pym/repoman/checks/ebuilds/fetches.py | 29 ++++--- |
18 |
pym/repoman/checks/ebuilds/isebuild.py | 6 +- |
19 |
pym/repoman/checks/ebuilds/manifests.py | 7 +- |
20 |
pym/repoman/checks/ebuilds/misc.py | 11 ++- |
21 |
pym/repoman/checks/ebuilds/pkgmetadata.py | 42 ++++----- |
22 |
pym/repoman/checks/ebuilds/thirdpartymirrors.py | 8 +- |
23 |
pym/repoman/checks/ebuilds/use_flags.py | 5 -- |
24 |
pym/repoman/checks/herds/metadata.py | 4 - |
25 |
pym/repoman/ebuild.py | 6 +- |
26 |
pym/repoman/errors.py | 2 - |
27 |
pym/repoman/main.py | 109 ++++++++++++++---------- |
28 |
pym/repoman/qa_data.py | 4 - |
29 |
pym/repoman/qa_tracker.py | 13 ++- |
30 |
pym/repoman/repos.py | 35 ++++---- |
31 |
pym/repoman/scan.py | 18 ++-- |
32 |
pym/repoman/vcs/vcs.py | 10 ++- |
33 |
pym/repoman/vcs/vcsstatus.py | 17 ++-- |
34 |
23 files changed, 169 insertions(+), 187 deletions(-) |
35 |
|
36 |
diff --git a/pym/repoman/_portage.py b/pym/repoman/_portage.py |
37 |
index e72ce9f..0f611f7 100644 |
38 |
--- a/pym/repoman/_portage.py |
39 |
+++ b/pym/repoman/_portage.py |
40 |
@@ -23,4 +23,3 @@ sys.path.insert(0, pym_path) |
41 |
import portage |
42 |
portage._internal_caller = True |
43 |
portage._disable_legacy_globals() |
44 |
- |
45 |
|
46 |
diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py |
47 |
index d5b5a5e..7bf6698 100644 |
48 |
--- a/pym/repoman/_xml.py |
49 |
+++ b/pym/repoman/_xml.py |
50 |
@@ -15,7 +15,6 @@ from repoman._subprocess import repoman_getstatusoutput |
51 |
|
52 |
class _XMLParser(xml.etree.ElementTree.XMLParser): |
53 |
|
54 |
- |
55 |
def __init__(self, data, **kwargs): |
56 |
xml.etree.ElementTree.XMLParser.__init__(self, **kwargs) |
57 |
self._portage_data = data |
58 |
@@ -27,13 +26,11 @@ class _XMLParser(xml.etree.ElementTree.XMLParser): |
59 |
self.parser.StartDoctypeDeclHandler = \ |
60 |
self._portage_StartDoctypeDeclHandler |
61 |
|
62 |
- |
63 |
def _portage_XmlDeclHandler(self, version, encoding, standalone): |
64 |
if self._base_XmlDeclHandler is not None: |
65 |
self._base_XmlDeclHandler(version, encoding, standalone) |
66 |
self._portage_data["XML_DECLARATION"] = (version, encoding, standalone) |
67 |
|
68 |
- |
69 |
def _portage_StartDoctypeDeclHandler( |
70 |
self, doctypeName, systemId, publicId, has_internal_subset): |
71 |
if self._base_StartDoctypeDeclHandler is not None: |
72 |
@@ -61,7 +58,6 @@ class XmlLint(object): |
73 |
self.binary = None |
74 |
self._check_capable() |
75 |
|
76 |
- |
77 |
def _check_capable(self): |
78 |
if self.options.mode == "manifest": |
79 |
return |
80 |
@@ -74,12 +70,10 @@ class XmlLint(object): |
81 |
# this can be problematic if xmllint changes their output |
82 |
self._is_capable = True |
83 |
|
84 |
- |
85 |
@property |
86 |
def capable(self): |
87 |
return self._is_capable |
88 |
|
89 |
- |
90 |
def check(self, checkdir, repolevel): |
91 |
'''Runs checks on the package metadata.xml file |
92 |
|
93 |
|
94 |
diff --git a/pym/repoman/checks/directories/files.py b/pym/repoman/checks/directories/files.py |
95 |
index 87220c0..b1d77df 100644 |
96 |
--- a/pym/repoman/checks/directories/files.py |
97 |
+++ b/pym/repoman/checks/directories/files.py |
98 |
@@ -13,8 +13,8 @@ from repoman.vcs.vcs import vcs_new_changed |
99 |
|
100 |
class FileChecks(object): |
101 |
|
102 |
- def __init__(self, qatracker, repoman_settings, repo_settings, portdb, |
103 |
- vcs_settings): |
104 |
+ def __init__( |
105 |
+ self, qatracker, repoman_settings, repo_settings, portdb, vcs_settings): |
106 |
''' |
107 |
@param qatracker: QATracker instance |
108 |
@param repoman_settings: settings instance |
109 |
@@ -27,7 +27,6 @@ class FileChecks(object): |
110 |
self.repoman_settings = repoman_settings |
111 |
self.vcs_settings = vcs_settings |
112 |
|
113 |
- |
114 |
def check(self, checkdir, checkdirlist, checkdir_relative, changed, new): |
115 |
'''Checks the ebuild sources and files for errors |
116 |
|
117 |
@@ -48,10 +47,12 @@ class FileChecks(object): |
118 |
# prohibited characters). See bug #406877. |
119 |
index = -1 |
120 |
if index != -1: |
121 |
- self.qatracker.add_error("file.name", |
122 |
+ self.qatracker.add_error( |
123 |
+ "file.name", |
124 |
"%s/%s: char '%s'" % (checkdir, y_file, y_file[index])) |
125 |
|
126 |
- if not (y_file in ("ChangeLog", "metadata.xml") |
127 |
+ if not ( |
128 |
+ y_file in ("ChangeLog", "metadata.xml") |
129 |
or y_file.endswith(".ebuild")): |
130 |
continue |
131 |
f = None |
132 |
@@ -70,10 +71,10 @@ class FileChecks(object): |
133 |
line += l2 |
134 |
if l2 != 0: |
135 |
s = s[s.rfind("\n") + 1:] |
136 |
- self.qatracker.add_error("file.UTF8", |
137 |
- "%s/%s: line %i, just after: '%s'" % (checkdir, y_file, line, s)) |
138 |
+ self.qatracker.add_error( |
139 |
+ "file.UTF8", "%s/%s: line %i, just after: '%s'" % ( |
140 |
+ checkdir, y_file, line, s)) |
141 |
finally: |
142 |
if f is not None: |
143 |
f.close() |
144 |
return |
145 |
- |
146 |
|
147 |
diff --git a/pym/repoman/checks/ebuilds/checks.py b/pym/repoman/checks/ebuilds/checks.py |
148 |
index 890cd18..27d8942 100644 |
149 |
--- a/pym/repoman/checks/ebuilds/checks.py |
150 |
+++ b/pym/repoman/checks/ebuilds/checks.py |
151 |
@@ -518,7 +518,7 @@ class InheritEclass(LineCheck): |
152 |
|
153 |
def end(self): |
154 |
if not self._disabled and self._comprehensive and self._inherit \ |
155 |
- and not self._func_call: |
156 |
+ and not self._func_call: |
157 |
self.repoman_check_name = 'inherit.unused' |
158 |
yield 'no function called from %s.eclass; please drop' % self._eclass |
159 |
|
160 |
|
161 |
diff --git a/pym/repoman/checks/ebuilds/eclasses/live.py b/pym/repoman/checks/ebuilds/eclasses/live.py |
162 |
index 20c573e..bf14cff 100644 |
163 |
--- a/pym/repoman/checks/ebuilds/eclasses/live.py |
164 |
+++ b/pym/repoman/checks/ebuilds/eclasses/live.py |
165 |
@@ -36,4 +36,4 @@ class LiveEclassChecks(object): |
166 |
|
167 |
good_keywords_exist = len(bad_stable_keywords) < len(keywords) |
168 |
if good_keywords_exist and not has_global_mask(pkg, global_pmaskdict): |
169 |
- self.qatracker.add_error("LIVEVCS.unmasked", ebuild.relative_path) |
170 |
\ No newline at end of file |
171 |
+ self.qatracker.add_error("LIVEVCS.unmasked", ebuild.relative_path) |
172 |
|
173 |
diff --git a/pym/repoman/checks/ebuilds/eclasses/ruby.py b/pym/repoman/checks/ebuilds/eclasses/ruby.py |
174 |
index abfb166..e8d36ea 100644 |
175 |
--- a/pym/repoman/checks/ebuilds/eclasses/ruby.py |
176 |
+++ b/pym/repoman/checks/ebuilds/eclasses/ruby.py |
177 |
@@ -29,4 +29,4 @@ class RubyEclassChecks(object): |
178 |
self.qatracker.add_error( |
179 |
"IUSE.rubydeprecated", |
180 |
(ebuild.relative_path + ": Deprecated ruby target: %s") |
181 |
- % myruby) |
182 |
\ No newline at end of file |
183 |
+ % myruby) |
184 |
|
185 |
diff --git a/pym/repoman/checks/ebuilds/fetches.py b/pym/repoman/checks/ebuilds/fetches.py |
186 |
index 22e89b6..53ed64f 100644 |
187 |
--- a/pym/repoman/checks/ebuilds/fetches.py |
188 |
+++ b/pym/repoman/checks/ebuilds/fetches.py |
189 |
@@ -16,8 +16,8 @@ from repoman.vcs.vcs import vcs_new_changed |
190 |
class FetchChecks(object): |
191 |
'''Performs checks on the files needed for the ebuild''' |
192 |
|
193 |
- def __init__(self, qatracker, repoman_settings, repo_settings, portdb, |
194 |
- vcs_settings): |
195 |
+ def __init__( |
196 |
+ self, qatracker, repoman_settings, repo_settings, portdb, vcs_settings): |
197 |
''' |
198 |
@param qatracker: QATracker instance |
199 |
@param repoman_settings: settings instance |
200 |
@@ -31,7 +31,6 @@ class FetchChecks(object): |
201 |
self.vcs_settings = vcs_settings |
202 |
self._digests = None |
203 |
|
204 |
- |
205 |
def check(self, xpkg, checkdir, checkdir_relative, mychanged, mynew): |
206 |
'''Checks the ebuild sources and files for errors |
207 |
|
208 |
@@ -40,7 +39,8 @@ class FetchChecks(object): |
209 |
@param checkdir_relative: repolevel determined path |
210 |
''' |
211 |
self.checkdir = checkdir |
212 |
- fetchlist_dict = portage.FetchlistDict(checkdir, self.repoman_settings, self.portdb) |
213 |
+ fetchlist_dict = portage.FetchlistDict( |
214 |
+ checkdir, self.repoman_settings, self.portdb) |
215 |
myfiles_all = [] |
216 |
self.src_uri_error = False |
217 |
for mykey in fetchlist_dict: |
218 |
@@ -54,8 +54,8 @@ class FetchChecks(object): |
219 |
# This will be reported as an "ebuild.syntax" error. |
220 |
pass |
221 |
else: |
222 |
- self.qatracker.add_error("SRC_URI.syntax", |
223 |
- "%s.ebuild SRC_URI: %s" % (mykey, e)) |
224 |
+ self.qatracker.add_error( |
225 |
+ "SRC_URI.syntax", "%s.ebuild SRC_URI: %s" % (mykey, e)) |
226 |
del fetchlist_dict |
227 |
if not self.src_uri_error: |
228 |
# This test can produce false positives if SRC_URI could not |
229 |
@@ -102,26 +102,29 @@ class FetchChecks(object): |
230 |
# File size between 20 KiB and 60 KiB causes a warning, |
231 |
# while file size over 60 KiB causes an error. |
232 |
elif mystat.st_size > 61440: |
233 |
- self.qatracker.add_error("file.size.fatal", |
234 |
- "(%d KiB) %s/files/%s" % (mystat.st_size // 1024, xpkg, y)) |
235 |
+ self.qatracker.add_error( |
236 |
+ "file.size.fatal", "(%d KiB) %s/files/%s" % ( |
237 |
+ mystat.st_size // 1024, xpkg, y)) |
238 |
elif mystat.st_size > 20480: |
239 |
- self.qatracker.add_error("file.size", |
240 |
- "(%d KiB) %s/files/%s" % (mystat.st_size // 1024, xpkg, y)) |
241 |
+ self.qatracker.add_error( |
242 |
+ "file.size", "(%d KiB) %s/files/%s" % ( |
243 |
+ mystat.st_size // 1024, xpkg, y)) |
244 |
|
245 |
index = self.repo_settings.repo_config.find_invalid_path_char(y) |
246 |
if index != -1: |
247 |
y_relative = os.path.join(checkdir_relative, "files", y) |
248 |
- if self.vcs_settings.vcs is not None and not vcs_new_changed(y_relative, mychanged, mynew): |
249 |
+ if self.vcs_settings.vcs is not None \ |
250 |
+ and not vcs_new_changed(y_relative, mychanged, mynew): |
251 |
# If the file isn't in the VCS new or changed set, then |
252 |
# assume that it's an irrelevant temporary file (Manifest |
253 |
# entries are not generated for file names containing |
254 |
# prohibited characters). See bug #406877. |
255 |
index = -1 |
256 |
if index != -1: |
257 |
- self.qatracker.add_error("file.name", |
258 |
+ self.qatracker.add_error( |
259 |
+ "file.name", |
260 |
"%s/files/%s: char '%s'" % (checkdir, y, y[index])) |
261 |
|
262 |
- |
263 |
@property |
264 |
def digests(self): |
265 |
'''Property function, returns the saved digests or |
266 |
|
267 |
diff --git a/pym/repoman/checks/ebuilds/isebuild.py b/pym/repoman/checks/ebuilds/isebuild.py |
268 |
index 065914e..f0c9a48 100644 |
269 |
--- a/pym/repoman/checks/ebuilds/isebuild.py |
270 |
+++ b/pym/repoman/checks/ebuilds/isebuild.py |
271 |
@@ -14,14 +14,12 @@ from repoman.qa_data import no_exec, allvars |
272 |
|
273 |
class IsEbuild(object): |
274 |
|
275 |
- |
276 |
def __init__(self, repoman_settings, repo_settings, portdb, qatracker): |
277 |
'''''' |
278 |
self.portdb = portdb |
279 |
self.qatracker = qatracker |
280 |
- self.root_config = RootConfig(repoman_settings, |
281 |
- repo_settings.trees[repo_settings.root], None) |
282 |
- |
283 |
+ self.root_config = RootConfig( |
284 |
+ repoman_settings, repo_settings.trees[repo_settings.root], None) |
285 |
|
286 |
def check(self, checkdirlist, checkdir, xpkg): |
287 |
self.continue_ = False |
288 |
|
289 |
diff --git a/pym/repoman/checks/ebuilds/manifests.py b/pym/repoman/checks/ebuilds/manifests.py |
290 |
index 1d65e1d..3b8dec5 100644 |
291 |
--- a/pym/repoman/checks/ebuilds/manifests.py |
292 |
+++ b/pym/repoman/checks/ebuilds/manifests.py |
293 |
@@ -12,14 +12,12 @@ from portage.util import writemsg_level |
294 |
|
295 |
class Manifests(object): |
296 |
|
297 |
- |
298 |
def __init__(self, options, qatracker=None, repoman_settings=None): |
299 |
self.options = options |
300 |
self.qatracker = qatracker |
301 |
self.repoman_settings = repoman_settings |
302 |
self.generated_manifest = False |
303 |
|
304 |
- |
305 |
def run(self, checkdir, portdb): |
306 |
self.generated_manifest = False |
307 |
self.digest_only = self.options.mode != 'manifest-check' \ |
308 |
@@ -45,7 +43,8 @@ class Manifests(object): |
309 |
level=logging.ERROR, noiselevel=-1) |
310 |
|
311 |
if not self.generated_manifest: |
312 |
- writemsg_level("Unable to generate manifest.", |
313 |
+ writemsg_level( |
314 |
+ "Unable to generate manifest.", |
315 |
level=logging.ERROR, noiselevel=-1) |
316 |
failed = True |
317 |
|
318 |
@@ -75,7 +74,6 @@ class Manifests(object): |
319 |
sys.exit(1) |
320 |
return False |
321 |
|
322 |
- |
323 |
def create_manifest(self, checkdir, fetchlist_dict): |
324 |
try: |
325 |
distdir = self.repoman_settings['DISTDIR'] |
326 |
@@ -95,7 +93,6 @@ class Manifests(object): |
327 |
finally: |
328 |
portage._doebuild_manifest_exempt_depend -= 1 |
329 |
|
330 |
- |
331 |
def digest_check(self, xpkg, checkdir): |
332 |
self.repoman_settings['O'] = checkdir |
333 |
self.repoman_settings['PORTAGE_QUIET'] = '1' |
334 |
|
335 |
diff --git a/pym/repoman/checks/ebuilds/misc.py b/pym/repoman/checks/ebuilds/misc.py |
336 |
index 744784a..d735542 100644 |
337 |
--- a/pym/repoman/checks/ebuilds/misc.py |
338 |
+++ b/pym/repoman/checks/ebuilds/misc.py |
339 |
@@ -28,13 +28,13 @@ def bad_split_check(xpkg, y_ebuild, pkgdir, qatracker): |
340 |
is_pv_toolong2 = pv_toolong_re.search(myesplit[2]) |
341 |
|
342 |
if is_pv_toolong or is_pv_toolong2: |
343 |
- qatracker.add_error("ebuild.invalidname", |
344 |
- xpkg + "/" + y_ebuild + ".ebuild") |
345 |
+ qatracker.add_error( |
346 |
+ "ebuild.invalidname", xpkg + "/" + y_ebuild + ".ebuild") |
347 |
return True |
348 |
elif myesplit[0] != pkgdir: |
349 |
print(pkgdir, myesplit[0]) |
350 |
- qatracker.add_error("ebuild.namenomatch", |
351 |
- xpkg + "/" + y_ebuild + ".ebuild") |
352 |
+ qatracker.add_error( |
353 |
+ "ebuild.namenomatch", xpkg + "/" + y_ebuild + ".ebuild") |
354 |
return True |
355 |
return False |
356 |
|
357 |
@@ -49,7 +49,6 @@ def pkg_invalid(pkg, qatracker, ebuild): |
358 |
if pkg.invalid: |
359 |
for k, msgs in pkg.invalid.items(): |
360 |
for msg in msgs: |
361 |
- qatracker.add_error(k, |
362 |
- "%s: %s" % (ebuild.relative_path, msg)) |
363 |
+ qatracker.add_error(k, "%s: %s" % (ebuild.relative_path, msg)) |
364 |
return True |
365 |
return False |
366 |
|
367 |
diff --git a/pym/repoman/checks/ebuilds/pkgmetadata.py b/pym/repoman/checks/ebuilds/pkgmetadata.py |
368 |
index 674d32f..8dc3f60 100644 |
369 |
--- a/pym/repoman/checks/ebuilds/pkgmetadata.py |
370 |
+++ b/pym/repoman/checks/ebuilds/pkgmetadata.py |
371 |
@@ -28,7 +28,8 @@ from portage import os |
372 |
from portage import _encodings, _unicode_encode |
373 |
from portage.dep import Atom |
374 |
|
375 |
-from repoman.metadata import (metadata_xml_encoding, metadata_doctype_name, |
376 |
+from repoman.metadata import ( |
377 |
+ metadata_xml_encoding, metadata_doctype_name, |
378 |
metadata_dtd_uri, metadata_xml_declaration, parse_metadata_use) |
379 |
from repoman.checks.herds.herdbase import get_herd_base |
380 |
from repoman.checks.herds.metadata import check_metadata, UnknownHerdsError |
381 |
@@ -51,8 +52,6 @@ class PkgMetadata(object): |
382 |
self.musedict = {} |
383 |
self.xmllint = XmlLint(self.options, self.repoman_settings) |
384 |
|
385 |
- |
386 |
- |
387 |
def check(self, xpkg, checkdir, checkdirlist, repolevel): |
388 |
'''Performs the checks on the metadata.xml for the package |
389 |
|
390 |
@@ -91,8 +90,8 @@ class PkgMetadata(object): |
391 |
pass |
392 |
else: |
393 |
if "XML_DECLARATION" not in xml_info: |
394 |
- self.qatracker.add_error("metadata.bad", |
395 |
- "%s/metadata.xml: " |
396 |
+ self.qatracker.add_error( |
397 |
+ "metadata.bad", "%s/metadata.xml: " |
398 |
"xml declaration is missing on first line, " |
399 |
"should be '%s'" % (xpkg, metadata_xml_declaration)) |
400 |
else: |
401 |
@@ -104,14 +103,15 @@ class PkgMetadata(object): |
402 |
encoding_problem = "but it is undefined" |
403 |
else: |
404 |
encoding_problem = "not '%s'" % xml_encoding |
405 |
- self.qatracker.add_error("metadata.bad", |
406 |
- "%s/metadata.xml: " |
407 |
+ self.qatracker.add_error( |
408 |
+ "metadata.bad", "%s/metadata.xml: " |
409 |
"xml declaration encoding should be '%s', %s" % |
410 |
(xpkg, metadata_xml_encoding, encoding_problem)) |
411 |
|
412 |
if "DOCTYPE" not in xml_info: |
413 |
metadata_bad = True |
414 |
- self.qatracker.add_error("metadata.bad", |
415 |
+ self.qatracker.add_error( |
416 |
+ "metadata.bad", |
417 |
"%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing")) |
418 |
else: |
419 |
doctype_name, doctype_system, doctype_pubid = \ |
420 |
@@ -121,14 +121,14 @@ class PkgMetadata(object): |
421 |
system_problem = "but it is undefined" |
422 |
else: |
423 |
system_problem = "not '%s'" % doctype_system |
424 |
- self.qatracker.add_error("metadata.bad", |
425 |
- "%s/metadata.xml: " |
426 |
+ self.qatracker.add_error( |
427 |
+ "metadata.bad", "%s/metadata.xml: " |
428 |
"DOCTYPE: SYSTEM should refer to '%s', %s" % |
429 |
(xpkg, metadata_dtd_uri, system_problem)) |
430 |
|
431 |
if doctype_name != metadata_doctype_name: |
432 |
- self.qatracker.add_error("metadata.bad", |
433 |
- "%s/metadata.xml: " |
434 |
+ self.qatracker.add_error( |
435 |
+ "metadata.bad", "%s/metadata.xml: " |
436 |
"DOCTYPE: name should be '%s', not '%s'" % |
437 |
(xpkg, metadata_doctype_name, doctype_name)) |
438 |
|
439 |
@@ -137,8 +137,8 @@ class PkgMetadata(object): |
440 |
self.musedict = parse_metadata_use(_metadata_xml) |
441 |
except portage.exception.ParseError as e: |
442 |
metadata_bad = True |
443 |
- self.qatracker.add_error("metadata.bad", |
444 |
- "%s/metadata.xml: %s" % (xpkg, e)) |
445 |
+ self.qatracker.add_error( |
446 |
+ "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e)) |
447 |
else: |
448 |
for atom in chain(*self.musedict.values()): |
449 |
if atom is None: |
450 |
@@ -146,22 +146,24 @@ class PkgMetadata(object): |
451 |
try: |
452 |
atom = Atom(atom) |
453 |
except InvalidAtom as e: |
454 |
- self.qatracker.add_error("metadata.bad", |
455 |
+ self.qatracker.add_error( |
456 |
+ "metadata.bad", |
457 |
"%s/metadata.xml: Invalid atom: %s" % (xpkg, e)) |
458 |
else: |
459 |
if atom.cp != xpkg: |
460 |
- self.qatracker.add_error("metadata.bad", |
461 |
+ self.qatracker.add_error( |
462 |
+ "metadata.bad", |
463 |
"%s/metadata.xml: Atom contains " |
464 |
"unexpected cat/pn: %s" % (xpkg, atom)) |
465 |
|
466 |
# Run other metadata.xml checkers |
467 |
try: |
468 |
- check_metadata(_metadata_xml, |
469 |
- get_herd_base(self.repoman_settings)) |
470 |
+ check_metadata(_metadata_xml, get_herd_base( |
471 |
+ self.repoman_settings)) |
472 |
except (UnknownHerdsError, ) as e: |
473 |
metadata_bad = True |
474 |
- self.qatracker.add_error("metadata.bad", |
475 |
- "%s/metadata.xml: %s" % (xpkg, e)) |
476 |
+ self.qatracker.add_error( |
477 |
+ "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e)) |
478 |
del e |
479 |
|
480 |
# Only carry out if in package directory or check forced |
481 |
|
482 |
diff --git a/pym/repoman/checks/ebuilds/thirdpartymirrors.py b/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
483 |
index 50a0da8..061e71f 100644 |
484 |
--- a/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
485 |
+++ b/pym/repoman/checks/ebuilds/thirdpartymirrors.py |
486 |
@@ -17,7 +17,6 @@ class ThirdPartyMirrors(object): |
487 |
|
488 |
self.qatracker = qatracker |
489 |
|
490 |
- |
491 |
def check(self, myaux, relative_path): |
492 |
# Check that URIs don't reference a server from thirdpartymirrors. |
493 |
for uri in portage.dep.use_reduce( |
494 |
@@ -32,7 +31,8 @@ class ThirdPartyMirrors(object): |
495 |
continue |
496 |
|
497 |
new_uri = "mirror://%s/%s" % (mirror_alias, uri[len(mirror):]) |
498 |
- self.qatracker.add_error("SRC_URI.mirror", |
499 |
- "%s: '%s' found in thirdpartymirrors, use '%s'" % |
500 |
- (relative_path, mirror, new_uri)) |
501 |
+ self.qatracker.add_error( |
502 |
+ "SRC_URI.mirror", |
503 |
+ "%s: '%s' found in thirdpartymirrors, use '%s'" % ( |
504 |
+ relative_path, mirror, new_uri)) |
505 |
return |
506 |
|
507 |
diff --git a/pym/repoman/checks/ebuilds/use_flags.py b/pym/repoman/checks/ebuilds/use_flags.py |
508 |
index d63ae6d..73680d0 100644 |
509 |
--- a/pym/repoman/checks/ebuilds/use_flags.py |
510 |
+++ b/pym/repoman/checks/ebuilds/use_flags.py |
511 |
@@ -24,7 +24,6 @@ class USEFlagChecks(object): |
512 |
self.defaultUseFlags = [] |
513 |
self.usedUseFlags = set() |
514 |
|
515 |
- |
516 |
def check(self, pkg, package, ebuild, y_ebuild, localUseFlags): |
517 |
'''Perform the check. |
518 |
|
519 |
@@ -42,12 +41,10 @@ class USEFlagChecks(object): |
520 |
self._checkMetadata(package, ebuild, y_ebuild, localUseFlags) |
521 |
self._checkRequiredUSE(pkg, ebuild) |
522 |
|
523 |
- |
524 |
def getUsedUseFlags(self): |
525 |
'''Get the USE flags that this check has seen''' |
526 |
return self.usedUseFlags |
527 |
|
528 |
- |
529 |
def _checkGlobal(self, pkg): |
530 |
for myflag in pkg._metadata["IUSE"].split(): |
531 |
flag_name = myflag.lstrip("+-") |
532 |
@@ -57,7 +54,6 @@ class USEFlagChecks(object): |
533 |
if flag_name not in self.globalUseFlags: |
534 |
self.useFlags.append(flag_name) |
535 |
|
536 |
- |
537 |
def _checkMetadata(self, package, ebuild, y_ebuild, localUseFlags): |
538 |
for mypos in range(len(self.useFlags) - 1, -1, -1): |
539 |
if self.useFlags[mypos] and (self.useFlags[mypos] in localUseFlags): |
540 |
@@ -75,7 +71,6 @@ class USEFlagChecks(object): |
541 |
"IUSE.invalid", |
542 |
"%s/%s.ebuild: %s" % (package, y_ebuild, self.useFlags[mypos])) |
543 |
|
544 |
- |
545 |
def _checkRequiredUSE(self, pkg, ebuild): |
546 |
required_use = pkg._metadata["REQUIRED_USE"] |
547 |
if required_use: |
548 |
|
549 |
diff --git a/pym/repoman/checks/herds/metadata.py b/pym/repoman/checks/herds/metadata.py |
550 |
index ef0c9d0..3c67fcf 100644 |
551 |
--- a/pym/repoman/checks/herds/metadata.py |
552 |
+++ b/pym/repoman/checks/herds/metadata.py |
553 |
@@ -1,7 +1,5 @@ |
554 |
|
555 |
|
556 |
- |
557 |
- |
558 |
class UnknownHerdsError(ValueError): |
559 |
def __init__(self, herd_names): |
560 |
_plural = len(herd_names) != 1 |
561 |
@@ -25,5 +23,3 @@ def check_metadata_herds(xml_tree, herd_base): |
562 |
def check_metadata(xml_tree, herd_base): |
563 |
if herd_base is not None: |
564 |
check_metadata_herds(xml_tree, herd_base) |
565 |
- |
566 |
- |
567 |
|
568 |
diff --git a/pym/repoman/ebuild.py b/pym/repoman/ebuild.py |
569 |
index fbe25a9..1dddfb9 100644 |
570 |
--- a/pym/repoman/ebuild.py |
571 |
+++ b/pym/repoman/ebuild.py |
572 |
@@ -6,7 +6,8 @@ from portage import os |
573 |
class Ebuild(object): |
574 |
'''Class to run primary checks on ebuilds''' |
575 |
|
576 |
- def __init__(self, repo_settings, repolevel, pkgdir, catdir, vcs_settings, x, y): |
577 |
+ def __init__( |
578 |
+ self, repo_settings, repolevel, pkgdir, catdir, vcs_settings, x, y): |
579 |
self.vcs_settings = vcs_settings |
580 |
self.relative_path = os.path.join(x, y + ".ebuild") |
581 |
self.full_path = os.path.join(repo_settings.repodir, self.relative_path) |
582 |
@@ -17,7 +18,6 @@ class Ebuild(object): |
583 |
self.ebuild_path = os.path.join(catdir, self.ebuild_path) |
584 |
self.ebuild_path = os.path.join(".", self.ebuild_path) |
585 |
|
586 |
- |
587 |
def untracked(self, check_ebuild_notadded, y, eadded): |
588 |
do_check = self.vcs_settings.vcs in ("cvs", "svn", "bzr") |
589 |
really_notadded = check_ebuild_notadded and y not in eadded |
590 |
@@ -26,5 +26,3 @@ class Ebuild(object): |
591 |
# ebuild not added to vcs |
592 |
return True |
593 |
return False |
594 |
- |
595 |
- |
596 |
|
597 |
diff --git a/pym/repoman/errors.py b/pym/repoman/errors.py |
598 |
index dff6547..305eece 100644 |
599 |
--- a/pym/repoman/errors.py |
600 |
+++ b/pym/repoman/errors.py |
601 |
@@ -17,5 +17,3 @@ def caterror(catdir, repodir): |
602 |
" Skipping QA checks in this directory.\n" |
603 |
"Please ensure that you add %s to %s/profiles/categories\n" |
604 |
"if it is a new category." % (catdir, catdir, repodir)) |
605 |
- |
606 |
- |
607 |
|
608 |
diff --git a/pym/repoman/main.py b/pym/repoman/main.py |
609 |
index e338d82..ecdecfa 100755 |
610 |
--- a/pym/repoman/main.py |
611 |
+++ b/pym/repoman/main.py |
612 |
@@ -132,8 +132,9 @@ vcs_settings = VCSSettings(options, repoman_settings) |
613 |
|
614 |
################## |
615 |
|
616 |
-repo_settings = RepoSettings(config_root, portdir, portdir_overlay, |
617 |
- repoman_settings, vcs_settings, options, qawarnings) |
618 |
+repo_settings = RepoSettings( |
619 |
+ config_root, portdir, portdir_overlay, |
620 |
+ repoman_settings, vcs_settings, options, qawarnings) |
621 |
|
622 |
repoman_settings = repo_settings.repoman_settings |
623 |
|
624 |
@@ -204,12 +205,14 @@ if repolevel == 1: |
625 |
startdir = repo_settings.repodir |
626 |
else: |
627 |
startdir = normalize_path(mydir) |
628 |
- startdir = os.path.join(repo_settings.repodir, *startdir.split(os.sep)[-2 - repolevel + 3:]) |
629 |
+ startdir = os.path.join( |
630 |
+ repo_settings.repodir, *startdir.split(os.sep)[-2 - repolevel + 3:]) |
631 |
################### |
632 |
|
633 |
# get lists of valid keywords, licenses, and use |
634 |
new_data = repo_metadata(repo_settings.portdb, repoman_settings) |
635 |
-kwlist, liclist, uselist, profile_list, global_pmaskdict, liclist_deprecated = new_data |
636 |
+kwlist, liclist, uselist, profile_list, \ |
637 |
+ global_pmaskdict, liclist_deprecated = new_data |
638 |
|
639 |
repoman_settings['PORTAGE_ARCHLIST'] = ' '.join(sorted(kwlist)) |
640 |
repoman_settings.backup_changes('PORTAGE_ARCHLIST') |
641 |
@@ -336,14 +339,15 @@ for xpkg in effective_scanlist: |
642 |
ebuildlist = sorted(pkgs.values()) |
643 |
ebuildlist = [pkg.pf for pkg in ebuildlist] |
644 |
####################### |
645 |
- filescheck.check(checkdir, checkdirlist, checkdir_relative, |
646 |
- changed.changed, changed.new) |
647 |
+ filescheck.check( |
648 |
+ checkdir, checkdirlist, checkdir_relative, changed.changed, changed.new) |
649 |
####################### |
650 |
status_check.check(check_ebuild_notadded, checkdir, checkdir_relative, xpkg) |
651 |
eadded.extend(status_check.eadded) |
652 |
|
653 |
################# |
654 |
- fetchcheck.check(xpkg, checkdir, checkdir_relative, changed.changed, changed.new) |
655 |
+ fetchcheck.check( |
656 |
+ xpkg, checkdir, checkdir_relative, changed.changed, changed.new) |
657 |
################# |
658 |
|
659 |
if check_changelog and "ChangeLog" not in checkdirlist: |
660 |
@@ -360,9 +364,11 @@ for xpkg in effective_scanlist: |
661 |
used_useflags = set() |
662 |
|
663 |
for y_ebuild in ebuildlist: |
664 |
-################## |
665 |
- ebuild = Ebuild(repo_settings, repolevel, pkgdir, catdir, vcs_settings, xpkg, y_ebuild) |
666 |
-################## |
667 |
+ ################## |
668 |
+ ebuild = Ebuild( |
669 |
+ repo_settings, repolevel, pkgdir, catdir, vcs_settings, |
670 |
+ xpkg, y_ebuild) |
671 |
+ ################## |
672 |
|
673 |
if check_changelog and not changelog_modified \ |
674 |
and ebuild.ebuild_path in changed.new_ebuilds: |
675 |
@@ -370,8 +376,8 @@ for xpkg in effective_scanlist: |
676 |
|
677 |
if ebuild.untracked(check_ebuild_notadded, y_ebuild, eadded): |
678 |
# ebuild not added to vcs |
679 |
- qatracker.add_error("ebuild.notadded", |
680 |
- xpkg + "/" + y_ebuild + ".ebuild") |
681 |
+ qatracker.add_error( |
682 |
+ "ebuild.notadded", xpkg + "/" + y_ebuild + ".ebuild") |
683 |
|
684 |
################## |
685 |
if bad_split_check(xpkg, y_ebuild, pkgdir, qatracker): |
686 |
@@ -388,19 +394,20 @@ for xpkg in effective_scanlist: |
687 |
live_ebuild = live_eclasses.intersection(inherited) |
688 |
|
689 |
if repo_settings.repo_config.eapi_is_banned(eapi): |
690 |
- qatracker.add_error("repo.eapi.banned", |
691 |
- "%s: %s" % (ebuild.relative_path, eapi)) |
692 |
+ qatracker.add_error( |
693 |
+ "repo.eapi.banned", "%s: %s" % (ebuild.relative_path, eapi)) |
694 |
|
695 |
elif repo_settings.repo_config.eapi_is_deprecated(eapi): |
696 |
- qatracker.add_error("repo.eapi.deprecated", |
697 |
- "%s: %s" % (ebuild.relative_path, eapi)) |
698 |
+ qatracker.add_error( |
699 |
+ "repo.eapi.deprecated", "%s: %s" % (ebuild.relative_path, eapi)) |
700 |
|
701 |
for k, v in myaux.items(): |
702 |
if not isinstance(v, basestring): |
703 |
continue |
704 |
m = non_ascii_re.search(v) |
705 |
if m is not None: |
706 |
- qatracker.add_error("variable.invalidchar", |
707 |
+ qatracker.add_error( |
708 |
+ "variable.invalidchar", |
709 |
"%s: %s variable contains non-ASCII " |
710 |
"character at position %s" % |
711 |
(ebuild.relative_path, k, m.start() + 1)) |
712 |
@@ -430,7 +437,8 @@ for xpkg in effective_scanlist: |
713 |
|
714 |
# 14 is the length of DESCRIPTION="" |
715 |
if len(myaux['DESCRIPTION']) > max_desc_len: |
716 |
- qatracker.add_error('DESCRIPTION.toolong', |
717 |
+ qatracker.add_error( |
718 |
+ 'DESCRIPTION.toolong', |
719 |
"%s: DESCRIPTION is %d characters (max %d)" % |
720 |
(ebuild.relative_path, len(myaux['DESCRIPTION']), max_desc_len)) |
721 |
|
722 |
@@ -516,7 +524,8 @@ for xpkg in effective_scanlist: |
723 |
if atoms and mytype.endswith("DEPEND"): |
724 |
if runtime and \ |
725 |
"test?" in mydepstr.split(): |
726 |
- qatracker.add_error(mytype + '.suspect', |
727 |
+ qatracker.add_error( |
728 |
+ mytype + '.suspect', |
729 |
"%s: 'test?' USE conditional in %s" % |
730 |
(ebuild.relative_path, mytype)) |
731 |
|
732 |
@@ -537,8 +546,8 @@ for xpkg in effective_scanlist: |
733 |
if catdir != "virtual": |
734 |
if not is_blocker and \ |
735 |
atom.cp in suspect_virtual: |
736 |
- qatracker.add_error('virtual.suspect', |
737 |
- ebuild.relative_path + |
738 |
+ qatracker.add_error( |
739 |
+ 'virtual.suspect', ebuild.relative_path + |
740 |
": %s: consider using '%s' instead of '%s'" % |
741 |
(mytype, suspect_virtual[atom.cp], atom)) |
742 |
if not is_blocker and \ |
743 |
@@ -553,26 +562,28 @@ for xpkg in effective_scanlist: |
744 |
not is_blocker and \ |
745 |
not inherited_java_eclass and \ |
746 |
atom.cp == "virtual/jdk": |
747 |
- qatracker.add_error('java.eclassesnotused', |
748 |
- ebuild.relative_path) |
749 |
+ qatracker.add_error( |
750 |
+ 'java.eclassesnotused', ebuild.relative_path) |
751 |
elif buildtime and \ |
752 |
not is_blocker and \ |
753 |
not inherited_wxwidgets_eclass and \ |
754 |
atom.cp == "x11-libs/wxGTK": |
755 |
- qatracker.add_error('wxwidgets.eclassnotused', |
756 |
+ qatracker.add_error( |
757 |
+ 'wxwidgets.eclassnotused', |
758 |
"%s: %ss on x11-libs/wxGTK without inheriting" |
759 |
" wxwidgets.eclass" % (ebuild.relative_path, mytype)) |
760 |
elif runtime: |
761 |
if not is_blocker and \ |
762 |
atom.cp in suspect_rdepend: |
763 |
- qatracker.add_error(mytype + '.suspect', |
764 |
+ qatracker.add_error( |
765 |
+ mytype + '.suspect', |
766 |
ebuild.relative_path + ": '%s'" % atom) |
767 |
|
768 |
if atom.operator == "~" and \ |
769 |
portage.versions.catpkgsplit(atom.cpv)[3] != "r0": |
770 |
qacat = 'dependency.badtilde' |
771 |
- qatracker.add_error(qacat, |
772 |
- "%s: %s uses the ~ operator" |
773 |
+ qatracker.add_error( |
774 |
+ qacat, "%s: %s uses the ~ operator" |
775 |
" with a non-zero revision: '%s'" % |
776 |
(ebuild.relative_path, mytype, atom)) |
777 |
|
778 |
@@ -583,8 +594,8 @@ for xpkg in effective_scanlist: |
779 |
qacat = "dependency.syntax" |
780 |
else: |
781 |
qacat = m + ".syntax" |
782 |
- qatracker.add_error(qacat, |
783 |
- "%s: %s: %s" % (ebuild.relative_path, m, b)) |
784 |
+ qatracker.add_error( |
785 |
+ qacat, "%s: %s: %s" % (ebuild.relative_path, m, b)) |
786 |
|
787 |
badlicsyntax = len([z for z in type_list if z == "LICENSE"]) |
788 |
badprovsyntax = len([z for z in type_list if z == "PROVIDE"]) |
789 |
@@ -612,10 +623,12 @@ for xpkg in effective_scanlist: |
790 |
# Need to check for "||" manually as no portage |
791 |
# function will remove it without removing values. |
792 |
if lic not in liclist and lic != "||": |
793 |
- qatracker.add_error("LICENSE.invalid", |
794 |
+ qatracker.add_error( |
795 |
+ "LICENSE.invalid", |
796 |
xpkg + "/" + y_ebuild + ".ebuild: %s" % lic) |
797 |
elif lic in liclist_deprecated: |
798 |
- qatracker.add_error("LICENSE.deprecated", |
799 |
+ qatracker.add_error( |
800 |
+ "LICENSE.deprecated", |
801 |
"%s: %s" % (ebuild.relative_path, lic)) |
802 |
|
803 |
# restrict checks |
804 |
@@ -624,7 +637,8 @@ for xpkg in effective_scanlist: |
805 |
myrestrict = portage.dep.use_reduce( |
806 |
myaux["RESTRICT"], matchall=1, flat=True) |
807 |
except portage.exception.InvalidDependString as e: |
808 |
- qatracker.add_error("RESTRICT.syntax", |
809 |
+ qatracker.add_error( |
810 |
+ "RESTRICT.syntax", |
811 |
"%s: RESTRICT: %s" % (ebuild.relative_path, e)) |
812 |
del e |
813 |
if myrestrict: |
814 |
@@ -632,7 +646,8 @@ for xpkg in effective_scanlist: |
815 |
mybadrestrict = myrestrict.difference(valid_restrict) |
816 |
if mybadrestrict: |
817 |
for mybad in mybadrestrict: |
818 |
- qatracker.add_error("RESTRICT.invalid", |
819 |
+ qatracker.add_error( |
820 |
+ "RESTRICT.invalid", |
821 |
xpkg + "/" + y_ebuild + ".ebuild: %s" % mybad) |
822 |
|
823 |
# Syntax Checks |
824 |
@@ -649,8 +664,8 @@ for xpkg in effective_scanlist: |
825 |
mode='r', encoding=_encodings['repo.content']) |
826 |
try: |
827 |
for check_name, e in run_checks(f, pkg): |
828 |
- qatracker.add_error(check_name, |
829 |
- ebuild.relative_path + ': %s' % e) |
830 |
+ qatracker.add_error( |
831 |
+ check_name, ebuild.relative_path + ': %s' % e) |
832 |
finally: |
833 |
f.close() |
834 |
except UnicodeDecodeError: |
835 |
@@ -807,14 +822,14 @@ for xpkg in effective_scanlist: |
836 |
# if we emptied out our list, continue: |
837 |
if not atoms: |
838 |
continue |
839 |
- qatracker.add_error(mykey, |
840 |
- "%s: %s: %s(%s) %s" |
841 |
- % (ebuild.relative_path, mytype, keyword, prof, |
842 |
+ qatracker.add_error( |
843 |
+ mykey, "%s: %s: %s(%s) %s" % ( |
844 |
+ ebuild.relative_path, mytype, keyword, prof, |
845 |
repr(atoms))) |
846 |
else: |
847 |
- qatracker.add_error(mykey, |
848 |
- "%s: %s: %s(%s) %s" |
849 |
- % (ebuild.relative_path, mytype, keyword, prof, |
850 |
+ qatracker.add_error( |
851 |
+ mykey, "%s: %s: %s(%s) %s" % ( |
852 |
+ ebuild.relative_path, mytype, keyword, prof, |
853 |
repr(atoms))) |
854 |
|
855 |
if not baddepsyntax and unknown_pkgs: |
856 |
@@ -822,15 +837,16 @@ for xpkg in effective_scanlist: |
857 |
for mytype, atom in unknown_pkgs: |
858 |
type_map.setdefault(mytype, set()).add(atom) |
859 |
for mytype, atoms in type_map.items(): |
860 |
- qatracker.add_error("dependency.unknown", |
861 |
- "%s: %s: %s" |
862 |
+ qatracker.add_error( |
863 |
+ "dependency.unknown", "%s: %s: %s" |
864 |
% (ebuild.relative_path, mytype, ", ".join(sorted(atoms)))) |
865 |
|
866 |
# check if there are unused local USE-descriptions in metadata.xml |
867 |
# (unless there are any invalids, to avoid noise) |
868 |
if allvalid: |
869 |
for myflag in muselist.difference(used_useflags): |
870 |
- qatracker.add_error("metadata.warning", |
871 |
+ qatracker.add_error( |
872 |
+ "metadata.warning", |
873 |
"%s/metadata.xml: unused local USE-description: '%s'" |
874 |
% (xpkg, myflag)) |
875 |
|
876 |
@@ -1118,7 +1134,10 @@ else: |
877 |
myremoved = ["./" + elem.rstrip() for elem in myremoved] |
878 |
|
879 |
if vcs_settings.vcs: |
880 |
- if not (mychanged or mynew or myremoved or (vcs_settings.vcs == "hg" and mydeleted)): |
881 |
+ a_file_is_changed = mychanged or mynew or myremoved |
882 |
+ a_file_is_deleted_hg = vcs_settings.vcs == "hg" and mydeleted |
883 |
+ |
884 |
+ if not (a_file_is_changed or a_file_is_deleted_hg): |
885 |
utilities.repoman_sez( |
886 |
"\"Doing nothing is not always good for QA.\"") |
887 |
print() |
888 |
|
889 |
diff --git a/pym/repoman/qa_data.py b/pym/repoman/qa_data.py |
890 |
index 4b62b5d..09015cc 100644 |
891 |
--- a/pym/repoman/qa_data.py |
892 |
+++ b/pym/repoman/qa_data.py |
893 |
@@ -6,8 +6,6 @@ from _emerge.Package import Package |
894 |
# import our initialized portage instance |
895 |
from repoman._portage import portage |
896 |
|
897 |
- |
898 |
- |
899 |
# 14 is the length of DESCRIPTION="" |
900 |
max_desc_len = 100 |
901 |
allowed_filename_chars = "a-zA-Z0-9._-+:" |
902 |
@@ -426,5 +424,3 @@ def format_qa_output_column( |
903 |
for failure in fails_list: |
904 |
formatter.add_literal_data(category + " " + failure) |
905 |
formatter.add_line_break() |
906 |
- |
907 |
- |
908 |
|
909 |
diff --git a/pym/repoman/qa_tracker.py b/pym/repoman/qa_tracker.py |
910 |
index 48a7241..9bfe0e2 100644 |
911 |
--- a/pym/repoman/qa_tracker.py |
912 |
+++ b/pym/repoman/qa_tracker.py |
913 |
@@ -12,7 +12,6 @@ class QATracker(object): |
914 |
self.fails = {} |
915 |
self.warns = {} |
916 |
|
917 |
- |
918 |
def add_error(self, detected_qa, info): |
919 |
'''Add the Q/A error to the database of detected problems |
920 |
|
921 |
@@ -20,15 +19,15 @@ class QATracker(object): |
922 |
@param info: string, details of the detected problem |
923 |
''' |
924 |
if detected_qa not in qacats: |
925 |
- logging.error('QATracker: Exiting on error. unknown detected_qa type passed in ' |
926 |
- 'to add_error(): %s, %s' % (detected_qa, info)) |
927 |
+ logging.error( |
928 |
+ 'QATracker: Exiting on error. Unknown detected_qa type passed ' |
929 |
+ 'in to add_error(): %s, %s' % (detected_qa, info)) |
930 |
sys.exit(1) |
931 |
try: |
932 |
self.fails[detected_qa].append(info) |
933 |
except KeyError: |
934 |
self.fails[detected_qa] = [info] |
935 |
|
936 |
- |
937 |
def add_warning(self, detected_qa, info): |
938 |
'''Add the Q/A warning to the database of detected problems |
939 |
|
940 |
@@ -36,11 +35,11 @@ class QATracker(object): |
941 |
@param info: string, details of the detected problem |
942 |
''' |
943 |
if detected_qa not in qawarnings: |
944 |
- logging.error('QATracker: Exiting on error. unknown detected_qa type passed in ' |
945 |
- 'to add_warning(): %s, %s' % (detected_qa, info)) |
946 |
+ logging.error( |
947 |
+ 'QATracker: Exiting on error. Unknown detected_qa type passed ' |
948 |
+ 'in to add_warning(): %s, %s' % (detected_qa, info)) |
949 |
sys.exit(1) |
950 |
try: |
951 |
self.warns[detected_qa].append(info) |
952 |
except KeyError: |
953 |
self.warns[detected_qa] = [info] |
954 |
- |
955 |
|
956 |
diff --git a/pym/repoman/repos.py b/pym/repoman/repos.py |
957 |
index 6bd1eb4..5044411 100644 |
958 |
--- a/pym/repoman/repos.py |
959 |
+++ b/pym/repoman/repos.py |
960 |
@@ -23,16 +23,19 @@ bad = portage.output.create_color_func("BAD") |
961 |
class RepoSettings(object): |
962 |
'''Holds out repo specific settings''' |
963 |
|
964 |
- def __init__(self, config_root, portdir, portdir_overlay, |
965 |
+ def __init__( |
966 |
+ self, config_root, portdir, portdir_overlay, |
967 |
repoman_settings=None, vcs_settings=None, options=None, |
968 |
qawarnings=None): |
969 |
self.repoman_settings = repoman_settings |
970 |
self.vcs_settings = vcs_settings |
971 |
|
972 |
+ repoman_repos = self.repoman_settings.repositories |
973 |
+ |
974 |
# Ensure that current repository is in the list of enabled repositories. |
975 |
self.repodir = os.path.realpath(portdir_overlay) |
976 |
try: |
977 |
- repoman_settings.repositories.get_repo_for_location(self.repodir) |
978 |
+ repoman_repos.get_repo_for_location(self.repodir) |
979 |
except KeyError: |
980 |
self._add_repo(config_root, portdir_overlay) |
981 |
|
982 |
@@ -44,15 +47,15 @@ class RepoSettings(object): |
983 |
|
984 |
# Constrain dependency resolution to the master(s) |
985 |
# that are specified in layout.conf. |
986 |
- self.repo_config = self.repoman_settings.repositories.get_repo_for_location(self.repodir) |
987 |
+ self.repo_config = repoman_repos.get_repo_for_location(self.repodir) |
988 |
self.portdb.porttrees = list(self.repo_config.eclass_db.porttrees) |
989 |
self.portdir = self.portdb.porttrees[0] |
990 |
self.commit_env = os.environ.copy() |
991 |
# list() is for iteration on a copy. |
992 |
- for repo in list(self.repoman_settings.repositories): |
993 |
+ for repo in list(repoman_repos): |
994 |
# all paths are canonical |
995 |
if repo.location not in self.repo_config.eclass_db.porttrees: |
996 |
- del self.repoman_settings.repositories[repo.name] |
997 |
+ del repoman_repos[repo.name] |
998 |
|
999 |
if self.repo_config.allow_provide_virtual: |
1000 |
qawarnings.add("virtual.oldstyle") |
1001 |
@@ -121,10 +124,10 @@ class RepoSettings(object): |
1002 |
logging.error(line) |
1003 |
sys.exit(1) |
1004 |
|
1005 |
- |
1006 |
def _add_repo(self, config_root, portdir_overlay): |
1007 |
self.repo_conf = portage.repository.config |
1008 |
- self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name(portdir_overlay)[0] |
1009 |
+ self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name( |
1010 |
+ portdir_overlay)[0] |
1011 |
self.layout_conf_data = self.repo_conf.parse_layout_conf(portdir_overlay)[0] |
1012 |
if self.layout_conf_data['repo-name']: |
1013 |
self.repo_name = self.layout_conf_data['repo-name'] |
1014 |
@@ -143,18 +146,19 @@ class RepoSettings(object): |
1015 |
# We have to call the config constructor again so that attributes |
1016 |
# dependent on config.repositories are initialized correctly. |
1017 |
self.repoman_settings = portage.config( |
1018 |
- config_root=config_root, local_config=False, repositories=self.repositories) |
1019 |
+ config_root=config_root, local_config=False, |
1020 |
+ repositories=self.repositories) |
1021 |
|
1022 |
- ########### future vcs plugin functions |
1023 |
+ ########## |
1024 |
+ # future vcs plugin functions |
1025 |
+ ########## |
1026 |
|
1027 |
def _vcs_gpg_bzr(self): |
1028 |
pass |
1029 |
|
1030 |
- |
1031 |
def _vcs_gpg_cvs(self): |
1032 |
pass |
1033 |
|
1034 |
- |
1035 |
def _vcs_gpg_git(self): |
1036 |
# NOTE: It's possible to use --gpg-sign=key_id to specify the key in |
1037 |
# the commit arguments. If key_id is unspecified, then it must be |
1038 |
@@ -170,17 +174,13 @@ class RepoSettings(object): |
1039 |
except OSError: |
1040 |
pass |
1041 |
|
1042 |
- |
1043 |
def _vcs_gpg_hg(self): |
1044 |
pass |
1045 |
|
1046 |
- |
1047 |
def _vcs_gpg_svn(self): |
1048 |
pass |
1049 |
|
1050 |
|
1051 |
- |
1052 |
- |
1053 |
def list_checks(kwlist, liclist, uselist, repoman_settings): |
1054 |
liclist_deprecated = set() |
1055 |
if "DEPRECATED" in repoman_settings._license_manager._license_groups: |
1056 |
@@ -288,7 +288,8 @@ def repo_metadata(portdb, repoman_settings): |
1057 |
global_pmaskdict.setdefault(x.cp, []).append(x) |
1058 |
del global_pmasklines |
1059 |
|
1060 |
- return (kwlist, liclist, uselist, profile_list, global_pmaskdict, |
1061 |
+ return ( |
1062 |
+ kwlist, liclist, uselist, profile_list, global_pmaskdict, |
1063 |
list_checks(kwlist, liclist, uselist, repoman_settings)) |
1064 |
|
1065 |
|
1066 |
@@ -300,5 +301,3 @@ def has_global_mask(pkg, global_pmaskdict): |
1067 |
if portage.dep.match_from_list(x, pkg_list): |
1068 |
return x |
1069 |
return None |
1070 |
- |
1071 |
- |
1072 |
|
1073 |
diff --git a/pym/repoman/scan.py b/pym/repoman/scan.py |
1074 |
index e7ce8ff..fef6d82 100644 |
1075 |
--- a/pym/repoman/scan.py |
1076 |
+++ b/pym/repoman/scan.py |
1077 |
@@ -23,7 +23,7 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings): |
1078 |
continue |
1079 |
if os.path.isdir(startdir + "/" + x): |
1080 |
scanlist.append(catdir + "/" + x) |
1081 |
- #repo_subdir = catdir + os.sep |
1082 |
+ # repo_subdir = catdir + os.sep |
1083 |
elif repolevel == 1: |
1084 |
for x in categories: |
1085 |
if not os.path.isdir(startdir + "/" + x): |
1086 |
@@ -33,20 +33,20 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings): |
1087 |
continue |
1088 |
if os.path.isdir(startdir + "/" + x + "/" + y): |
1089 |
scanlist.append(x + "/" + y) |
1090 |
- #repo_subdir = "" |
1091 |
+ # repo_subdir = "" |
1092 |
elif repolevel == 3: |
1093 |
catdir = reposplit[-2] |
1094 |
if catdir not in categories: |
1095 |
- caterror(catdir,repo_settings.repodir) |
1096 |
+ caterror(catdir, repo_settings.repodir) |
1097 |
scanlist.append(catdir + "/" + reposplit[-1]) |
1098 |
- #repo_subdir = scanlist[-1] + os.sep |
1099 |
+ # repo_subdir = scanlist[-1] + os.sep |
1100 |
else: |
1101 |
msg = 'Repoman is unable to determine PORTDIR or PORTDIR_OVERLAY' + \ |
1102 |
' from the current working directory' |
1103 |
logging.critical(msg) |
1104 |
sys.exit(1) |
1105 |
|
1106 |
- #repo_subdir_len = len(repo_subdir) |
1107 |
+ # repo_subdir_len = len(repo_subdir) |
1108 |
scanlist.sort() |
1109 |
|
1110 |
logging.debug( |
1111 |
@@ -67,12 +67,10 @@ class Changes(object): |
1112 |
This will ease future addition of new VCS types. |
1113 |
''' |
1114 |
|
1115 |
- |
1116 |
def __init__(self, options): |
1117 |
self.options = options |
1118 |
self._reset() |
1119 |
|
1120 |
- |
1121 |
def _reset(self): |
1122 |
self.new_ebuilds = set() |
1123 |
self.ebuilds = set() |
1124 |
@@ -81,7 +79,6 @@ class Changes(object): |
1125 |
self.new = [] |
1126 |
self.removed = [] |
1127 |
|
1128 |
- |
1129 |
def scan(self, vcs_settings): |
1130 |
self._reset() |
1131 |
|
1132 |
@@ -96,7 +93,6 @@ class Changes(object): |
1133 |
x for x in chain(self.changed, self.new) |
1134 |
if os.path.basename(x) == "ChangeLog") |
1135 |
|
1136 |
- |
1137 |
def scan_cvs(self): |
1138 |
tree = cvstree.getentries("./", recursive=1) |
1139 |
self.changed = cvstree.findchanged(tree, recursive=1, basedir="./") |
1140 |
@@ -105,7 +101,6 @@ class Changes(object): |
1141 |
self.removed = cvstree.findremoved(tree, recursive=1, basedir="./") |
1142 |
del tree |
1143 |
|
1144 |
- |
1145 |
def scan_svn(self): |
1146 |
with repoman_popen("svn status") as f: |
1147 |
svnstatus = f.readlines() |
1148 |
@@ -123,7 +118,6 @@ class Changes(object): |
1149 |
for elem in svnstatus |
1150 |
if elem.startswith("D")] |
1151 |
|
1152 |
- |
1153 |
def scan_git(self): |
1154 |
with repoman_popen( |
1155 |
"git diff-index --name-only " |
1156 |
@@ -145,7 +139,6 @@ class Changes(object): |
1157 |
self.removed = ["./" + elem[:-1] for elem in removed] |
1158 |
del removed |
1159 |
|
1160 |
- |
1161 |
def scan_bzr(self): |
1162 |
with repoman_popen("bzr status -S .") as f: |
1163 |
bzrstatus = f.readlines() |
1164 |
@@ -163,7 +156,6 @@ class Changes(object): |
1165 |
for elem in bzrstatus |
1166 |
if elem and (elem[1:2] == "K" or elem[0:1] == "R")] |
1167 |
|
1168 |
- |
1169 |
def scan_hg(self): |
1170 |
with repoman_popen("hg status --no-status --modified .") as f: |
1171 |
changed = f.readlines() |
1172 |
|
1173 |
diff --git a/pym/repoman/vcs/vcs.py b/pym/repoman/vcs/vcs.py |
1174 |
index 6a9d455..180692c 100644 |
1175 |
--- a/pym/repoman/vcs/vcs.py |
1176 |
+++ b/pym/repoman/vcs/vcs.py |
1177 |
@@ -256,8 +256,10 @@ class VCSSettings(object): |
1178 |
# Disable copyright/mtime check if vcs does not preserve mtime (bug #324075). |
1179 |
self.vcs_preserves_mtime = self.vcs in ('cvs',) |
1180 |
|
1181 |
- self.vcs_local_opts = repoman_settings.get("REPOMAN_VCS_LOCAL_OPTS", "").split() |
1182 |
- self.vcs_global_opts = repoman_settings.get("REPOMAN_VCS_GLOBAL_OPTS") |
1183 |
+ self.vcs_local_opts = repoman_settings.get( |
1184 |
+ "REPOMAN_VCS_LOCAL_OPTS", "").split() |
1185 |
+ self.vcs_global_opts = repoman_settings.get( |
1186 |
+ "REPOMAN_VCS_GLOBAL_OPTS") |
1187 |
if self.vcs_global_opts is None: |
1188 |
if self.vcs in ('cvs', 'svn'): |
1189 |
self.vcs_global_opts = "-q" |
1190 |
@@ -266,5 +268,7 @@ class VCSSettings(object): |
1191 |
self.vcs_global_opts = self.vcs_global_opts.split() |
1192 |
|
1193 |
if options.mode == 'commit' and not options.pretend and not self.vcs: |
1194 |
- logging.info("Not in a version controlled repository; enabling pretend mode.") |
1195 |
+ logging.info( |
1196 |
+ "Not in a version controlled repository; " |
1197 |
+ "enabling pretend mode.") |
1198 |
options.pretend = True |
1199 |
|
1200 |
diff --git a/pym/repoman/vcs/vcsstatus.py b/pym/repoman/vcs/vcsstatus.py |
1201 |
index 0517c04..30e00ad 100644 |
1202 |
--- a/pym/repoman/vcs/vcsstatus.py |
1203 |
+++ b/pym/repoman/vcs/vcsstatus.py |
1204 |
@@ -8,7 +8,6 @@ from portage import os |
1205 |
from repoman._subprocess import repoman_popen |
1206 |
|
1207 |
|
1208 |
- |
1209 |
class VCSStatus(object): |
1210 |
'''Determines the status of the vcs repositories |
1211 |
to determine if files are not added''' |
1212 |
@@ -19,43 +18,39 @@ class VCSStatus(object): |
1213 |
self.eadded = [] |
1214 |
self.qatracker = qatracker |
1215 |
|
1216 |
- |
1217 |
def check(self, check_not_added, checkdir, checkdir_relative, xpkg): |
1218 |
if self.vcs and check_not_added: |
1219 |
vcscheck = getattr(self, 'check_%s' % self.vcs) |
1220 |
vcscheck(checkdir, checkdir_relative, xpkg) |
1221 |
|
1222 |
- |
1223 |
def post_git_hg(self, myf, xpkg): |
1224 |
for l in myf: |
1225 |
if l[:-1][-7:] == ".ebuild": |
1226 |
- self.qatracker.add_error("ebuild.notadded", |
1227 |
+ self.qatracker.add_error( |
1228 |
+ "ebuild.notadded", |
1229 |
os.path.join(xpkg, os.path.basename(l[:-1]))) |
1230 |
myf.close() |
1231 |
|
1232 |
- |
1233 |
def check_git(self, checkdir, checkdir_relative, xpkg): |
1234 |
myf = repoman_popen( |
1235 |
"git ls-files --others %s" % |
1236 |
(portage._shell_quote(checkdir_relative),)) |
1237 |
self.post_git_hg(myf, xpkg) |
1238 |
|
1239 |
- |
1240 |
def check_hg(self, checkdir, checkdir_relative, xpkg): |
1241 |
myf = repoman_popen( |
1242 |
"hg status --no-status --unknown %s" % |
1243 |
(portage._shell_quote(checkdir_relative),)) |
1244 |
self.post_git_hg(myf, xpkg) |
1245 |
|
1246 |
- |
1247 |
def check_cvs(self, checkdir, checkdir_relative, xpkg): |
1248 |
try: |
1249 |
myf = open(checkdir + "/CVS/Entries", "r") |
1250 |
myl = myf.readlines() |
1251 |
myf.close() |
1252 |
except IOError: |
1253 |
- self.qatracker.add_error("CVS/Entries.IO_error", |
1254 |
- checkdir + "/CVS/Entries") |
1255 |
+ self.qatracker.add_error( |
1256 |
+ "CVS/Entries.IO_error", checkdir + "/CVS/Entries") |
1257 |
return True |
1258 |
for l in myl: |
1259 |
if l[0] != "/": |
1260 |
@@ -67,7 +62,6 @@ class VCSStatus(object): |
1261 |
self.eadded.append(splitl[0][:-7]) |
1262 |
return True |
1263 |
|
1264 |
- |
1265 |
def check_svn(self, checkdir, checkdir_relative, xpkg): |
1266 |
try: |
1267 |
myf = repoman_popen( |
1268 |
@@ -101,7 +95,6 @@ class VCSStatus(object): |
1269 |
self.eadded.append(os.path.basename(l[:-7])) |
1270 |
return True |
1271 |
|
1272 |
- |
1273 |
def check_bzr(self, checkdir, checkdir_relative, xpkg): |
1274 |
try: |
1275 |
myf = repoman_popen( |
1276 |
@@ -117,4 +110,4 @@ class VCSStatus(object): |
1277 |
l = l.split()[-1] |
1278 |
if l[-7:] == ".ebuild": |
1279 |
self.eadded.append(os.path.basename(l[:-7])) |
1280 |
- return True |
1281 |
+ return True |