commit:     8e7971169c23a43696e020433a9f205abf98ee76
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Sat Apr 30 02:21:32 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sat Apr 30 02:21:32 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=8e797116

repoman: Fix logic error causing the live eclass checks to run for a non-live 
ebuild

The logic inverting the original live eclass checks was not working.
Restore the live_ebuild variable instead of the is_live().
Restore the original if logic and split off the actual code to another function 
called like the 
original code did.

 pym/repoman/modules/scan/ebuild/ebuild.py            | 10 ++--------
 pym/repoman/modules/scan/eclasses/live.py            |  8 +++++---
 pym/repoman/modules/scan/keywords/keywords.py        |  2 +-
 pym/repoman/modules/scan/metadata/ebuild_metadata.py |  2 +-
 4 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/pym/repoman/modules/scan/ebuild/ebuild.py 
b/pym/repoman/modules/scan/ebuild/ebuild.py
index 0277aa9..7b31fcd 100644
--- a/pym/repoman/modules/scan/ebuild/ebuild.py
+++ b/pym/repoman/modules/scan/ebuild/ebuild.py
@@ -45,6 +45,7 @@ class Ebuild(ScanBase):
                self.metadata = None
                self.eapi = None
                self.inherited = None
+               self.live_ebuild = None
                self.keywords = None
                self.pkgs = {}
 
@@ -109,6 +110,7 @@ class Ebuild(ScanBase):
                self.metadata = self.pkg._metadata
                self.eapi = self.metadata["EAPI"]
                self.inherited = self.pkg.inherited
+               self.live_ebuild = LIVE_ECLASSES.intersection(self.inherited)
                self.keywords = self.metadata["KEYWORDS"].split()
                self.archs = set(kw.lstrip("~") for kw in self.keywords if not 
kw.startswith("-"))
                return False
@@ -221,14 +223,6 @@ 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/live.py 
b/pym/repoman/modules/scan/eclasses/live.py
index 1ce33c0..0036f10 100644
--- a/pym/repoman/modules/scan/eclasses/live.py
+++ b/pym/repoman/modules/scan/eclasses/live.py
@@ -34,15 +34,17 @@ class LiveEclassChecks(ScanBase):
                y_ebuild = kwargs.get('y_ebuild')
                keywords = ebuild.keywords
 
-               if not ebuild.is_live and self.repo_settings.repo_config.name 
== "gentoo":
-                       return False
+               if ebuild.live_ebuild and self.repo_settings.repo_config.name 
== "gentoo":
+                       return self.check_live(pkg, package, ebuild, y_ebuild)
+               return False
 
+       def check_live(pkg, package, ebuild, y_ebuild):
                is_stable = lambda kw: not kw.startswith("~") and not 
kw.startswith("-")
                bad_stable_keywords = list(filter(is_stable, keywords))
 
                if bad_stable_keywords:
                        self.qatracker.add_error(
-                               "LIVEVCS.stable", "%s/%s.ebuild with stable 
keywords:%s " % (
+                               "LIVEVCS.stable", "%s/%s.ebuild with stable 
keywords :%s" % (
                                        package, y_ebuild, bad_stable_keywords))
 
                good_keywords_exist = len(bad_stable_keywords) < len(keywords)

diff --git a/pym/repoman/modules/scan/keywords/keywords.py 
b/pym/repoman/modules/scan/keywords/keywords.py
index c3c8058..7cb2fe9 100644
--- a/pym/repoman/modules/scan/keywords/keywords.py
+++ b/pym/repoman/modules/scan/keywords/keywords.py
@@ -79,7 +79,7 @@ class KeywordChecks(ScanBase):
                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 
ebuild.is_live:
+               elif ebuild_archs and "*" not in ebuild_archs and not 
ebuild.live_ebuild:
                        dropped_keywords = 
previous_keywords.difference(ebuild_archs)
                        if dropped_keywords:
                                self.qatracker.add_error(

diff --git a/pym/repoman/modules/scan/metadata/ebuild_metadata.py 
b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
index bbccedf..e991a30 100644
--- a/pym/repoman/modules/scan/metadata/ebuild_metadata.py
+++ b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
@@ -40,7 +40,7 @@ class EbuildMetadata(ScanBase):
                                if kwargs.get('catdir') == "virtual" and \
                                        missing_var in ("HOMEPAGE", "LICENSE"):
                                        continue
-                               if ebuild.is_live and missing_var == "KEYWORDS":
+                               if ebuild.live_ebuild and missing_var == 
"KEYWORDS":
                                        continue
                                myqakey = missingvars[pos] + ".missing"
                                self.qatracker.add_error(myqakey, '%s/%s.ebuild'

Reply via email to