Blob Blame History Raw
#!/usr/bin/python
# Author: Athmane Madjoudj <athmanem@gmail.com>
# A script that search for CentOS branding issues in installed rpm
from __future__ import print_function
    
import rpm
import sys
import re
    
def is_valid_changelog_entry(entry):
    regex = re.compile(r"\w+\ ?\w*\ ?<\b[\w\.-]+@[\w\.-]+\.\w{2,4}\b>\ ?-?\ ?[\w_\.]+-[\w_\.]+")
    if regex.match(entry) is None:
        return False
    else:
        return True

def main():
    ts=rpm.ts()
    mi=ts.dbMatch()
    # Comment the following line to check all rpms
    mi.pattern("release", rpm.RPMMIRE_GLOB, "*centos*")
    ret=True
    print("Searching for CentOS branding issues in installed rpm...")
    for hdr in mi:
        if hdr['buildhost'][-11:] != '.centos.org':
            print("  Build host is not centos.org machine in: %s" % hdr['name'])
            ret=False
        if hdr['vendor'] != 'CentOS':
            print("  Vendor is not CentOS in: %s" % hdr['name'])
            ret=False
        if hdr['packager'] != 'CentOS BuildSystem <http://bugs.centos.org>':
            print("  Packager is not CentOS BuildSystem in: %s" % hdr['name'])
            ret=False
        try:
            changelog = hdr['changelogname'][0]
            if not is_valid_changelog_entry(changelog):
                 print("  Bad changelog entry in: %s" % hdr['name'])
                 ret=False
        except Exception, e:
            print("  Errors found when reading changelog entry of: %s" % hdr['name'])
            ret=False
    return ret
    
if __name__ == "__main__":
    if main():  
        print "All tests PASSED"
        sys.exit(0)
    else:
        print "Some tests FAILED"
        sys.exit(1)