commit: 1521249252e81eb4eff9c37f498b51c52199592d Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> AuthorDate: Thu Apr 28 05:11:57 2016 +0000 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> CommitDate: Thu Apr 28 05:11:57 2016 +0000 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=15212492
repoman: Move the LiveEclasses.is_live() to the Ebuild class This removes another dynaic_data variable. It also belongs with the ebuild eclass as a primary source for that type of data. pym/repoman/modules/scan/ebuild/ebuild.py | 9 +++++++++ pym/repoman/modules/scan/eclasses/__init__.py | 1 - pym/repoman/modules/scan/eclasses/live.py | 22 +++------------------- pym/repoman/modules/scan/keywords/__init__.py | 1 - pym/repoman/modules/scan/keywords/keywords.py | 8 +++----- pym/repoman/modules/scan/metadata/__init__.py | 1 - .../modules/scan/metadata/ebuild_metadata.py | 3 +-- 7 files changed, 16 insertions(+), 29 deletions(-) diff --git a/pym/repoman/modules/scan/ebuild/ebuild.py b/pym/repoman/modules/scan/ebuild/ebuild.py index c247a7f..0277aa9 100644 --- a/pym/repoman/modules/scan/ebuild/ebuild.py +++ b/pym/repoman/modules/scan/ebuild/ebuild.py @@ -13,6 +13,7 @@ from repoman.qa_data import no_exec, allvars # import our initialized portage instance from repoman._portage import portage from portage import os +from portage.const import LIVE_ECLASSES pv_toolong_re = re.compile(r'[0-9]{19,}') @@ -220,6 +221,14 @@ class Ebuild(ScanBase): return self.continue_ @property + def is_live(self): + '''Test if the ebuild inherits a live eclass + + @returns: boolean + ''' + return set(LIVE_ECLASSES.intersection(self.inherited)) + + @property def runInPkgs(self): '''Package level scans''' return (True, [self.check_isebuild]) diff --git a/pym/repoman/modules/scan/eclasses/__init__.py b/pym/repoman/modules/scan/eclasses/__init__.py index 63bb86f..78d46e4 100644 --- a/pym/repoman/modules/scan/eclasses/__init__.py +++ b/pym/repoman/modules/scan/eclasses/__init__.py @@ -22,7 +22,6 @@ module_spec = { ], 'func_kwargs': { 'ebuild': (None, None), - 'live_ebuild': ('Future', 'UNSET'), 'pkg': (None, None), 'xpkg': (None, None), 'y_ebuild': (None, None), diff --git a/pym/repoman/modules/scan/eclasses/live.py b/pym/repoman/modules/scan/eclasses/live.py index 842cbab..1ce33c0 100644 --- a/pym/repoman/modules/scan/eclasses/live.py +++ b/pym/repoman/modules/scan/eclasses/live.py @@ -6,8 +6,6 @@ Performs Live eclass checks from repoman._portage import portage from repoman.modules.scan.scanbase import ScanBase -from portage.const import LIVE_ECLASSES - class LiveEclassChecks(ScanBase): '''Performs checks for the usage of Live eclasses in ebuilds''' @@ -20,27 +18,14 @@ class LiveEclassChecks(ScanBase): self.pmaskdict = kwargs.get('repo_metadata')['pmaskdict'] self.repo_settings = kwargs.get('repo_settings') - def is_live(self, **kwargs): - '''Test if the ebuild inherits a live eclass - - @returns: dictionary, including {live_ebuild} - ''' - ebuild = kwargs.get('ebuild').get() - # update the dynamic data - dyn_live = kwargs.get('live_ebuild') - dyn_live.set(LIVE_ECLASSES.intersection(ebuild.inherited)) - return False - def check(self, **kwargs): '''Ebuilds that inherit a "Live" eclass (darcs, subversion, git, cvs, etc..) should not be allowed to be marked stable @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: The keywords of the ebuild. - @param global_pmaskdict: A global dictionary of all the masks. @returns: dictionary ''' pkg = kwargs.get("pkg").result() @@ -48,9 +33,8 @@ class LiveEclassChecks(ScanBase): ebuild = kwargs.get('ebuild').get() y_ebuild = kwargs.get('y_ebuild') keywords = ebuild.keywords - live_ebuild = kwargs.get('live_ebuild').get() - if not live_ebuild and self.repo_settings.repo_config.name == "gentoo": + if not ebuild.is_live and self.repo_settings.repo_config.name == "gentoo": return False is_stable = lambda kw: not kw.startswith("~") and not kw.startswith("-") @@ -79,4 +63,4 @@ class LiveEclassChecks(ScanBase): @property def runInEbuilds(self): '''Ebuild level scans''' - return (True, [self.is_live, self.check]) + return (True, [self.check]) diff --git a/pym/repoman/modules/scan/keywords/__init__.py b/pym/repoman/modules/scan/keywords/__init__.py index 1c424ca..2223927 100644 --- a/pym/repoman/modules/scan/keywords/__init__.py +++ b/pym/repoman/modules/scan/keywords/__init__.py @@ -23,7 +23,6 @@ module_spec = { 'func_kwargs': { 'changed': (None, None), 'ebuild': ('Future', 'UNSET'), - 'live_ebuild': ('Future', 'UNSET'), 'pkg': ('Future', 'UNSET'), 'xpkg': None, 'y_ebuild': (None, None), diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py index af94c6f..c3c8058 100644 --- a/pym/repoman/modules/scan/keywords/keywords.py +++ b/pym/repoman/modules/scan/keywords/keywords.py @@ -37,7 +37,6 @@ class KeywordChecks(ScanBase): @param y_ebuild: Ebuild which we check (string). @param ebuild_archs: Just the architectures (no prefixes) of the ebuild. @param changed: Changes instance - @param live_ebuild: A boolean that determines if this is a live ebuild. @returns: dictionary ''' pkg = kwargs.get('pkg').get() @@ -45,12 +44,11 @@ class KeywordChecks(ScanBase): ebuild = kwargs.get('ebuild').get() y_ebuild = kwargs.get('y_ebuild') changed = kwargs.get('changed') - live_ebuild = kwargs.get('live_ebuild').get() if not self.options.straight_to_stable: self._checkAddedWithStableKeywords( xpkg, ebuild, y_ebuild, ebuild.keywords, changed) - self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs, live_ebuild) + self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs) self._checkForInvalidKeywords(ebuild, xpkg, y_ebuild) @@ -77,11 +75,11 @@ class KeywordChecks(ScanBase): (package, y_ebuild, " ".join(stable_keywords))) def _checkForDroppedKeywords( - self, pkg, ebuild, ebuild_archs, live_ebuild): + self, pkg, ebuild, ebuild_archs): previous_keywords = self.slot_keywords.get(pkg.slot) if previous_keywords is None: self.slot_keywords[pkg.slot] = set() - elif ebuild_archs and "*" not in ebuild_archs and not live_ebuild: + elif ebuild_archs and "*" not in ebuild_archs and not ebuild.is_live: dropped_keywords = previous_keywords.difference(ebuild_archs) if dropped_keywords: self.qatracker.add_error( diff --git a/pym/repoman/modules/scan/metadata/__init__.py b/pym/repoman/modules/scan/metadata/__init__.py index b090d6b..b656d7a 100644 --- a/pym/repoman/modules/scan/metadata/__init__.py +++ b/pym/repoman/modules/scan/metadata/__init__.py @@ -45,7 +45,6 @@ module_spec = { 'func_kwargs': { 'catdir': (None, None), 'ebuild': (None, None), - 'live_ebuild': (None, None), 'xpkg': (None, None), 'y_ebuild': (None, None), }, diff --git a/pym/repoman/modules/scan/metadata/ebuild_metadata.py b/pym/repoman/modules/scan/metadata/ebuild_metadata.py index e239b47..bbccedf 100644 --- a/pym/repoman/modules/scan/metadata/ebuild_metadata.py +++ b/pym/repoman/modules/scan/metadata/ebuild_metadata.py @@ -35,13 +35,12 @@ class EbuildMetadata(ScanBase): def missing(self, **kwargs): ebuild = kwargs.get('ebuild').get() - live_ebuild = kwargs.get('live_ebuild').get() for pos, missing_var in enumerate(missingvars): if not ebuild.metadata.get(missing_var): if kwargs.get('catdir') == "virtual" and \ missing_var in ("HOMEPAGE", "LICENSE"): continue - if live_ebuild and missing_var == "KEYWORDS": + if ebuild.is_live and missing_var == "KEYWORDS": continue myqakey = missingvars[pos] + ".missing" self.qatracker.add_error(myqakey, '%s/%s.ebuild'