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/modules/scan/metadata/, pym/repoman/
Date: Sun, 31 Jan 2016 20:03:58
Message-Id: 1454185524.4a4f67beab47c0adcc8048afb4159794a486faaf.dolsen@gentoo
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