Gentoo Archives: gentoo-commits

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