commit:     7eb2e3fe039783645a3feee9b7333f40e9159ee9
Author:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
AuthorDate: Fri Jan  8 01:29:42 2016 +0000
Commit:     Brian Dolbec <dolsen <AT> gentoo <DOT> org>
CommitDate: Sun Jan 10 22:59:32 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=7eb2e3fe

repoman: Create the ThirdPartyMirrors class plugin

 pym/repoman/checks/ebuilds/thirdpartymirrors.py    | 39 --------------
 pym/repoman/modules/scan/mirrors/__init__.py       | 23 +++++++++
 .../modules/scan/mirrors/thirdpartymirrors.py      | 59 ++++++++++++++++++++++
 pym/repoman/scanner.py                             |  6 +--
 4 files changed, 85 insertions(+), 42 deletions(-)

diff --git a/pym/repoman/checks/ebuilds/thirdpartymirrors.py 
b/pym/repoman/checks/ebuilds/thirdpartymirrors.py
deleted file mode 100644
index 848dfb9..0000000
--- a/pym/repoman/checks/ebuilds/thirdpartymirrors.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- coding:utf-8 -*-
-
-# import our initialized portage instance
-from repoman._portage import portage
-
-
-class ThirdPartyMirrors(object):
-
-       def __init__(self, repoman_settings, qatracker):
-               # TODO: Build a regex instead here, for the SRC_URI.mirror 
check.
-               self.thirdpartymirrors = {}
-               profile_thirdpartymirrors = 
repoman_settings.thirdpartymirrors().items()
-               for mirror_alias, mirrors in profile_thirdpartymirrors:
-                       for mirror in mirrors:
-                               if not mirror.endswith("/"):
-                                       mirror += "/"
-                               self.thirdpartymirrors[mirror] = mirror_alias
-
-               self.qatracker = qatracker
-
-       def check(self, myaux, relative_path):
-               # Check that URIs don't reference a server from 
thirdpartymirrors.
-               for uri in portage.dep.use_reduce(
-                       myaux["SRC_URI"], matchall=True, is_src_uri=True,
-                       eapi=myaux["EAPI"], flat=True):
-                       contains_mirror = False
-                       for mirror, mirror_alias in 
self.thirdpartymirrors.items():
-                               if uri.startswith(mirror):
-                                       contains_mirror = True
-                                       break
-                       if not contains_mirror:
-                               continue
-
-                       new_uri = "mirror://%s/%s" % (mirror_alias, 
uri[len(mirror):])
-                       self.qatracker.add_error(
-                               "SRC_URI.mirror",
-                               "%s: '%s' found in thirdpartymirrors, use '%s'" 
% (
-                                       relative_path, mirror, new_uri))
-               return

