1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
import re
from repoman.modules.linechecks.base import LineCheck
class InheritDeprecated(LineCheck):
"""Check if ebuild directly or indirectly inherits a deprecated eclass."""
repoman_check_name = 'inherit.deprecated'
# deprecated eclass : new eclass (False if no new eclass)
deprecated_eclasses = {
"base": False,
"bash-completion": "bash-completion-r1",
"boost-utils": False,
"clutter": "gnome2",
"confutils": False,
"distutils": "distutils-r1",
"epatch": "(eapply since EAPI 6)",
"games": False,
"gems": "ruby-fakegem",
"gpe": False,
"gst-plugins-bad": "gstreamer",
"gst-plugins-base": "gstreamer",
"gst-plugins-good": "gstreamer",
"gst-plugins-ugly": "gstreamer",
"gst-plugins10": "gstreamer",
"ltprune": False,
"mono": "mono-env",
"python": "python-r1 / python-single-r1 / python-any-r1",
"ruby": "ruby-ng",
"versionator": "eapi7-ver (built-in since EAPI 7)",
"x-modular": "xorg-2",
}
_inherit_re = re.compile(r'^\s*inherit\s(.*)$')
def new(self, pkg):
self._errors = []
def check(self, num, line):
direct_inherits = None
m = self._inherit_re.match(line)
if m is not None:
direct_inherits = m.group(1)
if direct_inherits:
direct_inherits = direct_inherits.split()
if not direct_inherits:
return
for eclass in direct_inherits:
replacement = self.deprecated_eclasses.get(eclass)
if replacement is None:
pass
elif replacement is False:
self._errors.append(
"please migrate from "
"'%s' (no replacement) on line: %d" % (eclass, num + 1))
else:
self._errors.append(
"please migrate from "
"'%s' to '%s' on line: %d" % (eclass, replacement, num + 1))
def end(self):
for error in self._errors:
yield error
del self._errors
|