summaryrefslogtreecommitdiffstats
path: root/pym/repoman
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2012-05-30 16:56:33 -0700
committerZac Medico <zmedico@gentoo.org>2012-05-30 16:56:33 -0700
commit7acbff42e2ff9a4521efb7fbf2cb69f17944b53c (patch)
tree17b3f9ed0ed2e976568d0735e1c4df4caff55e77 /pym/repoman
parent597826a1cabf654f9b3fff88425d04303e921577 (diff)
downloadportage-7acbff42e2ff9a4521efb7fbf2cb69f17944b53c.tar.gz
portage-7acbff42e2ff9a4521efb7fbf2cb69f17944b53c.tar.bz2
portage-7acbff42e2ff9a4521efb7fbf2cb69f17944b53c.zip
InheritEclass: support subclass inherited_api
Diffstat (limited to 'pym/repoman')
-rw-r--r--pym/repoman/checks.py23
1 files changed, 18 insertions, 5 deletions
diff --git a/pym/repoman/checks.py b/pym/repoman/checks.py
index 5d56888fd..cd21fd9af 100644
--- a/pym/repoman/checks.py
+++ b/pym/repoman/checks.py
@@ -461,13 +461,16 @@ class InheritEclass(LineCheck):
"""
def __init__(self, eclass, funcs=None, comprehensive=False,
- exempt_eclasses=None):
+ exempt_eclasses=None, **kwargs):
self._eclass = eclass
- self._funcs = funcs
self._comprehensive = comprehensive
self._exempt_eclasses = exempt_eclasses
- self._inherit_re = re.compile(r'^\s*inherit\s(.*\s)?%s(\s|$)' % self._eclass)
- self._func_re = re.compile(r'\b(' + '|'.join(self._funcs) + r')\b')
+ inherit_re = eclass
+ subclasses = _eclass_subclass_info.get(eclass)
+ if subclasses is not None:
+ inherit_re = '(%s)' % '|'.join([eclass] + list(subclasses))
+ self._inherit_re = re.compile(r'^\s*inherit\s(.*\s)?%s(\s|$)' % inherit_re)
+ self._func_re = re.compile(r'\b(' + '|'.join(funcs) + r')\b')
def new(self, pkg):
self.repoman_check_name = 'inherit.missing'
@@ -526,7 +529,9 @@ _eclass_info = {
'comprehensive': False,
# These are "eclasses are the whole ebuild" type thing.
- 'exempt_eclasses': frozenset(['toolchain', 'toolchain-binutils'])
+ 'exempt_eclasses': ('toolchain', 'toolchain-binutils'),
+
+ #'inherited_api': ('multilib', 'user',),
},
'flag-o-matic': {
@@ -574,6 +579,14 @@ _eclass_info = {
}
}
+_eclass_subclass_info = {}
+
+for k, v in _eclass_info.items():
+ inherited_api = v.get('inherited_api')
+ if inherited_api is not None:
+ for parent in inherited_api:
+ _eclass_subclass_info.setdefault(parent, set()).add(k)
+
class IUseUndefined(LineCheck):
"""
Make sure the ebuild defines IUSE (style guideline