diff --git a/pym/repoman/modules/scan/mirrors/__init__.py 
b/pym/repoman/modules/scan/mirrors/__init__.py
new file mode 100644
index 0000000..37dfc53
--- /dev/null
+++ b/pym/repoman/modules/scan/mirrors/__init__.py
@@ -0,0 +1,23 @@
+# Copyright 2015-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+doc = """Mirrors plug-in module for repoman.
+Performs third party mirrors checks on ebuilds."""
+__doc__ = doc[:]
+
+
+module_spec = {
+       'name': 'mirrors',
+       'description': doc,
+       'provides':{
+               'mirrors-module': {
+                       'name': "thirdpartymirrors",
+                       'class': "ThirdPartyMirrors",
+                       'description': doc,
+                       'functions': ['check'],
+                       'func_desc': {
+                       },
+               },
+       }
+}
+

diff --git a/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py 
b/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py
new file mode 100644
index 0000000..9404e28
--- /dev/null
+++ b/pym/repoman/modules/scan/mirrors/thirdpartymirrors.py
@@ -0,0 +1,59 @@
+# -*- coding:utf-8 -*-
+
+# import our initialized portage instance
+from repoman._portage import portage
+from repoman.modules.scan.scanbase import ScanBase
+
+
+class ThirdPartyMirrors(ScanBase):
+
+       def __init__(self, **kwargs):
+               '''Class init
+
+               @param repo_settings: settings instance
+               @param qatracker: QATracker instance
+               '''
+               super(ThirdPartyMirrors, self).__init__(**kwargs)
+               repo_settings = kwargs.get('repo_settings')
+               self.qatracker = kwargs.get('qatracker')
+
+               # TODO: Build a regex instead here, for the SRC_URI.mirror 
check.
+               self.thirdpartymirrors = {}
+               profile_thirdpartymirrors = 
repo_settings.repoman_settings.thirdpartymirrors().items()
+               for mirror_alias, mirrors in profile_thirdpartymirrors:
+                       for mirror in mirrors:
+                               if not mirror.endswith("/"):
+                                       mirror += "/"
+                               self.thirdpartymirrors[mirror] = mirror_alias
+
+       def check(self, **kwargs):
+               '''Check that URIs don't reference a server from 
thirdpartymirrors
+
+               @param ebuild: Ebuild which we check (object).
+               @param src_uri_error: boolean
+               '''
+               ebuild = kwargs.get('ebuild')
+               if kwargs.get('src_uri_error'):
+                       return {'continue': True}
+               for uri in portage.dep.use_reduce(
+                       ebuild.metadata["SRC_URI"], matchall=True, 
is_src_uri=True,
+                       eapi=ebuild.eapi, flat=True):
+                       contains_mirror = False
+                       for mirror, mirror_alias in 
self.thirdpartymirrors.items():
+                               if uri.startswith(mirror):
+                                       contains_mirror = True
+                                       break
+                       if not contains_mirror:
+                               continue
+
+                       new_uri = "mirror://%s/%s" % (mirror_alias, 
uri[len(mirror):])
+                       self.qatracker.add_error(
+                               "SRC_URI.mirror",
+                               "%s: '%s' found in thirdpartymirrors, use '%s'" 
% (
+                                       ebuild.relative_path, mirror, new_uri))
+               return {'continue': False}
+
+       @property
+       def runInEbuilds(self):
+               '''Ebuild level scans'''
+               return (True, [self.check])

diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
index 6f3fb53..955440e 100644
--- a/pym/repoman/scanner.py
+++ b/pym/repoman/scanner.py
@@ -19,7 +19,6 @@ from portage.dep import Atom
 from portage.output import green
 from repoman.checks.ebuilds.checks import run_checks
 from repoman.checks.ebuilds.eclasses.ruby import RubyEclassChecks
-from repoman.checks.ebuilds.thirdpartymirrors import ThirdPartyMirrors
 from repoman.check_missingslot import check_missingslot
 from repoman.checks.ebuilds.use_flags import USEFlagChecks
 from repoman.checks.ebuilds.variables.description import DescriptionChecks
@@ -215,7 +214,6 @@ class Scanner(object):
                        self.modules[mod_class.__name__] = 
mod_class(**self.kwargs)
 
                # initialize our checks classes here before the big xpkg loop
-               self.thirdparty = 
ThirdPartyMirrors(self.repo_settings.repoman_settings, self.qatracker)
                self.use_flag_checks = USEFlagChecks(self.qatracker, uselist)
                self.rubyeclasscheck = RubyEclassChecks(self.qatracker)
                self.descriptioncheck = DescriptionChecks(self.qatracker)
@@ -301,7 +299,9 @@ class Scanner(object):
                        # initialize per ebuild plugin checks here
                        # need to set it up for ==> self.modules_list or some 
other ordered list
                        for mod in [('ebuild', 'Ebuild'), ('live', 
'LiveEclassChecks'),
-                               ('eapi', 'EAPIChecks'), ('ebuild_metadata', 
'EbuildMetadata')]:
+                               ('eapi', 'EAPIChecks'), ('ebuild_metadata', 
'EbuildMetadata'),
+                               ('thirdpartymirrors', 'ThirdPartyMirrors'),
+                               ]:
                                if mod[0]:
                                        mod_class = 
MODULE_CONTROLLER.get_class(mod[0])
                                        logging.debug("Initializing class name: 
%s", mod_class.__name__)

Reply via email to