commit: 6fe1e8ceee67f8d91ac94c319c603b1955109267 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Sun Jan 3 18:28:58 2016 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Sat Jan 30 07:50:17 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=6fe1e8ce
repoman: Complete KeywordChecks migration pym/repoman/modules/scan/keywords/keywords.py | 47 ++++++++++++--------------- pym/repoman/scanner.py | 3 +- 2 files changed, 23 insertions(+), 27 deletions(-) diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py index 484d7d5..e34c891 100644 --- a/pym/repoman/modules/scan/keywords/keywords.py +++ b/pym/repoman/modules/scan/keywords/keywords.py @@ -19,6 +19,8 @@ class KeywordChecks(ScanBase): super(KeywordChecks, self).__init__(**kwargs) self.qatracker = kwargs.get('qatracker') self.options = kwargs.get('options') + self.repo_metadata = kwargs.get('repo_metadata') + self.profiles = kwargs.get('profiles') self.slot_keywords = {} def prepare(self, **kwargs): @@ -45,21 +47,19 @@ class KeywordChecks(ScanBase): live_ebuild = kwargs.get('live_ebuild') if not self.options.straight_to_stable: self._checkAddedWithStableKeywords( - package, ebuild, y_ebuild, keywords, changed) + xpkg, ebuild, y_ebuild, ebuild.keywords, changed) - self._checkForDroppedKeywords( - pkg, ebuild, ebuild_archs, live_ebuild) + self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs, live_ebuild) - self._checkForInvalidKeywords( - pkg, package, y_ebuild, kwlist, profiles) + self._checkForInvalidKeywords(ebuild, xpkg, y_ebuild) - self._checkForMaskLikeKeywords( - package, y_ebuild, keywords, kwlist) + self._checkForMaskLikeKeywords(xpkg, y_ebuild, ebuild.keywords) - self.slot_keywords[pkg.slot].update(ebuild_archs) + self.slot_keywords[pkg.slot].update(ebuild.archs) return {'continue': False} - def _isKeywordStable(self, keyword): + @staticmethod + def _isKeywordStable(keyword): return not keyword.startswith("~") and not keyword.startswith("-") def _checkAddedWithStableKeywords( @@ -88,9 +88,8 @@ class KeywordChecks(ScanBase): ebuild.relative_path, " ".join(sorted(dropped_keywords)))) - def _checkForInvalidKeywords( - self, pkg, package, y_ebuild, kwlist, profiles): - myuse = pkg._metadata["KEYWORDS"].split() + def _checkForInvalidKeywords(self, ebuild, xpkg, y_ebuild): + myuse = ebuild.keywords for mykey in myuse: if mykey not in ("-*", "*", "~*"): @@ -99,20 +98,16 @@ class KeywordChecks(ScanBase): if not self._isKeywordStable(myskey[:1]): myskey = myskey[1:] - if myskey not in kwlist: + if myskey not in self.repo_metadata['kwlist']: + self.qatracker.add_error("KEYWORDS.invalid", + "%s/%s.ebuild: %s" % (xpkg, y_ebuild, mykey)) + elif myskey not in self.profiles: self.qatracker.add_error( "KEYWORDS.invalid", - "%s/%s.ebuild: %s" % ( - package, y_ebuild, mykey)) - elif myskey not in profiles: - self.qatracker.add_error( - "KEYWORDS.invalid", - "%s/%s.ebuild: %s (profile invalid)" % ( - package, y_ebuild, mykey)) - - def _checkForMaskLikeKeywords( - self, package, y_ebuild, keywords, kwlist): + "%s/%s.ebuild: %s (profile invalid)" + % (xpkg, y_ebuild, mykey)) + def _checkForMaskLikeKeywords(self, xpkg, y_ebuild, keywords): # KEYWORDS="-*" is a stupid replacement for package.mask # and screws general KEYWORDS semantics if "-*" in keywords: @@ -121,12 +116,12 @@ class KeywordChecks(ScanBase): for kw in keywords: if kw[0] == "~": kw = kw[1:] - if kw in kwlist: + if kw in self.repo_metadata['kwlist']: haskeyword = True if not haskeyword: - self.qatracker.add_error( - "KEYWORDS.stupid", package + "/" + y_ebuild + ".ebuild") + self.qatracker.add_error("KEYWORDS.stupid", + "%s/%s.ebuild" % (xpkg, y_ebuild)) @property def runInPkgs(self): diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py index 27c1be9..f0a4bef 100644 --- a/pym/repoman/scanner.py +++ b/pym/repoman/scanner.py @@ -206,6 +206,7 @@ class Scanner(object): "uselist": uselist, "checks": self.checks, "repo_metadata": self.repo_metadata, + "profiles": self.profiles, } # initialize the plugin checks here self.modules = {} @@ -302,7 +303,7 @@ class Scanner(object): for mod in [('ebuild', 'Ebuild'), ('live', 'LiveEclassChecks'), ('eapi', 'EAPIChecks'), ('ebuild_metadata', 'EbuildMetadata'), ('thirdpartymirrors', 'ThirdPartyMirrors'), - ('description', 'DescriptionChecks'), + ('description', 'DescriptionChecks'), (None, 'KeywordChecks'), ]: if mod[0]: mod_class = MODULE_CONTROLLER.get_class(mod[0])