summaryrefslogtreecommitdiffstats
path: root/check-licenses.py
diff options
context:
space:
mode:
Diffstat (limited to 'check-licenses.py')
-rwxr-xr-xcheck-licenses.py82
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())