1 |
commit: 4a0492f739f88343c5f7f13b5321075852c70dd4 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Jan 3 18:28:58 2016 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 30 20:25:07 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=4a0492f7 |
7 |
|
8 |
repoman: Complete KeywordChecks migration |
9 |
|
10 |
pym/repoman/modules/scan/keywords/keywords.py | 47 ++++++++++++--------------- |
11 |
pym/repoman/scanner.py | 3 +- |
12 |
2 files changed, 23 insertions(+), 27 deletions(-) |
13 |
|
14 |
diff --git a/pym/repoman/modules/scan/keywords/keywords.py b/pym/repoman/modules/scan/keywords/keywords.py |
15 |
index 484d7d5..e34c891 100644 |
16 |
--- a/pym/repoman/modules/scan/keywords/keywords.py |
17 |
+++ b/pym/repoman/modules/scan/keywords/keywords.py |
18 |
@@ -19,6 +19,8 @@ class KeywordChecks(ScanBase): |
19 |
super(KeywordChecks, self).__init__(**kwargs) |
20 |
self.qatracker = kwargs.get('qatracker') |
21 |
self.options = kwargs.get('options') |
22 |
+ self.repo_metadata = kwargs.get('repo_metadata') |
23 |
+ self.profiles = kwargs.get('profiles') |
24 |
self.slot_keywords = {} |
25 |
|
26 |
def prepare(self, **kwargs): |
27 |
@@ -45,21 +47,19 @@ class KeywordChecks(ScanBase): |
28 |
live_ebuild = kwargs.get('live_ebuild') |
29 |
if not self.options.straight_to_stable: |
30 |
self._checkAddedWithStableKeywords( |
31 |
- package, ebuild, y_ebuild, keywords, changed) |
32 |
+ xpkg, ebuild, y_ebuild, ebuild.keywords, changed) |
33 |
|
34 |
- self._checkForDroppedKeywords( |
35 |
- pkg, ebuild, ebuild_archs, live_ebuild) |
36 |
+ self._checkForDroppedKeywords(pkg, ebuild, ebuild.archs, live_ebuild) |
37 |
|
38 |
- self._checkForInvalidKeywords( |
39 |
- pkg, package, y_ebuild, kwlist, profiles) |
40 |
+ self._checkForInvalidKeywords(ebuild, xpkg, y_ebuild) |
41 |
|
42 |
- self._checkForMaskLikeKeywords( |
43 |
- package, y_ebuild, keywords, kwlist) |
44 |
+ self._checkForMaskLikeKeywords(xpkg, y_ebuild, ebuild.keywords) |
45 |
|
46 |
- self.slot_keywords[pkg.slot].update(ebuild_archs) |
47 |
+ self.slot_keywords[pkg.slot].update(ebuild.archs) |
48 |
return {'continue': False} |
49 |
|
50 |
- def _isKeywordStable(self, keyword): |
51 |
+ @staticmethod |
52 |
+ def _isKeywordStable(keyword): |
53 |
return not keyword.startswith("~") and not keyword.startswith("-") |
54 |
|
55 |
def _checkAddedWithStableKeywords( |
56 |
@@ -88,9 +88,8 @@ class KeywordChecks(ScanBase): |
57 |
ebuild.relative_path, |
58 |
" ".join(sorted(dropped_keywords)))) |
59 |
|
60 |
- def _checkForInvalidKeywords( |
61 |
- self, pkg, package, y_ebuild, kwlist, profiles): |
62 |
- myuse = pkg._metadata["KEYWORDS"].split() |
63 |
+ def _checkForInvalidKeywords(self, ebuild, xpkg, y_ebuild): |
64 |
+ myuse = ebuild.keywords |
65 |
|
66 |
for mykey in myuse: |
67 |
if mykey not in ("-*", "*", "~*"): |
68 |
@@ -99,20 +98,16 @@ class KeywordChecks(ScanBase): |
69 |
if not self._isKeywordStable(myskey[:1]): |
70 |
myskey = myskey[1:] |
71 |
|
72 |
- if myskey not in kwlist: |
73 |
+ if myskey not in self.repo_metadata['kwlist']: |
74 |
+ self.qatracker.add_error("KEYWORDS.invalid", |
75 |
+ "%s/%s.ebuild: %s" % (xpkg, y_ebuild, mykey)) |
76 |
+ elif myskey not in self.profiles: |
77 |
self.qatracker.add_error( |
78 |
"KEYWORDS.invalid", |
79 |
- "%s/%s.ebuild: %s" % ( |
80 |
- package, y_ebuild, mykey)) |
81 |
- elif myskey not in profiles: |
82 |
- self.qatracker.add_error( |
83 |
- "KEYWORDS.invalid", |
84 |
- "%s/%s.ebuild: %s (profile invalid)" % ( |
85 |
- package, y_ebuild, mykey)) |
86 |
- |
87 |
- def _checkForMaskLikeKeywords( |
88 |
- self, package, y_ebuild, keywords, kwlist): |
89 |
+ "%s/%s.ebuild: %s (profile invalid)" |
90 |
+ % (xpkg, y_ebuild, mykey)) |
91 |
|
92 |
+ def _checkForMaskLikeKeywords(self, xpkg, y_ebuild, keywords): |
93 |
# KEYWORDS="-*" is a stupid replacement for package.mask |
94 |
# and screws general KEYWORDS semantics |
95 |
if "-*" in keywords: |
96 |
@@ -121,12 +116,12 @@ class KeywordChecks(ScanBase): |
97 |
for kw in keywords: |
98 |
if kw[0] == "~": |
99 |
kw = kw[1:] |
100 |
- if kw in kwlist: |
101 |
+ if kw in self.repo_metadata['kwlist']: |
102 |
haskeyword = True |
103 |
|
104 |
if not haskeyword: |
105 |
- self.qatracker.add_error( |
106 |
- "KEYWORDS.stupid", package + "/" + y_ebuild + ".ebuild") |
107 |
+ self.qatracker.add_error("KEYWORDS.stupid", |
108 |
+ "%s/%s.ebuild" % (xpkg, y_ebuild)) |
109 |
|
110 |
@property |
111 |
def runInPkgs(self): |
112 |
|
113 |
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py |
114 |
index f4c21d0..2c910a6 100644 |
115 |
--- a/pym/repoman/scanner.py |
116 |
+++ b/pym/repoman/scanner.py |
117 |
@@ -206,6 +206,7 @@ class Scanner(object): |
118 |
"uselist": uselist, |
119 |
"checks": self.checks, |
120 |
"repo_metadata": self.repo_metadata, |
121 |
+ "profiles": self.profiles, |
122 |
} |
123 |
# initialize the plugin checks here |
124 |
self.modules = {} |
125 |
@@ -302,7 +303,7 @@ class Scanner(object): |
126 |
for mod in [('ebuild', 'Ebuild'), ('live', 'LiveEclassChecks'), |
127 |
('eapi', 'EAPIChecks'), ('ebuild_metadata', 'EbuildMetadata'), |
128 |
('thirdpartymirrors', 'ThirdPartyMirrors'), |
129 |
- ('description', 'DescriptionChecks'), |
130 |
+ ('description', 'DescriptionChecks'), (None, 'KeywordChecks'), |
131 |
]: |
132 |
if mod[0]: |
133 |
mod_class = MODULE_CONTROLLER.get_class(mod[0]) |