Gentoo Archives: gentoo-commits

From: Brian Dolbec <dolsen@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/portage:repoman commit in: pym/repoman/, pym/repoman/modules/scan/metadata/
Date: Wed, 27 Jan 2016 23:15:38
Message-Id: 1453934661.adbae329b25f1c026b2a0f74e7c84809b14f7361.dolsen@gentoo
1 commit: adbae329b25f1c026b2a0f74e7c84809b14f7361
2 Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
3 AuthorDate: Sun Jan 3 10:35:49 2016 +0000
4 Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org>
5 CommitDate: Wed Jan 27 22:44:21 2016 +0000
6 URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=adbae329
7
8 repoman: Migrate code from _scan_ebuilds to a new EbuildMetadata class and check
9
10 pym/repoman/modules/scan/metadata/__init__.py | 11 +++++-
11 .../modules/scan/metadata/ebuild_metadata.py | 39 ++++++++++++++++++++++
12 pym/repoman/scanner.py | 27 +--------------
13 3 files changed, 50 insertions(+), 27 deletions(-)
14
15 diff --git a/pym/repoman/modules/scan/metadata/__init__.py b/pym/repoman/modules/scan/metadata/__init__.py
16 index ae9b18b..bacedf5 100644
17 --- a/pym/repoman/modules/scan/metadata/__init__.py
18 +++ b/pym/repoman/modules/scan/metadata/__init__.py
19 @@ -10,7 +10,7 @@ module_spec = {
20 'name': 'metadata',
21 'description': doc,
22 'provides':{
23 - 'metadata-module': {
24 + 'pkg-metadata': {
25 'name': "pkgmetadata",
26 'sourcefile': "pkgmetadata",
27 'class': "PkgMetadata",
28 @@ -19,6 +19,15 @@ module_spec = {
29 'func_desc': {
30 },
31 },
32 + 'ebuild-metadata': {
33 + 'name': "ebuild_metadata",
34 + 'sourcefile': "ebuild_metadata",
35 + 'class': "EbuildMetadata",
36 + 'description': doc,
37 + 'functions': ['check'],
38 + 'func_desc': {
39 + },
40 + },
41 }
42 }
43
44
45 diff --git a/pym/repoman/modules/scan/metadata/ebuild_metadata.py b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
46 new file mode 100644
47 index 0000000..143a40e
48 --- /dev/null
49 +++ b/pym/repoman/modules/scan/metadata/ebuild_metadata.py
50 @@ -0,0 +1,39 @@
51 +# -*- coding:utf-8 -*-
52 +
53 +'''Ebuild Metadata Checks'''
54 +
55 +import re
56 +import sys
57 +
58 +if sys.hexversion >= 0x3000000:
59 + basestring = str
60 +
61 +NON_ASCII_RE = re.compile(r'[^\x00-\x7f]')
62 +
63 +
64 +class EbuildMetadata(object):
65 +
66 + def __init__(self, **kwargs):
67 + self.qatracker = kwargs.get('qatracker')
68 +
69 + def check(self, **kwargs):
70 + ebuild = kwargs.get('ebuild')
71 + for k, v in ebuild.metadata.items():
72 + if not isinstance(v, basestring):
73 + continue
74 + m = NON_ASCII_RE.search(v)
75 + if m is not None:
76 + self.qatracker.add_error(
77 + "variable.invalidchar",
78 + "%s: %s variable contains non-ASCII "
79 + "character at position %s" %
80 + (ebuild.relative_path, k, m.start() + 1))
81 + return {'continue': False}
82 +
83 + @property
84 + def runInPkgs(self):
85 + return (False, [])
86 +
87 + @property
88 + def runInEbuilds(self):
89 + return (True, [self.check])
90
91 diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py
92 index 8873ef4..abff1af 100644
93 --- a/pym/repoman/scanner.py
94 +++ b/pym/repoman/scanner.py
95 @@ -5,8 +5,6 @@ from __future__ import print_function, unicode_literals
96 import copy
97 import io
98 import logging
99 -import re
100 -import sys
101 from itertools import chain
102 from pprint import pformat
103
104 @@ -47,18 +45,10 @@ MODULE_CONTROLLER = Modules(path=MODULES_PATH, namepath="repoman.modules.scan")
105 MODULE_NAMES = MODULE_CONTROLLER.module_names[:]
106
107
108 -
109 -if sys.hexversion >= 0x3000000:
110 - basestring = str
111 -
112 -NON_ASCII_RE = re.compile(r'[^\x00-\x7f]')
113 -
114 -
115 def sort_key(item):
116 return item[2].sub_path
117
118
119 -
120 class Scanner(object):
121 '''Primary scan class. Operates all the small Q/A tests and checks'''
122
123 @@ -314,7 +304,7 @@ class Scanner(object):
124 # initialize per ebuild plugin checks here
125 # need to set it up for ==> self.modules_list or some other ordered list
126 for mod in [('ebuild', 'Ebuild'), ('live', 'LiveEclassChecks'),
127 - ('eapi', 'EAPIChecks')]:
128 + ('eapi', 'EAPIChecks'), ('ebuild_metadata', 'EbuildMetadata')]:
129 if mod[0]:
130 mod_class = MODULE_CONTROLLER.get_class(mod[0])
131 logging.debug("Initializing class name: %s", mod_class.__name__)
132 @@ -341,21 +331,6 @@ class Scanner(object):
133 if y_ebuild_continue:
134 continue
135
136 -
137 - for k, v in dynamic_data['ebuild'].metadata.items():
138 - if not isinstance(v, basestring):
139 - continue
140 - m = NON_ASCII_RE.search(v)
141 - if m is not None:
142 - self.qatracker.add_error(
143 - "variable.invalidchar",
144 - "%s: %s variable contains non-ASCII "
145 - "character at position %s" %
146 - (dynamic_data['ebuild'].relative_path, k, m.start() + 1))
147 -
148 - if not dynamic_data['src_uri_error']:
149 - self.thirdparty.check(dynamic_data['ebuild'].metadata, dynamic_data['ebuild'].relative_path)
150 -
151 if dynamic_data['ebuild'].metadata.get("PROVIDE"):
152 self.qatracker.add_error("virtual.oldstyle", dynamic_data['ebuild'].relative_path)