#!/usr/bin/python import os import re import sys import glob from string import strip from time import gmtime, strftime rpmlint_path = "/usr/share/rpmlint" rpmlint_conf = os.path.join(rpmlint_path, "config") sys.path.append(rpmlint_path) import Config execfile(rpmlint_conf) valid_licenses = Config.getOption("ValidLicenses") specs = sorted(glob.glob("devel/*/*.spec")) total = len(specs) bogus = {} regex = '\s(?:and|or)\s|[()]' verbose = False if len(sys.argv[1:]) > 0: if sys.argv[1] in ['-v', '--verbose']: verbose = True for spec in specs: licenses = [re.sub("License:\s*", "", l).strip("\n") for l in open(spec).readlines() if l.startswith("License:")] for license in licenses: if license not in valid_licenses: bogus[spec] = [l for l in map(strip, re.split(regex, license)) if l != '' and l not in valid_licenses] if verbose: invalid = ' '.join(['"%s"' % b for b in bogus[spec]]) print '%s: %s' % (spec, invalid) percent = (len(bogus) / float(total)) * 100 if verbose: print '\nSummary:', print '%.2f%% of spec files (%d out of %d) have invalid licenses' % (percent, len(bogus), total), print '(as of %s)' % strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime())