commit:     52b37c2ed257975158031b10bb74418f4e2cf8ae
Author:     Tom Wijsman <tomwij <AT> gentoo <DOT> org>
AuthorDate: Wed Jun  4 13:40:35 2014 +0000
Commit:     Tom Wijsman <tomwij <AT> gentoo <DOT> org>
CommitDate: Wed Jun  4 13:40:35 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=52b37c2e

repoman/main.py: Split "Live" checks to checks/ebuilds/eclass/live.py

---
 pym/repoman/checks/ebuilds/eclasses/live.py | 39 +++++++++++++++++++++++++
 pym/repoman/main.py                         | 45 ++++++++++++-----------------
 2 files changed, 57 insertions(+), 27 deletions(-)

diff --git a/pym/repoman/checks/ebuilds/eclasses/live.py 
b/pym/repoman/checks/ebuilds/eclasses/live.py
new file mode 100644
index 0000000..20c573e
--- /dev/null
+++ b/pym/repoman/checks/ebuilds/eclasses/live.py
@@ -0,0 +1,39 @@
+
+'''live.py
+Performs Live eclass checks
+'''
+
+from repoman.repos import has_global_mask
+
+
+class LiveEclassChecks(object):
+       '''Performs checks for the usage of Live eclasses in ebuilds'''
+
+       def __init__(self, qatracker):
+               '''
+               @param qatracker: QATracker instance
+               '''
+               self.qatracker = qatracker
+
+       def check(self, pkg, package, ebuild, y_ebuild, keywords, 
global_pmaskdict):
+               '''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 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.
+               '''
+               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 " % (
+                                       package, y_ebuild, bad_stable_keywords))
+
+               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

diff --git a/pym/repoman/main.py b/pym/repoman/main.py
index 62c1509..eb083ca 100755
--- a/pym/repoman/main.py
+++ b/pym/repoman/main.py
@@ -41,6 +41,7 @@ from portage.package.ebuild.digestgen import digestgen
 from repoman.argparser import parse_args
 from repoman.checks.directories.files import FileChecks
 from repoman.checks.ebuilds.checks import run_checks, checks_init
+from repoman.checks.ebuilds.eclasses.live import LiveEclassChecks
 from repoman.checks.ebuilds.fetches import FetchChecks
 from repoman.checks.ebuilds.keywords import KeywordChecks
 from repoman.checks.ebuilds.isebuild import IsEbuild
@@ -53,16 +54,17 @@ from repoman.ebuild import Ebuild
 from repoman.errors import err
 from repoman.modules.commit import repochecks
 from repoman.profile import check_profiles, dev_keywords, setup_profile
-from repoman.qa_data import (format_qa_output, format_qa_output_column, qahelp,
+from repoman.qa_data import (
+       format_qa_output, format_qa_output_column, qahelp,
        qawarnings, qacats, max_desc_len, missingvars,
        ruby_deprecated, suspect_virtual, suspect_rdepend, valid_restrict)
 from repoman.qa_tracker import QATracker
-from repoman.repos import has_global_mask, RepoSettings, repo_metadata
+from repoman.repos import RepoSettings, repo_metadata
 from repoman.scan import Changes, scan
 from repoman._subprocess import repoman_popen, repoman_getstatusoutput
 from repoman import utilities
-from repoman.vcs.vcs import (git_supports_gpg_sign, vcs_files_to_cps,
-       VCSSettings)
+from repoman.vcs.vcs import (
+       git_supports_gpg_sign, vcs_files_to_cps, VCSSettings)
 from repoman.vcs.vcsstatus import VCSStatus
 
 
@@ -264,18 +266,21 @@ if options.if_modified == "y":
                chain(changed.changed, changed.new, changed.removed),
                repolevel, reposplit, categories))
 
-#######  initialize our checks classes here before the big xpkg loop
+######################
+# initialize our checks classes here before the big xpkg loop
 manifester = Manifests(options, qatracker, repoman_settings)
 is_ebuild = IsEbuild(repoman_settings, repo_settings, portdb, qatracker)
-filescheck = FileChecks(qatracker, repoman_settings, repo_settings, portdb,
-       vcs_settings)
+filescheck = FileChecks(
+       qatracker, repoman_settings, repo_settings, portdb, vcs_settings)
 status_check = VCSStatus(vcs_settings, qatracker)
-fetchcheck = FetchChecks(qatracker, repoman_settings, repo_settings, portdb,
-       vcs_settings)
+fetchcheck = FetchChecks(
+       qatracker, repoman_settings, repo_settings, portdb, vcs_settings)
 pkgmeta = PkgMetadata(options, qatracker, repoman_settings)
 thirdparty = ThirdPartyMirrors(repoman_settings, qatracker)
 use_flag_checks = USEFlagChecks(qatracker, uselist)
 keywordcheck = KeywordChecks(qatracker)
+liveeclasscheck = LiveEclassChecks(qatracker)
+######################
 
 for xpkg in effective_scanlist:
        # ebuilds and digests added to cvs respectively.
@@ -449,25 +454,11 @@ for xpkg in effective_scanlist:
                                qatracker.add_error("KEYWORDS.stupid",
                                        xpkg + "/" + y_ebuild + ".ebuild")
 
-               """
-               Ebuilds that inherit a "Live" eclass 
(darcs,subversion,git,cvs,etc..) should
-               not be allowed to be marked stable
-               """
                if live_ebuild and repo_settings.repo_config.name == "gentoo":
-                       bad_stable_keywords = []
-                       for keyword in keywords:
-                               if not keyword.startswith("~") and \
-                                       not keyword.startswith("-"):
-                                       bad_stable_keywords.append(keyword)
-                               del keyword
-                       if bad_stable_keywords:
-                               qatracker.add_error("LIVEVCS.stable",
-                                       "%s/%s.ebuild with stable keywords:%s " 
%
-                                       (xpkg, y_ebuild, bad_stable_keywords))
-                       del bad_stable_keywords
-
-                       if keywords and not has_global_mask(pkg, 
global_pmaskdict):
-                               qatracker.add_error("LIVEVCS.unmasked", 
ebuild.relative_path)
+                       #######################
+                       liveeclasscheck.check(
+                               pkg, xpkg, ebuild, y_ebuild, keywords, 
global_pmaskdict)
+                       #######################
 
                if options.ignore_arches:
                        arches = [[

Reply via email to