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 |