diff options
Diffstat (limited to 'check-licenses.py')
-rwxr-xr-x | check-licenses.py | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/check-licenses.py b/check-licenses.py index 8894cdd..f18ca3e 100755 --- a/check-licenses.py +++ b/check-licenses.py @@ -3,25 +3,10 @@ """Report problems with License: tags in Fedora spec files. This script checks the License: tag in spec files. The default is to check spec -files in a checkout of the devel branch. Download a daily checkout seed from: +files in a checkout of the devel branch. You can use the get-cvs-tree script to +get a current checkout. -http://cvs.fedoraproject.org/webfiles/ - -You will need to fix up the CVS/Root entries: - -find devel -wholename '*/CVS/Root' | \ - xargs sed -i 's/^/:pserver:anonymous@cvs.fedora.redhat.com:/' - -To generate a report sorted by owner, you will need to grab PackageOwners.py -from the extras-repoclosure module in fedora CVS: - -http://cvs.fedoraproject.org/viewcvs/extras-repoclosure/?root=fedora - -You also need to create an FASauth.py file that contains your Fedora Account -System username and password. Something like: - -username = 'username' -password = 'password' +Finally, enter your Fedora Account System login info in FASauth.py. """ # TODO @@ -38,7 +23,7 @@ import string import optparse from time import gmtime, strftime from FASauth import username, password -from PackageOwners import PackageOwners +from fedora.tg.client import BaseClient, AuthError, ServerError blacklist = ['glibc32', 'glibc64', 'olpc-logos'] no_owner = '_No_Owner_in_PackageDB' @@ -95,43 +80,57 @@ def split_license(license): return map(string.strip, [l for l in regex.split(license) if l]) +def get_packages(): + try: + pkgdb_url = 'https://admin.fedoraproject.org/pkgdb' + pkgdb_client = BaseClient(pkgdb_url, username, password) + pkgdb_data = pkgdb_client.send_request('acls/bugzilla', auth=True) + packages = pkgdb_data['bugzillaAcls']['Fedora'] + except AuthError, e: + raise SystemExit('Authentication error: %s' % e) + except ServerError, e: + raise SystemExit('Server error: %s' % e) + + return packages + + def get_owners(): - owners = PackageOwners() - if not owners.FromURL(username=username, password=password): - print 'Unable to retrieve package owner data' - raise SystemExit(1) - addressmap = dict((v, k) for k, v in owners.usermap.iteritems()) - return owners, addressmap + try: + acct_url = 'https://admin.fedoraproject.org/accounts/' + acct_client = BaseClient(acct_url, username, password) + acct_data = acct_client.send_request('group/dump', auth=True) + owners = {} + for p in acct_data['people']: + user, addr, name = p + owners[user] = {'addr': addr, 'name': name} + except AuthError, e: + raise SystemExit('Authentication error: %s' % e) + except ServerError, e: + raise SystemExit('Server error: %s' % e) + + return owners -def status_by_owner(bogus, owners, addressmap, show_addrs): +def status_by_owner(bogus, owners, packages, show_addrs): bad = {} for srpm, licenses in bogus.items(): - owner = owners.GetOwner(srpm) - if owner: - owner = addressmap[owner] - else: - owner = no_owner + owner = packages[srpm]['owner'] bad.setdefault(owner, {}).setdefault(srpm, licenses) for owner, data in sorted(bad.items()): print owner, if show_addrs and owner != no_owner: - print '(%s)' % owners.usermap[owner].replace('@', ' at '), + print '(%s)' % owners[owner]['addr'].replace('@', ' at '), print '[%d]:' % len(data) for srpm, licenses in sorted(data.items()): print '\t%s: %s' % (srpm, ' '.join(['"%s"' % l for l in licenses])) print -def status_by_package(bogus, owners, addressmap): +def status_by_package(bogus, packages): for srpm, licenses in sorted(bogus.items()): - owner = owners.GetOwner(srpm) - if owner: - owner = addressmap[owner] - else: - owner = no_owner + owner = packages[srpm]['owner'] print '%s (%s): %s' % (srpm, owner, ' '.join(['"%s"' % l for l in licenses])) print @@ -205,11 +204,12 @@ def main(): bad = len(bogus) all = len(specs) percent = (bad / float(all)) * 100 - owners, addressmap = get_owners() + owners = get_owners() + packages = get_packages() if opts.owners: - status_by_owner(bogus, owners, addressmap, opts.addrs) + status_by_owner(bogus, owners, packages, opts.addrs) elif opts.packages: - status_by_package(bogus, owners, addressmap) + status_by_package(bogus, packages) if not opts.license_regex: datestr = strftime('%Y-%m-%d %H:%M UTC', gmtime()) |