blob: c5adeedf1a1abd85cfac8e9689f2e6c556e2c30f [file] [log] [blame]
'''ruby.py
Performs Ruby eclass checks
'''
from repoman.modules.scan.scanbase import ScanBase
class RubyEclassChecks(ScanBase):
'''Performs checks for the usage of Ruby eclasses in ebuilds'''
def __init__(self, **kwargs):
'''
@param qatracker: QATracker instance
'''
super(RubyEclassChecks, self).__init__(**kwargs)
self.qatracker = kwargs.get('qatracker')
self.repo_settings = kwargs.get('repo_settings')
self.old_ruby_eclasses = ["ruby-ng", "ruby-fakegem", "ruby"]
def check(self, **kwargs):
'''Check ebuilds that inherit the ruby eclasses
@param pkg: Package in which we check (object).
@param ebuild: Ebuild which we check (object).
@returns: dictionary
'''
pkg = kwargs.get('pkg').get()
ebuild = kwargs.get('ebuild').get()
is_inherited = lambda eclass: eclass in pkg.inherited
is_old_ruby_eclass_inherited = filter(
is_inherited, self.old_ruby_eclasses)
if is_old_ruby_eclass_inherited:
ruby_intersection = pkg.iuse.all.intersection(
self.repo_settings.qadata.ruby_deprecated)
if ruby_intersection:
for myruby in ruby_intersection:
self.qatracker.add_error(
"IUSE.rubydeprecated",
(ebuild.relative_path + ": Deprecated ruby target: %s")
% myruby)
return False
@property
def runInEbuilds(self):
'''Ebuild level scans'''
return (True, [self.check])