Gentoo Archives: gentoo-commits

From: Tom Wijsman <tomwij@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/checks/herds/, pym/repoman/checks/directories/, ...
Date: Fri, 06 Jun 2014 12:25:27
Message-Id: 1402057458.ca0203536a13c085ee59d752649cc202688a625e.tomwij@gentoo
1 commit: ca0203536a13c085ee59d752649cc202688a625e
2 Author: Tom Wijsman <tomwij <AT> gentoo <DOT> org>
3 AuthorDate: Fri Jun 6 12:24:18 2014 +0000
4 Commit: Tom Wijsman <tomwij <AT> gentoo <DOT> org>
5 CommitDate: Fri Jun 6 12:24:18 2014 +0000
6 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=ca020353
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 | 116 ++++++++++++++----------
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, 173 insertions(+), 190 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 f6d9f79..7b5d0a5 100644
149 --- a/pym/repoman/checks/ebuilds/checks.py
150 +++ b/pym/repoman/checks/ebuilds/checks.py
151 @@ -534,7 +534,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 649fc84..c5d5276 100755
610 --- a/pym/repoman/main.py
611 +++ b/pym/repoman/main.py
612 @@ -125,8 +125,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 @@ -197,12 +198,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 @@ -329,14 +332,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 @@ -353,9 +357,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 @@ -363,8 +369,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 @@ -381,19 +387,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 @@ -422,13 +429,15 @@ for xpkg in effective_scanlist:
713 qatracker.add_error(myqakey, ebuild.relative_path)
714
715 if myaux['DESCRIPTION'][-1:] in ['.']:
716 - qatracker.add_error('DESCRIPTION.punctuation',
717 - "%s: DESCRIPTION ends with a '%s' character"
718 - % (ebuild.relative_path, myaux['DESCRIPTION'][-1:]))
719 + qatracker.add_error(
720 + 'DESCRIPTION.punctuation',
721 + "%s: DESCRIPTION ends with a '%s' character" %
722 + (ebuild.relative_path, myaux['DESCRIPTION'][-1:]))
723
724 # 14 is the length of DESCRIPTION=""
725 if len(myaux['DESCRIPTION']) > max_desc_len:
726 - qatracker.add_error('DESCRIPTION.toolong',
727 + qatracker.add_error(
728 + 'DESCRIPTION.toolong',
729 "%s: DESCRIPTION is %d characters (max %d)" %
730 (ebuild.relative_path, len(myaux['DESCRIPTION']), max_desc_len))
731
732 @@ -514,7 +523,8 @@ for xpkg in effective_scanlist:
733 if atoms and mytype.endswith("DEPEND"):
734 if runtime and \
735 "test?" in mydepstr.split():
736 - qatracker.add_error(mytype + '.suspect',
737 + qatracker.add_error(
738 + mytype + '.suspect',
739 "%s: 'test?' USE conditional in %s" %
740 (ebuild.relative_path, mytype))
741
742 @@ -535,8 +545,8 @@ for xpkg in effective_scanlist:
743 if catdir != "virtual":
744 if not is_blocker and \
745 atom.cp in suspect_virtual:
746 - qatracker.add_error('virtual.suspect',
747 - ebuild.relative_path +
748 + qatracker.add_error(
749 + 'virtual.suspect', ebuild.relative_path +
750 ": %s: consider using '%s' instead of '%s'" %
751 (mytype, suspect_virtual[atom.cp], atom))
752
753 @@ -544,26 +554,28 @@ for xpkg in effective_scanlist:
754 not is_blocker and \
755 not inherited_java_eclass and \
756 atom.cp == "virtual/jdk":
757 - qatracker.add_error('java.eclassesnotused',
758 - ebuild.relative_path)
759 + qatracker.add_error(
760 + 'java.eclassesnotused', ebuild.relative_path)
761 elif buildtime and \
762 not is_blocker and \
763 not inherited_wxwidgets_eclass and \
764 atom.cp == "x11-libs/wxGTK":
765 - qatracker.add_error('wxwidgets.eclassnotused',
766 + qatracker.add_error(
767 + 'wxwidgets.eclassnotused',
768 "%s: %ss on x11-libs/wxGTK without inheriting"
769 " wxwidgets.eclass" % (ebuild.relative_path, mytype))
770 elif runtime:
771 if not is_blocker and \
772 atom.cp in suspect_rdepend:
773 - qatracker.add_error(mytype + '.suspect',
774 + qatracker.add_error(
775 + mytype + '.suspect',
776 ebuild.relative_path + ": '%s'" % atom)
777
778 if atom.operator == "~" and \
779 portage.versions.catpkgsplit(atom.cpv)[3] != "r0":
780 qacat = 'dependency.badtilde'
781 - qatracker.add_error(qacat,
782 - "%s: %s uses the ~ operator"
783 + qatracker.add_error(
784 + qacat, "%s: %s uses the ~ operator"
785 " with a non-zero revision: '%s'" %
786 (ebuild.relative_path, mytype, atom))
787
788 @@ -574,8 +586,8 @@ for xpkg in effective_scanlist:
789 qacat = "dependency.syntax"
790 else:
791 qacat = m + ".syntax"
792 - qatracker.add_error(qacat,
793 - "%s: %s: %s" % (ebuild.relative_path, m, b))
794 + qatracker.add_error(
795 + qacat, "%s: %s: %s" % (ebuild.relative_path, m, b))
796
797 badlicsyntax = len([z for z in type_list if z == "LICENSE"])
798 badprovsyntax = len([z for z in type_list if z == "PROVIDE"])
799 @@ -603,10 +615,12 @@ for xpkg in effective_scanlist:
800 # Need to check for "||" manually as no portage
801 # function will remove it without removing values.
802 if lic not in liclist and lic != "||":
803 - qatracker.add_error("LICENSE.invalid",
804 + qatracker.add_error(
805 + "LICENSE.invalid",
806 xpkg + "/" + y_ebuild + ".ebuild: %s" % lic)
807 elif lic in liclist_deprecated:
808 - qatracker.add_error("LICENSE.deprecated",
809 + qatracker.add_error(
810 + "LICENSE.deprecated",
811 "%s: %s" % (ebuild.relative_path, lic))
812
813 # restrict checks
814 @@ -615,7 +629,8 @@ for xpkg in effective_scanlist:
815 myrestrict = portage.dep.use_reduce(
816 myaux["RESTRICT"], matchall=1, flat=True)
817 except portage.exception.InvalidDependString as e:
818 - qatracker.add_error("RESTRICT.syntax",
819 + qatracker.add_error(
820 + "RESTRICT.syntax",
821 "%s: RESTRICT: %s" % (ebuild.relative_path, e))
822 del e
823 if myrestrict:
824 @@ -623,7 +638,8 @@ for xpkg in effective_scanlist:
825 mybadrestrict = myrestrict.difference(valid_restrict)
826 if mybadrestrict:
827 for mybad in mybadrestrict:
828 - qatracker.add_error("RESTRICT.invalid",
829 + qatracker.add_error(
830 + "RESTRICT.invalid",
831 xpkg + "/" + y_ebuild + ".ebuild: %s" % mybad)
832
833 # Syntax Checks
834 @@ -640,8 +656,8 @@ for xpkg in effective_scanlist:
835 mode='r', encoding=_encodings['repo.content'])
836 try:
837 for check_name, e in run_checks(f, pkg):
838 - qatracker.add_error(check_name,
839 - ebuild.relative_path + ': %s' % e)
840 + qatracker.add_error(
841 + check_name, ebuild.relative_path + ': %s' % e)
842 finally:
843 f.close()
844 except UnicodeDecodeError:
845 @@ -798,14 +814,14 @@ for xpkg in effective_scanlist:
846 # if we emptied out our list, continue:
847 if not atoms:
848 continue
849 - qatracker.add_error(mykey,
850 - "%s: %s: %s(%s) %s"
851 - % (ebuild.relative_path, mytype, keyword, prof,
852 + qatracker.add_error(
853 + mykey, "%s: %s: %s(%s) %s" % (
854 + ebuild.relative_path, mytype, keyword, prof,
855 repr(atoms)))
856 else:
857 - qatracker.add_error(mykey,
858 - "%s: %s: %s(%s) %s"
859 - % (ebuild.relative_path, mytype, keyword, prof,
860 + qatracker.add_error(
861 + mykey, "%s: %s: %s(%s) %s" % (
862 + ebuild.relative_path, mytype, keyword, prof,
863 repr(atoms)))
864
865 if not baddepsyntax and unknown_pkgs:
866 @@ -813,15 +829,16 @@ for xpkg in effective_scanlist:
867 for mytype, atom in unknown_pkgs:
868 type_map.setdefault(mytype, set()).add(atom)
869 for mytype, atoms in type_map.items():
870 - qatracker.add_error("dependency.unknown",
871 - "%s: %s: %s"
872 + qatracker.add_error(
873 + "dependency.unknown", "%s: %s: %s"
874 % (ebuild.relative_path, mytype, ", ".join(sorted(atoms))))
875
876 # check if there are unused local USE-descriptions in metadata.xml
877 # (unless there are any invalids, to avoid noise)
878 if allvalid:
879 for myflag in muselist.difference(used_useflags):
880 - qatracker.add_error("metadata.warning",
881 + qatracker.add_error(
882 + "metadata.warning",
883 "%s/metadata.xml: unused local USE-description: '%s'"
884 % (xpkg, myflag))
885
886 @@ -1109,7 +1126,10 @@ else:
887 myremoved = ["./" + elem.rstrip() for elem in myremoved]
888
889 if vcs_settings.vcs:
890 - if not (mychanged or mynew or myremoved or (vcs_settings.vcs == "hg" and mydeleted)):
891 + a_file_is_changed = mychanged or mynew or myremoved
892 + a_file_is_deleted_hg = vcs_settings.vcs == "hg" and mydeleted
893 +
894 + if not (a_file_is_changed or a_file_is_deleted_hg):
895 utilities.repoman_sez(
896 "\"Doing nothing is not always good for QA.\"")
897 print()
898
899 diff --git a/pym/repoman/qa_data.py b/pym/repoman/qa_data.py
900 index 607b66e..9ea8a85 100644
901 --- a/pym/repoman/qa_data.py
902 +++ b/pym/repoman/qa_data.py
903 @@ -6,8 +6,6 @@ from _emerge.Package import Package
904 # import our initialized portage instance
905 from repoman._portage import portage
906
907 -
908 -
909 # 14 is the length of DESCRIPTION=""
910 max_desc_len = 100
911 allowed_filename_chars = "a-zA-Z0-9._-+:"
912 @@ -425,5 +423,3 @@ def format_qa_output_column(
913 for failure in fails_list:
914 formatter.add_literal_data(category + " " + failure)
915 formatter.add_line_break()
916 -
917 -
918
919 diff --git a/pym/repoman/qa_tracker.py b/pym/repoman/qa_tracker.py
920 index 48a7241..9bfe0e2 100644
921 --- a/pym/repoman/qa_tracker.py
922 +++ b/pym/repoman/qa_tracker.py
923 @@ -12,7 +12,6 @@ class QATracker(object):
924 self.fails = {}
925 self.warns = {}
926
927 -
928 def add_error(self, detected_qa, info):
929 '''Add the Q/A error to the database of detected problems
930
931 @@ -20,15 +19,15 @@ class QATracker(object):
932 @param info: string, details of the detected problem
933 '''
934 if detected_qa not in qacats:
935 - logging.error('QATracker: Exiting on error. unknown detected_qa type passed in '
936 - 'to add_error(): %s, %s' % (detected_qa, info))
937 + logging.error(
938 + 'QATracker: Exiting on error. Unknown detected_qa type passed '
939 + 'in to add_error(): %s, %s' % (detected_qa, info))
940 sys.exit(1)
941 try:
942 self.fails[detected_qa].append(info)
943 except KeyError:
944 self.fails[detected_qa] = [info]
945
946 -
947 def add_warning(self, detected_qa, info):
948 '''Add the Q/A warning to the database of detected problems
949
950 @@ -36,11 +35,11 @@ class QATracker(object):
951 @param info: string, details of the detected problem
952 '''
953 if detected_qa not in qawarnings:
954 - logging.error('QATracker: Exiting on error. unknown detected_qa type passed in '
955 - 'to add_warning(): %s, %s' % (detected_qa, info))
956 + logging.error(
957 + 'QATracker: Exiting on error. Unknown detected_qa type passed '
958 + 'in to add_warning(): %s, %s' % (detected_qa, info))
959 sys.exit(1)
960 try:
961 self.warns[detected_qa].append(info)
962 except KeyError:
963 self.warns[detected_qa] = [info]
964 -
965
966 diff --git a/pym/repoman/repos.py b/pym/repoman/repos.py
967 index 6bd1eb4..5044411 100644
968 --- a/pym/repoman/repos.py
969 +++ b/pym/repoman/repos.py
970 @@ -23,16 +23,19 @@ bad = portage.output.create_color_func("BAD")
971 class RepoSettings(object):
972 '''Holds out repo specific settings'''
973
974 - def __init__(self, config_root, portdir, portdir_overlay,
975 + def __init__(
976 + self, config_root, portdir, portdir_overlay,
977 repoman_settings=None, vcs_settings=None, options=None,
978 qawarnings=None):
979 self.repoman_settings = repoman_settings
980 self.vcs_settings = vcs_settings
981
982 + repoman_repos = self.repoman_settings.repositories
983 +
984 # Ensure that current repository is in the list of enabled repositories.
985 self.repodir = os.path.realpath(portdir_overlay)
986 try:
987 - repoman_settings.repositories.get_repo_for_location(self.repodir)
988 + repoman_repos.get_repo_for_location(self.repodir)
989 except KeyError:
990 self._add_repo(config_root, portdir_overlay)
991
992 @@ -44,15 +47,15 @@ class RepoSettings(object):
993
994 # Constrain dependency resolution to the master(s)
995 # that are specified in layout.conf.
996 - self.repo_config = self.repoman_settings.repositories.get_repo_for_location(self.repodir)
997 + self.repo_config = repoman_repos.get_repo_for_location(self.repodir)
998 self.portdb.porttrees = list(self.repo_config.eclass_db.porttrees)
999 self.portdir = self.portdb.porttrees[0]
1000 self.commit_env = os.environ.copy()
1001 # list() is for iteration on a copy.
1002 - for repo in list(self.repoman_settings.repositories):
1003 + for repo in list(repoman_repos):
1004 # all paths are canonical
1005 if repo.location not in self.repo_config.eclass_db.porttrees:
1006 - del self.repoman_settings.repositories[repo.name]
1007 + del repoman_repos[repo.name]
1008
1009 if self.repo_config.allow_provide_virtual:
1010 qawarnings.add("virtual.oldstyle")
1011 @@ -121,10 +124,10 @@ class RepoSettings(object):
1012 logging.error(line)
1013 sys.exit(1)
1014
1015 -
1016 def _add_repo(self, config_root, portdir_overlay):
1017 self.repo_conf = portage.repository.config
1018 - self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name(portdir_overlay)[0]
1019 + self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name(
1020 + portdir_overlay)[0]
1021 self.layout_conf_data = self.repo_conf.parse_layout_conf(portdir_overlay)[0]
1022 if self.layout_conf_data['repo-name']:
1023 self.repo_name = self.layout_conf_data['repo-name']
1024 @@ -143,18 +146,19 @@ class RepoSettings(object):
1025 # We have to call the config constructor again so that attributes
1026 # dependent on config.repositories are initialized correctly.
1027 self.repoman_settings = portage.config(
1028 - config_root=config_root, local_config=False, repositories=self.repositories)
1029 + config_root=config_root, local_config=False,
1030 + repositories=self.repositories)
1031
1032 - ########### future vcs plugin functions
1033 + ##########
1034 + # future vcs plugin functions
1035 + ##########
1036
1037 def _vcs_gpg_bzr(self):
1038 pass
1039
1040 -
1041 def _vcs_gpg_cvs(self):
1042 pass
1043
1044 -
1045 def _vcs_gpg_git(self):
1046 # NOTE: It's possible to use --gpg-sign=key_id to specify the key in
1047 # the commit arguments. If key_id is unspecified, then it must be
1048 @@ -170,17 +174,13 @@ class RepoSettings(object):
1049 except OSError:
1050 pass
1051
1052 -
1053 def _vcs_gpg_hg(self):
1054 pass
1055
1056 -
1057 def _vcs_gpg_svn(self):
1058 pass
1059
1060
1061 -
1062 -
1063 def list_checks(kwlist, liclist, uselist, repoman_settings):
1064 liclist_deprecated = set()
1065 if "DEPRECATED" in repoman_settings._license_manager._license_groups:
1066 @@ -288,7 +288,8 @@ def repo_metadata(portdb, repoman_settings):
1067 global_pmaskdict.setdefault(x.cp, []).append(x)
1068 del global_pmasklines
1069
1070 - return (kwlist, liclist, uselist, profile_list, global_pmaskdict,
1071 + return (
1072 + kwlist, liclist, uselist, profile_list, global_pmaskdict,
1073 list_checks(kwlist, liclist, uselist, repoman_settings))
1074
1075
1076 @@ -300,5 +301,3 @@ def has_global_mask(pkg, global_pmaskdict):
1077 if portage.dep.match_from_list(x, pkg_list):
1078 return x
1079 return None
1080 -
1081 -
1082
1083 diff --git a/pym/repoman/scan.py b/pym/repoman/scan.py
1084 index e7ce8ff..fef6d82 100644
1085 --- a/pym/repoman/scan.py
1086 +++ b/pym/repoman/scan.py
1087 @@ -23,7 +23,7 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings):
1088 continue
1089 if os.path.isdir(startdir + "/" + x):
1090 scanlist.append(catdir + "/" + x)
1091 - #repo_subdir = catdir + os.sep
1092 + # repo_subdir = catdir + os.sep
1093 elif repolevel == 1:
1094 for x in categories:
1095 if not os.path.isdir(startdir + "/" + x):
1096 @@ -33,20 +33,20 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings):
1097 continue
1098 if os.path.isdir(startdir + "/" + x + "/" + y):
1099 scanlist.append(x + "/" + y)
1100 - #repo_subdir = ""
1101 + # repo_subdir = ""
1102 elif repolevel == 3:
1103 catdir = reposplit[-2]
1104 if catdir not in categories:
1105 - caterror(catdir,repo_settings.repodir)
1106 + caterror(catdir, repo_settings.repodir)
1107 scanlist.append(catdir + "/" + reposplit[-1])
1108 - #repo_subdir = scanlist[-1] + os.sep
1109 + # repo_subdir = scanlist[-1] + os.sep
1110 else:
1111 msg = 'Repoman is unable to determine PORTDIR or PORTDIR_OVERLAY' + \
1112 ' from the current working directory'
1113 logging.critical(msg)
1114 sys.exit(1)
1115
1116 - #repo_subdir_len = len(repo_subdir)
1117 + # repo_subdir_len = len(repo_subdir)
1118 scanlist.sort()
1119
1120 logging.debug(
1121 @@ -67,12 +67,10 @@ class Changes(object):
1122 This will ease future addition of new VCS types.
1123 '''
1124
1125 -
1126 def __init__(self, options):
1127 self.options = options
1128 self._reset()
1129
1130 -
1131 def _reset(self):
1132 self.new_ebuilds = set()
1133 self.ebuilds = set()
1134 @@ -81,7 +79,6 @@ class Changes(object):
1135 self.new = []
1136 self.removed = []
1137
1138 -
1139 def scan(self, vcs_settings):
1140 self._reset()
1141
1142 @@ -96,7 +93,6 @@ class Changes(object):
1143 x for x in chain(self.changed, self.new)
1144 if os.path.basename(x) == "ChangeLog")
1145
1146 -
1147 def scan_cvs(self):
1148 tree = cvstree.getentries("./", recursive=1)
1149 self.changed = cvstree.findchanged(tree, recursive=1, basedir="./")
1150 @@ -105,7 +101,6 @@ class Changes(object):
1151 self.removed = cvstree.findremoved(tree, recursive=1, basedir="./")
1152 del tree
1153
1154 -
1155 def scan_svn(self):
1156 with repoman_popen("svn status") as f:
1157 svnstatus = f.readlines()
1158 @@ -123,7 +118,6 @@ class Changes(object):
1159 for elem in svnstatus
1160 if elem.startswith("D")]
1161
1162 -
1163 def scan_git(self):
1164 with repoman_popen(
1165 "git diff-index --name-only "
1166 @@ -145,7 +139,6 @@ class Changes(object):
1167 self.removed = ["./" + elem[:-1] for elem in removed]
1168 del removed
1169
1170 -
1171 def scan_bzr(self):
1172 with repoman_popen("bzr status -S .") as f:
1173 bzrstatus = f.readlines()
1174 @@ -163,7 +156,6 @@ class Changes(object):
1175 for elem in bzrstatus
1176 if elem and (elem[1:2] == "K" or elem[0:1] == "R")]
1177
1178 -
1179 def scan_hg(self):
1180 with repoman_popen("hg status --no-status --modified .") as f:
1181 changed = f.readlines()
1182
1183 diff --git a/pym/repoman/vcs/vcs.py b/pym/repoman/vcs/vcs.py
1184 index 6a9d455..180692c 100644
1185 --- a/pym/repoman/vcs/vcs.py
1186 +++ b/pym/repoman/vcs/vcs.py
1187 @@ -256,8 +256,10 @@ class VCSSettings(object):
1188 # Disable copyright/mtime check if vcs does not preserve mtime (bug #324075).
1189 self.vcs_preserves_mtime = self.vcs in ('cvs',)
1190
1191 - self.vcs_local_opts = repoman_settings.get("REPOMAN_VCS_LOCAL_OPTS", "").split()
1192 - self.vcs_global_opts = repoman_settings.get("REPOMAN_VCS_GLOBAL_OPTS")
1193 + self.vcs_local_opts = repoman_settings.get(
1194 + "REPOMAN_VCS_LOCAL_OPTS", "").split()
1195 + self.vcs_global_opts = repoman_settings.get(
1196 + "REPOMAN_VCS_GLOBAL_OPTS")
1197 if self.vcs_global_opts is None:
1198 if self.vcs in ('cvs', 'svn'):
1199 self.vcs_global_opts = "-q"
1200 @@ -266,5 +268,7 @@ class VCSSettings(object):
1201 self.vcs_global_opts = self.vcs_global_opts.split()
1202
1203 if options.mode == 'commit' and not options.pretend and not self.vcs:
1204 - logging.info("Not in a version controlled repository; enabling pretend mode.")
1205 + logging.info(
1206 + "Not in a version controlled repository; "
1207 + "enabling pretend mode.")
1208 options.pretend = True
1209
1210 diff --git a/pym/repoman/vcs/vcsstatus.py b/pym/repoman/vcs/vcsstatus.py
1211 index 0517c04..30e00ad 100644
1212 --- a/pym/repoman/vcs/vcsstatus.py
1213 +++ b/pym/repoman/vcs/vcsstatus.py
1214 @@ -8,7 +8,6 @@ from portage import os
1215 from repoman._subprocess import repoman_popen
1216
1217
1218 -
1219 class VCSStatus(object):
1220 '''Determines the status of the vcs repositories
1221 to determine if files are not added'''
1222 @@ -19,43 +18,39 @@ class VCSStatus(object):
1223 self.eadded = []
1224 self.qatracker = qatracker
1225
1226 -
1227 def check(self, check_not_added, checkdir, checkdir_relative, xpkg):
1228 if self.vcs and check_not_added:
1229 vcscheck = getattr(self, 'check_%s' % self.vcs)
1230 vcscheck(checkdir, checkdir_relative, xpkg)
1231
1232 -
1233 def post_git_hg(self, myf, xpkg):
1234 for l in myf:
1235 if l[:-1][-7:] == ".ebuild":
1236 - self.qatracker.add_error("ebuild.notadded",
1237 + self.qatracker.add_error(
1238 + "ebuild.notadded",
1239 os.path.join(xpkg, os.path.basename(l[:-1])))
1240 myf.close()
1241
1242 -
1243 def check_git(self, checkdir, checkdir_relative, xpkg):
1244 myf = repoman_popen(
1245 "git ls-files --others %s" %
1246 (portage._shell_quote(checkdir_relative),))
1247 self.post_git_hg(myf, xpkg)
1248
1249 -
1250 def check_hg(self, checkdir, checkdir_relative, xpkg):
1251 myf = repoman_popen(
1252 "hg status --no-status --unknown %s" %
1253 (portage._shell_quote(checkdir_relative),))
1254 self.post_git_hg(myf, xpkg)
1255
1256 -
1257 def check_cvs(self, checkdir, checkdir_relative, xpkg):
1258 try:
1259 myf = open(checkdir + "/CVS/Entries", "r")
1260 myl = myf.readlines()
1261 myf.close()
1262 except IOError:
1263 - self.qatracker.add_error("CVS/Entries.IO_error",
1264 - checkdir + "/CVS/Entries")
1265 + self.qatracker.add_error(
1266 + "CVS/Entries.IO_error", checkdir + "/CVS/Entries")
1267 return True
1268 for l in myl:
1269 if l[0] != "/":
1270 @@ -67,7 +62,6 @@ class VCSStatus(object):
1271 self.eadded.append(splitl[0][:-7])
1272 return True
1273
1274 -
1275 def check_svn(self, checkdir, checkdir_relative, xpkg):
1276 try:
1277 myf = repoman_popen(
1278 @@ -101,7 +95,6 @@ class VCSStatus(object):
1279 self.eadded.append(os.path.basename(l[:-7]))
1280 return True
1281
1282 -
1283 def check_bzr(self, checkdir, checkdir_relative, xpkg):
1284 try:
1285 myf = repoman_popen(
1286 @@ -117,4 +110,4 @@ class VCSStatus(object):
1287 l = l.split()[-1]
1288 if l[-7:] == ".ebuild":
1289 self.eadded.append(os.path.basename(l[:-7]))
1290 - return True
1291 + return True