1 |
commit: 4a4f67beab47c0adcc8048afb4159794a486faaf |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Mon Jan 4 08:37:22 2016 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Sat Jan 30 20:25:24 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=4a4f67be |
7 |
|
8 |
repoman: Create a metadata UnusedCheck and final pkg checks |
9 |
|
10 |
Create a plugin loop for any final pkg checks. |
11 |
Create the one plugin for the unused use-descriptions in mteadata.xml. |
12 |
|
13 |
pym/repoman/modules/scan/metadata/__init__.py | 9 +++++++ |
14 |
pym/repoman/modules/scan/metadata/unused.py | 32 ++++++++++++++++++++++++ |
15 |
pym/repoman/scanner.py | 36 ++++++++++++++++++++------- |
16 |
3 files changed, 68 insertions(+), 9 deletions(-) |
17 |
|
18 |
diff --git a/pym/repoman/modules/scan/metadata/__init__.py b/pym/repoman/modules/scan/metadata/__init__.py |
19 |
index 4f376e1..f619764 100644 |
20 |
--- a/pym/repoman/modules/scan/metadata/__init__.py |
21 |
+++ b/pym/repoman/modules/scan/metadata/__init__.py |
22 |
@@ -55,6 +55,15 @@ module_spec = { |
23 |
'func_desc': { |
24 |
}, |
25 |
}, |
26 |
+ 'unused-metadata': { |
27 |
+ 'name': "unused", |
28 |
+ 'sourcefile': "unused", |
29 |
+ 'class': "UnusedCheck", |
30 |
+ 'description': doc, |
31 |
+ 'functions': ['check'], |
32 |
+ 'func_desc': { |
33 |
+ }, |
34 |
+ }, |
35 |
} |
36 |
} |
37 |
|
38 |
|
39 |
diff --git a/pym/repoman/modules/scan/metadata/unused.py b/pym/repoman/modules/scan/metadata/unused.py |
40 |
new file mode 100644 |
41 |
index 0000000..5eb6716 |
42 |
--- /dev/null |
43 |
+++ b/pym/repoman/modules/scan/metadata/unused.py |
44 |
@@ -0,0 +1,32 @@ |
45 |
+ |
46 |
+ |
47 |
+class UnusedCheck(object): |
48 |
+ |
49 |
+ def __init__(self, **kwargs): |
50 |
+ self.qatracker = kwargs.get('qatracker') |
51 |
+ |
52 |
+ def check(self, **kwargs): |
53 |
+ xpkg = kwargs.get('xpkg') |
54 |
+ muselist = kwargs.get('muselist') |
55 |
+ used_useflags = kwargs.get('used_useflags') |
56 |
+ # check if there are unused local USE-descriptions in metadata.xml |
57 |
+ # (unless there are any invalids, to avoid noise) |
58 |
+ if kwargs.get('allvalid'): |
59 |
+ for myflag in muselist.difference(used_useflags): |
60 |
+ self.qatracker.add_error( |
61 |
+ "metadata.warning", |
62 |
+ "%s/metadata.xml: unused local USE-description: '%s'" |
63 |
+ % (xpkg, myflag)) |
64 |
+ return {'continue': False} |
65 |
+ |
66 |
+ @property |
67 |
+ def runInPkgs(self): |
68 |
+ return (False, []) |
69 |
+ |
70 |
+ @property |
71 |
+ def runInEbuilds(self): |
72 |
+ return (False, []) |
73 |
+ |
74 |
+ @property |
75 |
+ def runInFinal(self): |
76 |
+ return (True, [self.check]) |
77 |
|
78 |
diff --git a/pym/repoman/scanner.py b/pym/repoman/scanner.py |
79 |
index ca1de5f..da9dcac 100644 |
80 |
--- a/pym/repoman/scanner.py |
81 |
+++ b/pym/repoman/scanner.py |
82 |
@@ -270,7 +270,6 @@ class Scanner(object): |
83 |
|
84 |
|
85 |
def _scan_ebuilds(self, ebuildlist, dynamic_data): |
86 |
- xpkg = dynamic_data['xpkg'] |
87 |
# detect unused local USE-descriptions |
88 |
dynamic_data['used_useflags'] = set() |
89 |
|
90 |
@@ -318,11 +317,30 @@ class Scanner(object): |
91 |
if y_ebuild_continue: |
92 |
continue |
93 |
|
94 |
- # check if there are unused local USE-descriptions in metadata.xml |
95 |
- # (unless there are any invalids, to avoid noise) |
96 |
- if dynamic_data['allvalid']: |
97 |
- for myflag in dynamic_data['muselist'].difference(dynamic_data['used_useflags']): |
98 |
- self.qatracker.add_error( |
99 |
- "metadata.warning", |
100 |
- "%s/metadata.xml: unused local USE-description: '%s'" |
101 |
- % (xpkg, myflag)) |
102 |
+ # Final checks |
103 |
+ # initialize per pkg plugin final checks here |
104 |
+ # need to set it up for ==> self.modules_list or some other ordered list |
105 |
+ xpkg_complete = False |
106 |
+ for mod in [('unused', 'UnusedChecks')]: |
107 |
+ if mod[0]: |
108 |
+ mod_class = MODULE_CONTROLLER.get_class(mod[0]) |
109 |
+ print("Initializing class name:", mod_class.__name__) |
110 |
+ self.modules[mod[1]] = mod_class(**self.kwargs) |
111 |
+ print("scan_ebuilds final checks: module:", mod[1]) |
112 |
+ do_it, functions = self.modules[mod[1]].runInFinal |
113 |
+ # print("do_it", do_it, "functions", functions) |
114 |
+ if do_it: |
115 |
+ for func in functions: |
116 |
+ print("\tRunning function:", func) |
117 |
+ rdata = func(**dynamic_data) |
118 |
+ if rdata.get('continue', False): |
119 |
+ xpkg_complete = True |
120 |
+ print("\t>>> Continuing") |
121 |
+ break |
122 |
+ #print("rdata:", rdata) |
123 |
+ dynamic_data.update(rdata) |
124 |
+ #print("dynamic_data", dynamic_data) |
125 |
+ |
126 |
+ if xpkg_complete: |
127 |
+ return |
128 |
+ return |