commit: 44283d1ffb00766110c5d0cf54e213f4a51118bc 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: Wed Jan 6 04:08:22 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=44283d1f
repoman: Complete KeywordChecks migration pym/repoman/modules/scan/keywords/keywords.py | 64 +++++++++++++-------------- pym/repoman/scanner.py | 7 +-- 2 files changed, 32 insertions(+), 39 deletions(-) diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py index b11732d..867b886 100644 --- a/pym/repoman/modules/scan/keywords/keywords.py +++ b/pym/repoman/modules/scan/keywords/keywords.py @@ -14,6 +14,8 @@ class KeywordChecks(object): ''' 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): @@ -21,39 +23,38 @@ class KeywordChecks(object): self.slot_keywords = {} return {'continue': False} - def check( - self, pkg, package, ebuild, y_ebuild, keywords, ebuild_archs, changed, - live_ebuild, kwlist, profiles): + def check(self, **kwargs): '''Perform the check. @param pkg: Package in which we check (object). - @param package: Package in which we check (string). + @param xpkg: Package in which we check (string). @param ebuild: Ebuild which we check (object). @param y_ebuild: Ebuild which we check (string). - @param keywords: All the keywords (including -...) of the ebuild. @param ebuild_archs: Just the architectures (no prefixes) of the ebuild. @param changed: Changes instance - @param slot_keywords: A dictionary of keywords per slot. @param live_ebuild: A boolean that determines if this is a live ebuild. - @param kwlist: A list of all global keywords. - @param profiles: A list of all profiles. ''' + pkg = kwargs.get('pkg') + xpkg =kwargs.get('xpkg') + ebuild = kwargs.get('ebuild') + y_ebuild = kwargs.get('y_ebuild') + changed = kwargs.get('changed') + 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( @@ -82,9 +83,8 @@ class KeywordChecks(object): 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 ("-*", "*", "~*"): @@ -93,20 +93,16 @@ class KeywordChecks(object): if not self._isKeywordStable(myskey[:1]): myskey = myskey[1:] - if myskey not in kwlist: - self.qatracker.add_error( - "KEYWORDS.invalid", - "%s/%s.ebuild: %s" % ( - package, y_ebuild, mykey)) - elif myskey not in profiles: + 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 (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: @@ -115,12 +111,12 @@ class KeywordChecks(object): 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 a6a89eb..7452d76 100644 --- a/pym/repoman/scanner.py +++ b/pym/repoman/scanner.py @@ -201,6 +201,7 @@ class Scanner(object): "uselist": uselist, "checks": self.checks, "repo_metadata": self.repo_metadata, + "profiles": self.profiles, } # initialize the plugin checks here self.modules = {} @@ -299,7 +300,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]) @@ -330,10 +331,6 @@ class Scanner(object): print("**** finished plugin loop, continuing...") - self.modules['KeywordChecks'].check( - dynamic_data['pkg'], xpkg, dynamic_data['ebuild'], y_ebuild, dynamic_data['ebuild'].keywords, dynamic_data['ebuild'].archs, self.changed, - dynamic_data['live_ebuild'], self.repo_metadata['kwlist'], self.profiles) - if self.options.ignore_arches: arches = [[ self.repo_settings.repoman_settings["ARCH"], self.repo_settings.repoman_settings["ARCH"],