commit: 24b2088aab8aa754b7b2dd9023d8ba69ea3141f5 Author: Tom Wijsman <tomwij <AT> gentoo <DOT> org> AuthorDate: Fri Jun 6 12:24:18 2014 +0000 Commit: Brian Dolbec <brian.dolbec <AT> gmail <DOT> com> CommitDate: Mon Nov 17 00:53:14 2014 +0000 URL: http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=24b2088a
repoman: Apply PEP 8 guidelines again (except for W191) --- pym/repoman/_portage.py | 1 - pym/repoman/_xml.py | 6 -- pym/repoman/checks/directories/files.py | 17 ++-- pym/repoman/checks/ebuilds/checks.py | 2 +- pym/repoman/checks/ebuilds/eclasses/live.py | 2 +- pym/repoman/checks/ebuilds/eclasses/ruby.py | 2 +- pym/repoman/checks/ebuilds/fetches.py | 29 ++++--- pym/repoman/checks/ebuilds/isebuild.py | 6 +- pym/repoman/checks/ebuilds/manifests.py | 7 +- pym/repoman/checks/ebuilds/misc.py | 11 ++- pym/repoman/checks/ebuilds/pkgmetadata.py | 42 ++++----- pym/repoman/checks/ebuilds/thirdpartymirrors.py | 8 +- pym/repoman/checks/ebuilds/use_flags.py | 5 -- pym/repoman/checks/herds/metadata.py | 4 - pym/repoman/ebuild.py | 6 +- pym/repoman/errors.py | 2 - pym/repoman/main.py | 109 ++++++++++++++---------- pym/repoman/qa_data.py | 4 - pym/repoman/qa_tracker.py | 13 ++- pym/repoman/repos.py | 35 ++++---- pym/repoman/scan.py | 18 ++-- pym/repoman/vcs/vcs.py | 10 ++- pym/repoman/vcs/vcsstatus.py | 17 ++-- 23 files changed, 169 insertions(+), 187 deletions(-) diff --git a/pym/repoman/_portage.py b/pym/repoman/_portage.py index e72ce9f..0f611f7 100644 --- a/pym/repoman/_portage.py +++ b/pym/repoman/_portage.py @@ -23,4 +23,3 @@ sys.path.insert(0, pym_path) import portage portage._internal_caller = True portage._disable_legacy_globals() - diff --git a/pym/repoman/_xml.py b/pym/repoman/_xml.py index d5b5a5e..7bf6698 100644 --- a/pym/repoman/_xml.py +++ b/pym/repoman/_xml.py @@ -15,7 +15,6 @@ from repoman._subprocess import repoman_getstatusoutput class _XMLParser(xml.etree.ElementTree.XMLParser): - def __init__(self, data, **kwargs): xml.etree.ElementTree.XMLParser.__init__(self, **kwargs) self._portage_data = data @@ -27,13 +26,11 @@ class _XMLParser(xml.etree.ElementTree.XMLParser): self.parser.StartDoctypeDeclHandler = \ self._portage_StartDoctypeDeclHandler - def _portage_XmlDeclHandler(self, version, encoding, standalone): if self._base_XmlDeclHandler is not None: self._base_XmlDeclHandler(version, encoding, standalone) self._portage_data["XML_DECLARATION"] = (version, encoding, standalone) - def _portage_StartDoctypeDeclHandler( self, doctypeName, systemId, publicId, has_internal_subset): if self._base_StartDoctypeDeclHandler is not None: @@ -61,7 +58,6 @@ class XmlLint(object): self.binary = None self._check_capable() - def _check_capable(self): if self.options.mode == "manifest": return @@ -74,12 +70,10 @@ class XmlLint(object): # this can be problematic if xmllint changes their output self._is_capable = True - @property def capable(self): return self._is_capable - def check(self, checkdir, repolevel): '''Runs checks on the package metadata.xml file diff --git a/pym/repoman/checks/directories/files.py b/pym/repoman/checks/directories/files.py index 87220c0..b1d77df 100644 --- a/pym/repoman/checks/directories/files.py +++ b/pym/repoman/checks/directories/files.py @@ -13,8 +13,8 @@ from repoman.vcs.vcs import vcs_new_changed class FileChecks(object): - def __init__(self, qatracker, repoman_settings, repo_settings, portdb, - vcs_settings): + def __init__( + self, qatracker, repoman_settings, repo_settings, portdb, vcs_settings): ''' @param qatracker: QATracker instance @param repoman_settings: settings instance @@ -27,7 +27,6 @@ class FileChecks(object): self.repoman_settings = repoman_settings self.vcs_settings = vcs_settings - def check(self, checkdir, checkdirlist, checkdir_relative, changed, new): '''Checks the ebuild sources and files for errors @@ -48,10 +47,12 @@ class FileChecks(object): # prohibited characters). See bug #406877. index = -1 if index != -1: - self.qatracker.add_error("file.name", + self.qatracker.add_error( + "file.name", "%s/%s: char '%s'" % (checkdir, y_file, y_file[index])) - if not (y_file in ("ChangeLog", "metadata.xml") + if not ( + y_file in ("ChangeLog", "metadata.xml") or y_file.endswith(".ebuild")): continue f = None @@ -70,10 +71,10 @@ class FileChecks(object): line += l2 if l2 != 0: s = s[s.rfind("\n") + 1:] - self.qatracker.add_error("file.UTF8", - "%s/%s: line %i, just after: '%s'" % (checkdir, y_file, line, s)) + self.qatracker.add_error( + "file.UTF8", "%s/%s: line %i, just after: '%s'" % ( + checkdir, y_file, line, s)) finally: if f is not None: f.close() return - diff --git a/pym/repoman/checks/ebuilds/checks.py b/pym/repoman/checks/ebuilds/checks.py index 890cd18..27d8942 100644 --- a/pym/repoman/checks/ebuilds/checks.py +++ b/pym/repoman/checks/ebuilds/checks.py @@ -518,7 +518,7 @@ class InheritEclass(LineCheck): def end(self): if not self._disabled and self._comprehensive and self._inherit \ - and not self._func_call: + and not self._func_call: self.repoman_check_name = 'inherit.unused' yield 'no function called from %s.eclass; please drop' % self._eclass diff --git a/pym/repoman/checks/ebuilds/eclasses/live.py b/pym/repoman/checks/ebuilds/eclasses/live.py index 20c573e..bf14cff 100644 --- a/pym/repoman/checks/ebuilds/eclasses/live.py +++ b/pym/repoman/checks/ebuilds/eclasses/live.py @@ -36,4 +36,4 @@ class LiveEclassChecks(object): good_keywords_exist = len(bad_stable_keywords) < len(keywords) if good_keywords_exist and not has_global_mask(pkg, global_pmaskdict): - self.qatracker.add_error("LIVEVCS.unmasked", ebuild.relative_path) \ No newline at end of file + self.qatracker.add_error("LIVEVCS.unmasked", ebuild.relative_path) diff --git a/pym/repoman/checks/ebuilds/eclasses/ruby.py b/pym/repoman/checks/ebuilds/eclasses/ruby.py index abfb166..e8d36ea 100644 --- a/pym/repoman/checks/ebuilds/eclasses/ruby.py +++ b/pym/repoman/checks/ebuilds/eclasses/ruby.py @@ -29,4 +29,4 @@ class RubyEclassChecks(object): self.qatracker.add_error( "IUSE.rubydeprecated", (ebuild.relative_path + ": Deprecated ruby target: %s") - % myruby) \ No newline at end of file + % myruby) diff --git a/pym/repoman/checks/ebuilds/fetches.py b/pym/repoman/checks/ebuilds/fetches.py index 22e89b6..53ed64f 100644 --- a/pym/repoman/checks/ebuilds/fetches.py +++ b/pym/repoman/checks/ebuilds/fetches.py @@ -16,8 +16,8 @@ from repoman.vcs.vcs import vcs_new_changed class FetchChecks(object): '''Performs checks on the files needed for the ebuild''' - def __init__(self, qatracker, repoman_settings, repo_settings, portdb, - vcs_settings): + def __init__( + self, qatracker, repoman_settings, repo_settings, portdb, vcs_settings): ''' @param qatracker: QATracker instance @param repoman_settings: settings instance @@ -31,7 +31,6 @@ class FetchChecks(object): self.vcs_settings = vcs_settings self._digests = None - def check(self, xpkg, checkdir, checkdir_relative, mychanged, mynew): '''Checks the ebuild sources and files for errors @@ -40,7 +39,8 @@ class FetchChecks(object): @param checkdir_relative: repolevel determined path ''' self.checkdir = checkdir - fetchlist_dict = portage.FetchlistDict(checkdir, self.repoman_settings, self.portdb) + fetchlist_dict = portage.FetchlistDict( + checkdir, self.repoman_settings, self.portdb) myfiles_all = [] self.src_uri_error = False for mykey in fetchlist_dict: @@ -54,8 +54,8 @@ class FetchChecks(object): # This will be reported as an "ebuild.syntax" error. pass else: - self.qatracker.add_error("SRC_URI.syntax", - "%s.ebuild SRC_URI: %s" % (mykey, e)) + self.qatracker.add_error( + "SRC_URI.syntax", "%s.ebuild SRC_URI: %s" % (mykey, e)) del fetchlist_dict if not self.src_uri_error: # This test can produce false positives if SRC_URI could not @@ -102,26 +102,29 @@ class FetchChecks(object): # File size between 20 KiB and 60 KiB causes a warning, # while file size over 60 KiB causes an error. elif mystat.st_size > 61440: - self.qatracker.add_error("file.size.fatal", - "(%d KiB) %s/files/%s" % (mystat.st_size // 1024, xpkg, y)) + self.qatracker.add_error( + "file.size.fatal", "(%d KiB) %s/files/%s" % ( + mystat.st_size // 1024, xpkg, y)) elif mystat.st_size > 20480: - self.qatracker.add_error("file.size", - "(%d KiB) %s/files/%s" % (mystat.st_size // 1024, xpkg, y)) + self.qatracker.add_error( + "file.size", "(%d KiB) %s/files/%s" % ( + mystat.st_size // 1024, xpkg, y)) index = self.repo_settings.repo_config.find_invalid_path_char(y) if index != -1: y_relative = os.path.join(checkdir_relative, "files", y) - if self.vcs_settings.vcs is not None and not vcs_new_changed(y_relative, mychanged, mynew): + if self.vcs_settings.vcs is not None \ + and not vcs_new_changed(y_relative, mychanged, mynew): # If the file isn't in the VCS new or changed set, then # assume that it's an irrelevant temporary file (Manifest # entries are not generated for file names containing # prohibited characters). See bug #406877. index = -1 if index != -1: - self.qatracker.add_error("file.name", + self.qatracker.add_error( + "file.name", "%s/files/%s: char '%s'" % (checkdir, y, y[index])) - @property def digests(self): '''Property function, returns the saved digests or diff --git a/pym/repoman/checks/ebuilds/isebuild.py b/pym/repoman/checks/ebuilds/isebuild.py index 065914e..f0c9a48 100644 --- a/pym/repoman/checks/ebuilds/isebuild.py +++ b/pym/repoman/checks/ebuilds/isebuild.py @@ -14,14 +14,12 @@ from repoman.qa_data import no_exec, allvars class IsEbuild(object): - def __init__(self, repoman_settings, repo_settings, portdb, qatracker): '''''' self.portdb = portdb self.qatracker = qatracker - self.root_config = RootConfig(repoman_settings, - repo_settings.trees[repo_settings.root], None) - + self.root_config = RootConfig( + repoman_settings, repo_settings.trees[repo_settings.root], None) def check(self, checkdirlist, checkdir, xpkg): self.continue_ = False diff --git a/pym/repoman/checks/ebuilds/manifests.py b/pym/repoman/checks/ebuilds/manifests.py index 1d65e1d..3b8dec5 100644 --- a/pym/repoman/checks/ebuilds/manifests.py +++ b/pym/repoman/checks/ebuilds/manifests.py @@ -12,14 +12,12 @@ from portage.util import writemsg_level class Manifests(object): - def __init__(self, options, qatracker=None, repoman_settings=None): self.options = options self.qatracker = qatracker self.repoman_settings = repoman_settings self.generated_manifest = False - def run(self, checkdir, portdb): self.generated_manifest = False self.digest_only = self.options.mode != 'manifest-check' \ @@ -45,7 +43,8 @@ class Manifests(object): level=logging.ERROR, noiselevel=-1) if not self.generated_manifest: - writemsg_level("Unable to generate manifest.", + writemsg_level( + "Unable to generate manifest.", level=logging.ERROR, noiselevel=-1) failed = True @@ -75,7 +74,6 @@ class Manifests(object): sys.exit(1) return False - def create_manifest(self, checkdir, fetchlist_dict): try: distdir = self.repoman_settings['DISTDIR'] @@ -95,7 +93,6 @@ class Manifests(object): finally: portage._doebuild_manifest_exempt_depend -= 1 - def digest_check(self, xpkg, checkdir): self.repoman_settings['O'] = checkdir self.repoman_settings['PORTAGE_QUIET'] = '1' diff --git a/pym/repoman/checks/ebuilds/misc.py b/pym/repoman/checks/ebuilds/misc.py index 744784a..d735542 100644 --- a/pym/repoman/checks/ebuilds/misc.py +++ b/pym/repoman/checks/ebuilds/misc.py @@ -28,13 +28,13 @@ def bad_split_check(xpkg, y_ebuild, pkgdir, qatracker): is_pv_toolong2 = pv_toolong_re.search(myesplit[2]) if is_pv_toolong or is_pv_toolong2: - qatracker.add_error("ebuild.invalidname", - xpkg + "/" + y_ebuild + ".ebuild") + qatracker.add_error( + "ebuild.invalidname", xpkg + "/" + y_ebuild + ".ebuild") return True elif myesplit[0] != pkgdir: print(pkgdir, myesplit[0]) - qatracker.add_error("ebuild.namenomatch", - xpkg + "/" + y_ebuild + ".ebuild") + qatracker.add_error( + "ebuild.namenomatch", xpkg + "/" + y_ebuild + ".ebuild") return True return False @@ -49,7 +49,6 @@ def pkg_invalid(pkg, qatracker, ebuild): if pkg.invalid: for k, msgs in pkg.invalid.items(): for msg in msgs: - qatracker.add_error(k, - "%s: %s" % (ebuild.relative_path, msg)) + qatracker.add_error(k, "%s: %s" % (ebuild.relative_path, msg)) return True return False diff --git a/pym/repoman/checks/ebuilds/pkgmetadata.py b/pym/repoman/checks/ebuilds/pkgmetadata.py index 674d32f..8dc3f60 100644 --- a/pym/repoman/checks/ebuilds/pkgmetadata.py +++ b/pym/repoman/checks/ebuilds/pkgmetadata.py @@ -28,7 +28,8 @@ from portage import os from portage import _encodings, _unicode_encode from portage.dep import Atom -from repoman.metadata import (metadata_xml_encoding, metadata_doctype_name, +from repoman.metadata import ( + metadata_xml_encoding, metadata_doctype_name, metadata_dtd_uri, metadata_xml_declaration, parse_metadata_use) from repoman.checks.herds.herdbase import get_herd_base from repoman.checks.herds.metadata import check_metadata, UnknownHerdsError @@ -51,8 +52,6 @@ class PkgMetadata(object): self.musedict = {} self.xmllint = XmlLint(self.options, self.repoman_settings) - - def check(self, xpkg, checkdir, checkdirlist, repolevel): '''Performs the checks on the metadata.xml for the package @@ -91,8 +90,8 @@ class PkgMetadata(object): pass else: if "XML_DECLARATION" not in xml_info: - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: " + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: " "xml declaration is missing on first line, " "should be '%s'" % (xpkg, metadata_xml_declaration)) else: @@ -104,14 +103,15 @@ class PkgMetadata(object): encoding_problem = "but it is undefined" else: encoding_problem = "not '%s'" % xml_encoding - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: " + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: " "xml declaration encoding should be '%s', %s" % (xpkg, metadata_xml_encoding, encoding_problem)) if "DOCTYPE" not in xml_info: metadata_bad = True - self.qatracker.add_error("metadata.bad", + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, "DOCTYPE is missing")) else: doctype_name, doctype_system, doctype_pubid = \ @@ -121,14 +121,14 @@ class PkgMetadata(object): system_problem = "but it is undefined" else: system_problem = "not '%s'" % doctype_system - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: " + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: " "DOCTYPE: SYSTEM should refer to '%s', %s" % (xpkg, metadata_dtd_uri, system_problem)) if doctype_name != metadata_doctype_name: - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: " + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: " "DOCTYPE: name should be '%s', not '%s'" % (xpkg, metadata_doctype_name, doctype_name)) @@ -137,8 +137,8 @@ class PkgMetadata(object): self.musedict = parse_metadata_use(_metadata_xml) except portage.exception.ParseError as e: metadata_bad = True - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: %s" % (xpkg, e)) + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e)) else: for atom in chain(*self.musedict.values()): if atom is None: @@ -146,22 +146,24 @@ class PkgMetadata(object): try: atom = Atom(atom) except InvalidAtom as e: - self.qatracker.add_error("metadata.bad", + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: Invalid atom: %s" % (xpkg, e)) else: if atom.cp != xpkg: - self.qatracker.add_error("metadata.bad", + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: Atom contains " "unexpected cat/pn: %s" % (xpkg, atom)) # Run other metadata.xml checkers try: - check_metadata(_metadata_xml, - get_herd_base(self.repoman_settings)) + check_metadata(_metadata_xml, get_herd_base( + self.repoman_settings)) except (UnknownHerdsError, ) as e: metadata_bad = True - self.qatracker.add_error("metadata.bad", - "%s/metadata.xml: %s" % (xpkg, e)) + self.qatracker.add_error( + "metadata.bad", "%s/metadata.xml: %s" % (xpkg, e)) del e # Only carry out if in package directory or check forced diff --git a/pym/repoman/checks/ebuilds/thirdpartymirrors.py b/pym/repoman/checks/ebuilds/thirdpartymirrors.py index 50a0da8..061e71f 100644 --- a/pym/repoman/checks/ebuilds/thirdpartymirrors.py +++ b/pym/repoman/checks/ebuilds/thirdpartymirrors.py @@ -17,7 +17,6 @@ class ThirdPartyMirrors(object): self.qatracker = qatracker - def check(self, myaux, relative_path): # Check that URIs don't reference a server from thirdpartymirrors. for uri in portage.dep.use_reduce( @@ -32,7 +31,8 @@ class ThirdPartyMirrors(object): continue new_uri = "mirror://%s/%s" % (mirror_alias, uri[len(mirror):]) - self.qatracker.add_error("SRC_URI.mirror", - "%s: '%s' found in thirdpartymirrors, use '%s'" % - (relative_path, mirror, new_uri)) + self.qatracker.add_error( + "SRC_URI.mirror", + "%s: '%s' found in thirdpartymirrors, use '%s'" % ( + relative_path, mirror, new_uri)) return diff --git a/pym/repoman/checks/ebuilds/use_flags.py b/pym/repoman/checks/ebuilds/use_flags.py index d63ae6d..73680d0 100644 --- a/pym/repoman/checks/ebuilds/use_flags.py +++ b/pym/repoman/checks/ebuilds/use_flags.py @@ -24,7 +24,6 @@ class USEFlagChecks(object): self.defaultUseFlags = [] self.usedUseFlags = set() - def check(self, pkg, package, ebuild, y_ebuild, localUseFlags): '''Perform the check. @@ -42,12 +41,10 @@ class USEFlagChecks(object): self._checkMetadata(package, ebuild, y_ebuild, localUseFlags) self._checkRequiredUSE(pkg, ebuild) - def getUsedUseFlags(self): '''Get the USE flags that this check has seen''' return self.usedUseFlags - def _checkGlobal(self, pkg): for myflag in pkg._metadata["IUSE"].split(): flag_name = myflag.lstrip("+-") @@ -57,7 +54,6 @@ class USEFlagChecks(object): if flag_name not in self.globalUseFlags: self.useFlags.append(flag_name) - def _checkMetadata(self, package, ebuild, y_ebuild, localUseFlags): for mypos in range(len(self.useFlags) - 1, -1, -1): if self.useFlags[mypos] and (self.useFlags[mypos] in localUseFlags): @@ -75,7 +71,6 @@ class USEFlagChecks(object): "IUSE.invalid", "%s/%s.ebuild: %s" % (package, y_ebuild, self.useFlags[mypos])) - def _checkRequiredUSE(self, pkg, ebuild): required_use = pkg._metadata["REQUIRED_USE"] if required_use: diff --git a/pym/repoman/checks/herds/metadata.py b/pym/repoman/checks/herds/metadata.py index ef0c9d0..3c67fcf 100644 --- a/pym/repoman/checks/herds/metadata.py +++ b/pym/repoman/checks/herds/metadata.py @@ -1,7 +1,5 @@ - - class UnknownHerdsError(ValueError): def __init__(self, herd_names): _plural = len(herd_names) != 1 @@ -25,5 +23,3 @@ def check_metadata_herds(xml_tree, herd_base): def check_metadata(xml_tree, herd_base): if herd_base is not None: check_metadata_herds(xml_tree, herd_base) - - diff --git a/pym/repoman/ebuild.py b/pym/repoman/ebuild.py index fbe25a9..1dddfb9 100644 --- a/pym/repoman/ebuild.py +++ b/pym/repoman/ebuild.py @@ -6,7 +6,8 @@ from portage import os class Ebuild(object): '''Class to run primary checks on ebuilds''' - def __init__(self, repo_settings, repolevel, pkgdir, catdir, vcs_settings, x, y): + def __init__( + self, repo_settings, repolevel, pkgdir, catdir, vcs_settings, x, y): self.vcs_settings = vcs_settings self.relative_path = os.path.join(x, y + ".ebuild") self.full_path = os.path.join(repo_settings.repodir, self.relative_path) @@ -17,7 +18,6 @@ class Ebuild(object): self.ebuild_path = os.path.join(catdir, self.ebuild_path) self.ebuild_path = os.path.join(".", self.ebuild_path) - def untracked(self, check_ebuild_notadded, y, eadded): do_check = self.vcs_settings.vcs in ("cvs", "svn", "bzr") really_notadded = check_ebuild_notadded and y not in eadded @@ -26,5 +26,3 @@ class Ebuild(object): # ebuild not added to vcs return True return False - - diff --git a/pym/repoman/errors.py b/pym/repoman/errors.py index dff6547..305eece 100644 --- a/pym/repoman/errors.py +++ b/pym/repoman/errors.py @@ -17,5 +17,3 @@ def caterror(catdir, repodir): " Skipping QA checks in this directory.\n" "Please ensure that you add %s to %s/profiles/categories\n" "if it is a new category." % (catdir, catdir, repodir)) - - diff --git a/pym/repoman/main.py b/pym/repoman/main.py index e338d82..ecdecfa 100755 --- a/pym/repoman/main.py +++ b/pym/repoman/main.py @@ -132,8 +132,9 @@ vcs_settings = VCSSettings(options, repoman_settings) ################## -repo_settings = RepoSettings(config_root, portdir, portdir_overlay, - repoman_settings, vcs_settings, options, qawarnings) +repo_settings = RepoSettings( + config_root, portdir, portdir_overlay, + repoman_settings, vcs_settings, options, qawarnings) repoman_settings = repo_settings.repoman_settings @@ -204,12 +205,14 @@ if repolevel == 1: startdir = repo_settings.repodir else: startdir = normalize_path(mydir) - startdir = os.path.join(repo_settings.repodir, *startdir.split(os.sep)[-2 - repolevel + 3:]) + startdir = os.path.join( + repo_settings.repodir, *startdir.split(os.sep)[-2 - repolevel + 3:]) ################### # get lists of valid keywords, licenses, and use new_data = repo_metadata(repo_settings.portdb, repoman_settings) -kwlist, liclist, uselist, profile_list, global_pmaskdict, liclist_deprecated = new_data +kwlist, liclist, uselist, profile_list, \ + global_pmaskdict, liclist_deprecated = new_data repoman_settings['PORTAGE_ARCHLIST'] = ' '.join(sorted(kwlist)) repoman_settings.backup_changes('PORTAGE_ARCHLIST') @@ -336,14 +339,15 @@ for xpkg in effective_scanlist: ebuildlist = sorted(pkgs.values()) ebuildlist = [pkg.pf for pkg in ebuildlist] ####################### - filescheck.check(checkdir, checkdirlist, checkdir_relative, - changed.changed, changed.new) + filescheck.check( + checkdir, checkdirlist, checkdir_relative, changed.changed, changed.new) ####################### status_check.check(check_ebuild_notadded, checkdir, checkdir_relative, xpkg) eadded.extend(status_check.eadded) ################# - fetchcheck.check(xpkg, checkdir, checkdir_relative, changed.changed, changed.new) + fetchcheck.check( + xpkg, checkdir, checkdir_relative, changed.changed, changed.new) ################# if check_changelog and "ChangeLog" not in checkdirlist: @@ -360,9 +364,11 @@ for xpkg in effective_scanlist: used_useflags = set() for y_ebuild in ebuildlist: -################## - ebuild = Ebuild(repo_settings, repolevel, pkgdir, catdir, vcs_settings, xpkg, y_ebuild) -################## + ################## + ebuild = Ebuild( + repo_settings, repolevel, pkgdir, catdir, vcs_settings, + xpkg, y_ebuild) + ################## if check_changelog and not changelog_modified \ and ebuild.ebuild_path in changed.new_ebuilds: @@ -370,8 +376,8 @@ for xpkg in effective_scanlist: if ebuild.untracked(check_ebuild_notadded, y_ebuild, eadded): # ebuild not added to vcs - qatracker.add_error("ebuild.notadded", - xpkg + "/" + y_ebuild + ".ebuild") + qatracker.add_error( + "ebuild.notadded", xpkg + "/" + y_ebuild + ".ebuild") ################## if bad_split_check(xpkg, y_ebuild, pkgdir, qatracker): @@ -388,19 +394,20 @@ for xpkg in effective_scanlist: live_ebuild = live_eclasses.intersection(inherited) if repo_settings.repo_config.eapi_is_banned(eapi): - qatracker.add_error("repo.eapi.banned", - "%s: %s" % (ebuild.relative_path, eapi)) + qatracker.add_error( + "repo.eapi.banned", "%s: %s" % (ebuild.relative_path, eapi)) elif repo_settings.repo_config.eapi_is_deprecated(eapi): - qatracker.add_error("repo.eapi.deprecated", - "%s: %s" % (ebuild.relative_path, eapi)) + qatracker.add_error( + "repo.eapi.deprecated", "%s: %s" % (ebuild.relative_path, eapi)) for k, v in myaux.items(): if not isinstance(v, basestring): continue m = non_ascii_re.search(v) if m is not None: - qatracker.add_error("variable.invalidchar", + qatracker.add_error( + "variable.invalidchar", "%s: %s variable contains non-ASCII " "character at position %s" % (ebuild.relative_path, k, m.start() + 1)) @@ -430,7 +437,8 @@ for xpkg in effective_scanlist: # 14 is the length of DESCRIPTION="" if len(myaux['DESCRIPTION']) > max_desc_len: - qatracker.add_error('DESCRIPTION.toolong', + qatracker.add_error( + 'DESCRIPTION.toolong', "%s: DESCRIPTION is %d characters (max %d)" % (ebuild.relative_path, len(myaux['DESCRIPTION']), max_desc_len)) @@ -516,7 +524,8 @@ for xpkg in effective_scanlist: if atoms and mytype.endswith("DEPEND"): if runtime and \ "test?" in mydepstr.split(): - qatracker.add_error(mytype + '.suspect', + qatracker.add_error( + mytype + '.suspect', "%s: 'test?' USE conditional in %s" % (ebuild.relative_path, mytype)) @@ -537,8 +546,8 @@ for xpkg in effective_scanlist: if catdir != "virtual": if not is_blocker and \ atom.cp in suspect_virtual: - qatracker.add_error('virtual.suspect', - ebuild.relative_path + + qatracker.add_error( + 'virtual.suspect', ebuild.relative_path + ": %s: consider using '%s' instead of '%s'" % (mytype, suspect_virtual[atom.cp], atom)) if not is_blocker and \ @@ -553,26 +562,28 @@ for xpkg in effective_scanlist: not is_blocker and \ not inherited_java_eclass and \ atom.cp == "virtual/jdk": - qatracker.add_error('java.eclassesnotused', - ebuild.relative_path) + qatracker.add_error( + 'java.eclassesnotused', ebuild.relative_path) elif buildtime and \ not is_blocker and \ not inherited_wxwidgets_eclass and \ atom.cp == "x11-libs/wxGTK": - qatracker.add_error('wxwidgets.eclassnotused', + qatracker.add_error( + 'wxwidgets.eclassnotused', "%s: %ss on x11-libs/wxGTK without inheriting" " wxwidgets.eclass" % (ebuild.relative_path, mytype)) elif runtime: if not is_blocker and \ atom.cp in suspect_rdepend: - qatracker.add_error(mytype + '.suspect', + qatracker.add_error( + mytype + '.suspect', ebuild.relative_path + ": '%s'" % atom) if atom.operator == "~" and \ portage.versions.catpkgsplit(atom.cpv)[3] != "r0": qacat = 'dependency.badtilde' - qatracker.add_error(qacat, - "%s: %s uses the ~ operator" + qatracker.add_error( + qacat, "%s: %s uses the ~ operator" " with a non-zero revision: '%s'" % (ebuild.relative_path, mytype, atom)) @@ -583,8 +594,8 @@ for xpkg in effective_scanlist: qacat = "dependency.syntax" else: qacat = m + ".syntax" - qatracker.add_error(qacat, - "%s: %s: %s" % (ebuild.relative_path, m, b)) + qatracker.add_error( + qacat, "%s: %s: %s" % (ebuild.relative_path, m, b)) badlicsyntax = len([z for z in type_list if z == "LICENSE"]) badprovsyntax = len([z for z in type_list if z == "PROVIDE"]) @@ -612,10 +623,12 @@ for xpkg in effective_scanlist: # Need to check for "||" manually as no portage # function will remove it without removing values. if lic not in liclist and lic != "||": - qatracker.add_error("LICENSE.invalid", + qatracker.add_error( + "LICENSE.invalid", xpkg + "/" + y_ebuild + ".ebuild: %s" % lic) elif lic in liclist_deprecated: - qatracker.add_error("LICENSE.deprecated", + qatracker.add_error( + "LICENSE.deprecated", "%s: %s" % (ebuild.relative_path, lic)) # restrict checks @@ -624,7 +637,8 @@ for xpkg in effective_scanlist: myrestrict = portage.dep.use_reduce( myaux["RESTRICT"], matchall=1, flat=True) except portage.exception.InvalidDependString as e: - qatracker.add_error("RESTRICT.syntax", + qatracker.add_error( + "RESTRICT.syntax", "%s: RESTRICT: %s" % (ebuild.relative_path, e)) del e if myrestrict: @@ -632,7 +646,8 @@ for xpkg in effective_scanlist: mybadrestrict = myrestrict.difference(valid_restrict) if mybadrestrict: for mybad in mybadrestrict: - qatracker.add_error("RESTRICT.invalid", + qatracker.add_error( + "RESTRICT.invalid", xpkg + "/" + y_ebuild + ".ebuild: %s" % mybad) # Syntax Checks @@ -649,8 +664,8 @@ for xpkg in effective_scanlist: mode='r', encoding=_encodings['repo.content']) try: for check_name, e in run_checks(f, pkg): - qatracker.add_error(check_name, - ebuild.relative_path + ': %s' % e) + qatracker.add_error( + check_name, ebuild.relative_path + ': %s' % e) finally: f.close() except UnicodeDecodeError: @@ -807,14 +822,14 @@ for xpkg in effective_scanlist: # if we emptied out our list, continue: if not atoms: continue - qatracker.add_error(mykey, - "%s: %s: %s(%s) %s" - % (ebuild.relative_path, mytype, keyword, prof, + qatracker.add_error( + mykey, "%s: %s: %s(%s) %s" % ( + ebuild.relative_path, mytype, keyword, prof, repr(atoms))) else: - qatracker.add_error(mykey, - "%s: %s: %s(%s) %s" - % (ebuild.relative_path, mytype, keyword, prof, + qatracker.add_error( + mykey, "%s: %s: %s(%s) %s" % ( + ebuild.relative_path, mytype, keyword, prof, repr(atoms))) if not baddepsyntax and unknown_pkgs: @@ -822,15 +837,16 @@ for xpkg in effective_scanlist: for mytype, atom in unknown_pkgs: type_map.setdefault(mytype, set()).add(atom) for mytype, atoms in type_map.items(): - qatracker.add_error("dependency.unknown", - "%s: %s: %s" + qatracker.add_error( + "dependency.unknown", "%s: %s: %s" % (ebuild.relative_path, mytype, ", ".join(sorted(atoms)))) # check if there are unused local USE-descriptions in metadata.xml # (unless there are any invalids, to avoid noise) if allvalid: for myflag in muselist.difference(used_useflags): - qatracker.add_error("metadata.warning", + qatracker.add_error( + "metadata.warning", "%s/metadata.xml: unused local USE-description: '%s'" % (xpkg, myflag)) @@ -1118,7 +1134,10 @@ else: myremoved = ["./" + elem.rstrip() for elem in myremoved] if vcs_settings.vcs: - if not (mychanged or mynew or myremoved or (vcs_settings.vcs == "hg" and mydeleted)): + a_file_is_changed = mychanged or mynew or myremoved + a_file_is_deleted_hg = vcs_settings.vcs == "hg" and mydeleted + + if not (a_file_is_changed or a_file_is_deleted_hg): utilities.repoman_sez( "\"Doing nothing is not always good for QA.\"") print() diff --git a/pym/repoman/qa_data.py b/pym/repoman/qa_data.py index 4b62b5d..09015cc 100644 --- a/pym/repoman/qa_data.py +++ b/pym/repoman/qa_data.py @@ -6,8 +6,6 @@ from _emerge.Package import Package # import our initialized portage instance from repoman._portage import portage - - # 14 is the length of DESCRIPTION="" max_desc_len = 100 allowed_filename_chars = "a-zA-Z0-9._-+:" @@ -426,5 +424,3 @@ def format_qa_output_column( for failure in fails_list: formatter.add_literal_data(category + " " + failure) formatter.add_line_break() - - diff --git a/pym/repoman/qa_tracker.py b/pym/repoman/qa_tracker.py index 48a7241..9bfe0e2 100644 --- a/pym/repoman/qa_tracker.py +++ b/pym/repoman/qa_tracker.py @@ -12,7 +12,6 @@ class QATracker(object): self.fails = {} self.warns = {} - def add_error(self, detected_qa, info): '''Add the Q/A error to the database of detected problems @@ -20,15 +19,15 @@ class QATracker(object): @param info: string, details of the detected problem ''' if detected_qa not in qacats: - logging.error('QATracker: Exiting on error. unknown detected_qa type passed in ' - 'to add_error(): %s, %s' % (detected_qa, info)) + logging.error( + 'QATracker: Exiting on error. Unknown detected_qa type passed ' + 'in to add_error(): %s, %s' % (detected_qa, info)) sys.exit(1) try: self.fails[detected_qa].append(info) except KeyError: self.fails[detected_qa] = [info] - def add_warning(self, detected_qa, info): '''Add the Q/A warning to the database of detected problems @@ -36,11 +35,11 @@ class QATracker(object): @param info: string, details of the detected problem ''' if detected_qa not in qawarnings: - logging.error('QATracker: Exiting on error. unknown detected_qa type passed in ' - 'to add_warning(): %s, %s' % (detected_qa, info)) + logging.error( + 'QATracker: Exiting on error. Unknown detected_qa type passed ' + 'in to add_warning(): %s, %s' % (detected_qa, info)) sys.exit(1) try: self.warns[detected_qa].append(info) except KeyError: self.warns[detected_qa] = [info] - diff --git a/pym/repoman/repos.py b/pym/repoman/repos.py index 6bd1eb4..5044411 100644 --- a/pym/repoman/repos.py +++ b/pym/repoman/repos.py @@ -23,16 +23,19 @@ bad = portage.output.create_color_func("BAD") class RepoSettings(object): '''Holds out repo specific settings''' - def __init__(self, config_root, portdir, portdir_overlay, + def __init__( + self, config_root, portdir, portdir_overlay, repoman_settings=None, vcs_settings=None, options=None, qawarnings=None): self.repoman_settings = repoman_settings self.vcs_settings = vcs_settings + repoman_repos = self.repoman_settings.repositories + # Ensure that current repository is in the list of enabled repositories. self.repodir = os.path.realpath(portdir_overlay) try: - repoman_settings.repositories.get_repo_for_location(self.repodir) + repoman_repos.get_repo_for_location(self.repodir) except KeyError: self._add_repo(config_root, portdir_overlay) @@ -44,15 +47,15 @@ class RepoSettings(object): # Constrain dependency resolution to the master(s) # that are specified in layout.conf. - self.repo_config = self.repoman_settings.repositories.get_repo_for_location(self.repodir) + self.repo_config = repoman_repos.get_repo_for_location(self.repodir) self.portdb.porttrees = list(self.repo_config.eclass_db.porttrees) self.portdir = self.portdb.porttrees[0] self.commit_env = os.environ.copy() # list() is for iteration on a copy. - for repo in list(self.repoman_settings.repositories): + for repo in list(repoman_repos): # all paths are canonical if repo.location not in self.repo_config.eclass_db.porttrees: - del self.repoman_settings.repositories[repo.name] + del repoman_repos[repo.name] if self.repo_config.allow_provide_virtual: qawarnings.add("virtual.oldstyle") @@ -121,10 +124,10 @@ class RepoSettings(object): logging.error(line) sys.exit(1) - def _add_repo(self, config_root, portdir_overlay): self.repo_conf = portage.repository.config - self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name(portdir_overlay)[0] + self.repo_name = self.repo_conf.RepoConfig._read_valid_repo_name( + portdir_overlay)[0] self.layout_conf_data = self.repo_conf.parse_layout_conf(portdir_overlay)[0] if self.layout_conf_data['repo-name']: self.repo_name = self.layout_conf_data['repo-name'] @@ -143,18 +146,19 @@ class RepoSettings(object): # We have to call the config constructor again so that attributes # dependent on config.repositories are initialized correctly. self.repoman_settings = portage.config( - config_root=config_root, local_config=False, repositories=self.repositories) + config_root=config_root, local_config=False, + repositories=self.repositories) - ########### future vcs plugin functions + ########## + # future vcs plugin functions + ########## def _vcs_gpg_bzr(self): pass - def _vcs_gpg_cvs(self): pass - def _vcs_gpg_git(self): # NOTE: It's possible to use --gpg-sign=key_id to specify the key in # the commit arguments. If key_id is unspecified, then it must be @@ -170,17 +174,13 @@ class RepoSettings(object): except OSError: pass - def _vcs_gpg_hg(self): pass - def _vcs_gpg_svn(self): pass - - def list_checks(kwlist, liclist, uselist, repoman_settings): liclist_deprecated = set() if "DEPRECATED" in repoman_settings._license_manager._license_groups: @@ -288,7 +288,8 @@ def repo_metadata(portdb, repoman_settings): global_pmaskdict.setdefault(x.cp, []).append(x) del global_pmasklines - return (kwlist, liclist, uselist, profile_list, global_pmaskdict, + return ( + kwlist, liclist, uselist, profile_list, global_pmaskdict, list_checks(kwlist, liclist, uselist, repoman_settings)) @@ -300,5 +301,3 @@ def has_global_mask(pkg, global_pmaskdict): if portage.dep.match_from_list(x, pkg_list): return x return None - - diff --git a/pym/repoman/scan.py b/pym/repoman/scan.py index e7ce8ff..fef6d82 100644 --- a/pym/repoman/scan.py +++ b/pym/repoman/scan.py @@ -23,7 +23,7 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings): continue if os.path.isdir(startdir + "/" + x): scanlist.append(catdir + "/" + x) - #repo_subdir = catdir + os.sep + # repo_subdir = catdir + os.sep elif repolevel == 1: for x in categories: if not os.path.isdir(startdir + "/" + x): @@ -33,20 +33,20 @@ def scan(repolevel, reposplit, startdir, categories, repo_settings): continue if os.path.isdir(startdir + "/" + x + "/" + y): scanlist.append(x + "/" + y) - #repo_subdir = "" + # repo_subdir = "" elif repolevel == 3: catdir = reposplit[-2] if catdir not in categories: - caterror(catdir,repo_settings.repodir) + caterror(catdir, repo_settings.repodir) scanlist.append(catdir + "/" + reposplit[-1]) - #repo_subdir = scanlist[-1] + os.sep + # repo_subdir = scanlist[-1] + os.sep else: msg = 'Repoman is unable to determine PORTDIR or PORTDIR_OVERLAY' + \ ' from the current working directory' logging.critical(msg) sys.exit(1) - #repo_subdir_len = len(repo_subdir) + # repo_subdir_len = len(repo_subdir) scanlist.sort() logging.debug( @@ -67,12 +67,10 @@ class Changes(object): This will ease future addition of new VCS types. ''' - def __init__(self, options): self.options = options self._reset() - def _reset(self): self.new_ebuilds = set() self.ebuilds = set() @@ -81,7 +79,6 @@ class Changes(object): self.new = [] self.removed = [] - def scan(self, vcs_settings): self._reset() @@ -96,7 +93,6 @@ class Changes(object): x for x in chain(self.changed, self.new) if os.path.basename(x) == "ChangeLog") - def scan_cvs(self): tree = cvstree.getentries("./", recursive=1) self.changed = cvstree.findchanged(tree, recursive=1, basedir="./") @@ -105,7 +101,6 @@ class Changes(object): self.removed = cvstree.findremoved(tree, recursive=1, basedir="./") del tree - def scan_svn(self): with repoman_popen("svn status") as f: svnstatus = f.readlines() @@ -123,7 +118,6 @@ class Changes(object): for elem in svnstatus if elem.startswith("D")] - def scan_git(self): with repoman_popen( "git diff-index --name-only " @@ -145,7 +139,6 @@ class Changes(object): self.removed = ["./" + elem[:-1] for elem in removed] del removed - def scan_bzr(self): with repoman_popen("bzr status -S .") as f: bzrstatus = f.readlines() @@ -163,7 +156,6 @@ class Changes(object): for elem in bzrstatus if elem and (elem[1:2] == "K" or elem[0:1] == "R")] - def scan_hg(self): with repoman_popen("hg status --no-status --modified .") as f: changed = f.readlines() diff --git a/pym/repoman/vcs/vcs.py b/pym/repoman/vcs/vcs.py index 6a9d455..180692c 100644 --- a/pym/repoman/vcs/vcs.py +++ b/pym/repoman/vcs/vcs.py @@ -256,8 +256,10 @@ class VCSSettings(object): # Disable copyright/mtime check if vcs does not preserve mtime (bug #324075). self.vcs_preserves_mtime = self.vcs in ('cvs',) - self.vcs_local_opts = repoman_settings.get("REPOMAN_VCS_LOCAL_OPTS", "").split() - self.vcs_global_opts = repoman_settings.get("REPOMAN_VCS_GLOBAL_OPTS") + self.vcs_local_opts = repoman_settings.get( + "REPOMAN_VCS_LOCAL_OPTS", "").split() + self.vcs_global_opts = repoman_settings.get( + "REPOMAN_VCS_GLOBAL_OPTS") if self.vcs_global_opts is None: if self.vcs in ('cvs', 'svn'): self.vcs_global_opts = "-q" @@ -266,5 +268,7 @@ class VCSSettings(object): self.vcs_global_opts = self.vcs_global_opts.split() if options.mode == 'commit' and not options.pretend and not self.vcs: - logging.info("Not in a version controlled repository; enabling pretend mode.") + logging.info( + "Not in a version controlled repository; " + "enabling pretend mode.") options.pretend = True diff --git a/pym/repoman/vcs/vcsstatus.py b/pym/repoman/vcs/vcsstatus.py index 0517c04..30e00ad 100644 --- a/pym/repoman/vcs/vcsstatus.py +++ b/pym/repoman/vcs/vcsstatus.py @@ -8,7 +8,6 @@ from portage import os from repoman._subprocess import repoman_popen - class VCSStatus(object): '''Determines the status of the vcs repositories to determine if files are not added''' @@ -19,43 +18,39 @@ class VCSStatus(object): self.eadded = [] self.qatracker = qatracker - def check(self, check_not_added, checkdir, checkdir_relative, xpkg): if self.vcs and check_not_added: vcscheck = getattr(self, 'check_%s' % self.vcs) vcscheck(checkdir, checkdir_relative, xpkg) - def post_git_hg(self, myf, xpkg): for l in myf: if l[:-1][-7:] == ".ebuild": - self.qatracker.add_error("ebuild.notadded", + self.qatracker.add_error( + "ebuild.notadded", os.path.join(xpkg, os.path.basename(l[:-1]))) myf.close() - def check_git(self, checkdir, checkdir_relative, xpkg): myf = repoman_popen( "git ls-files --others %s" % (portage._shell_quote(checkdir_relative),)) self.post_git_hg(myf, xpkg) - def check_hg(self, checkdir, checkdir_relative, xpkg): myf = repoman_popen( "hg status --no-status --unknown %s" % (portage._shell_quote(checkdir_relative),)) self.post_git_hg(myf, xpkg) - def check_cvs(self, checkdir, checkdir_relative, xpkg): try: myf = open(checkdir + "/CVS/Entries", "r") myl = myf.readlines() myf.close() except IOError: - self.qatracker.add_error("CVS/Entries.IO_error", - checkdir + "/CVS/Entries") + self.qatracker.add_error( + "CVS/Entries.IO_error", checkdir + "/CVS/Entries") return True for l in myl: if l[0] != "/": @@ -67,7 +62,6 @@ class VCSStatus(object): self.eadded.append(splitl[0][:-7]) return True - def check_svn(self, checkdir, checkdir_relative, xpkg): try: myf = repoman_popen( @@ -101,7 +95,6 @@ class VCSStatus(object): self.eadded.append(os.path.basename(l[:-7])) return True - def check_bzr(self, checkdir, checkdir_relative, xpkg): try: myf = repoman_popen( @@ -117,4 +110,4 @@ class VCSStatus(object): l = l.split()[-1] if l[-7:] == ".ebuild": self.eadded.append(os.path.basename(l[:-7])) - return True + return True