diff options
-rw-r--r-- | repoman/cnf/linechecks/linechecks.yaml | 35 | ||||
-rw-r--r-- | repoman/pym/repoman/modules/linechecks/config.py | 19 |
2 files changed, 52 insertions, 2 deletions
diff --git a/repoman/cnf/linechecks/linechecks.yaml b/repoman/cnf/linechecks/linechecks.yaml new file mode 100644 index 000000000..634381e80 --- /dev/null +++ b/repoman/cnf/linechecks/linechecks.yaml @@ -0,0 +1,35 @@ +--- +# linecheck_help.yaml + +# Repoman API version (do not edit) +version: 1 +# minimum +repoman_version: 2.3.3 + +# configuration file for the LineCheck plugins run via the multicheck +# scan module +errors: + COPYRIGHT_ERROR: 'Invalid Gentoo Copyright on line: %d' + LICENSE_ERROR: 'Invalid Gentoo/GPL License on line: %d' + ID_HEADER_ERROR: 'Stale CVS header on line: %d' + NO_BLANK_LINE_ERROR: 'Non-blank line after header on line: %d' + LEADING_SPACES_ERROR: 'Ebuild contains leading spaces on line: %d' + TRAILING_WHITESPACE_ERROR: 'Trailing whitespace error on line: %d' + READONLY_ASSIGNMENT_ERROR: 'Ebuild contains assignment to read-only variable on line: %d' + MISSING_QUOTES_ERROR: 'Unquoted Variable on line: %d' + NESTED_DIE_ERROR: 'Ebuild calls die in a subshell on line: %d' + PATCHES_ERROR: 'PATCHES is not a bash array on line: %d' + REDUNDANT_CD_S_ERROR: 'Ebuild has redundant cd ${S} statement on line: %d' + EMAKE_PARALLEL_DISABLED: 'Upstream parallel compilation bug (ebuild calls emake -j1 on line: %d)' + EMAKE_PARALLEL_DISABLED_VIA_MAKEOPTS: 'Upstream parallel compilation bug (MAKEOPTS=-j1 on line: %d)' + DEPRECATED_BINDNOW_FLAGS: 'Deprecated bindnow-flags call on line: %d' + EAPI_DEFINED_AFTER_INHERIT: 'EAPI defined after inherit on line: %d' + NO_AS_NEEDED: 'Upstream asneeded linking bug (no-as-needed on line: %d)' + PRESERVE_OLD_LIB: 'Ebuild calls deprecated preserve_old_lib on line: %d' + BUILT_WITH_USE: 'built_with_use on line: %d' + NO_OFFSET_WITH_HELPERS: 'Helper function is used with D, ROOT, ED, EROOT or EPREFIX on line: %d' + SANDBOX_ADDPREDICT: 'Ebuild calls addpredict on line: %d' + USEQ_ERROR: 'Ebuild calls deprecated useq function on line: %d' + HASQ_ERROR: 'Ebuild calls deprecated hasq function on line: %d' + URI_HTTPS: 'Ebuild uses http:// but should use https:// on line: %d' + diff --git a/repoman/pym/repoman/modules/linechecks/config.py b/repoman/pym/repoman/modules/linechecks/config.py index bde2e587f..6e4c5314e 100644 --- a/repoman/pym/repoman/modules/linechecks/config.py +++ b/repoman/pym/repoman/modules/linechecks/config.py @@ -15,6 +15,7 @@ from copy import deepcopy from repoman._portage import portage from repoman.config import load_config +from repoman import _not_installed # Avoid a circular import issue in py2.7 portage.proxy.lazyimport.lazyimport(globals(), @@ -46,8 +47,7 @@ class LineChecksConfig(object): @param configpaths: ordered list of filepaths to load ''' self.repo_settings = repo_settings - self.infopaths = [os.path.join(path, 'linechecks.yaml') for path in self.repo_settings.masters_list] - logging.debug("LineChecksConfig; configpaths: %s", self.infopaths) + self.infopaths = None self.info_config = None self._config = None self.usex_supported_eapis = None @@ -58,8 +58,22 @@ class LineChecksConfig(object): self.eclass_info = {} self.eclass_info_experimental_inherit = {} self.errors = {} + self.set_infopaths() self.load_checks_info() + def set_infopaths(self): + if _not_installed: + cnfdir = os.path.realpath(os.path.join(os.path.dirname( + os.path.dirname(os.path.dirname(os.path.dirname( + os.path.dirname(__file__))))), 'cnf/linechecks')) + else: + cnfdir = os.path.join(portage.const.EPREFIX or '/', 'usr/share/repoman/linechecks') + repomanpaths = [os.path.join(cnfdir, _file_) for _file_ in os.listdir(cnfdir)] + logging.debug("LineChecksConfig; repomanpaths: %s", repomanpaths) + repopaths = [os.path.join(path, 'linechecks.yaml') for path in self.repo_settings.masters_list] + self.infopaths = repomanpaths + repopaths + logging.debug("LineChecksConfig; configpaths: %s", self.infopaths) + def load_checks_info(self, infopaths=None): '''load the config files in order @@ -69,6 +83,7 @@ class LineChecksConfig(object): self.infopaths = infopaths elif not self.infopaths: logging.error("LineChecksConfig; Error: No linechecks.yaml files defined") + configs = load_config(self.infopaths, 'yaml', self.repo_settings.repoman_settings.valid_versions) if configs == {}: logging.error("LineChecksConfig: Failed to load a valid 'linechecks.yaml' file at paths: %s", self.infopaths) |