import fedora.client import yum from rpmUtils.miscutils import splitFilename # global for simplicity's sake pkgdb = fedora.client.pkgdb.PackageDB() def return_committers_by_pkg_name(pkgname): committers = [] p = pkgdb.get_owners(pkgname, collection='Fedora', collection_ver='devel')['packageListings'][0] for item in p['people']: if item['aclOrder']['commit']: committers.append(item['username']) if p['owner'] not in committers: committers.append(p['owner']) return committers my = yum.YumBase() my.repos.disableRepo('*') my.repos.enableRepo('rawhide') my.setCacheDir() my.doRepoSetup('rawhide') groups = ['core', 'critical-path-base', 'critical-path-gnome'] for grpid in groups: print grpid g = my.comps.return_group(grpid) for name in sorted(g.packages): pkg = my.pkgSack.searchNevra(name=name) if pkg: pkg = pkg[0] source_name = splitFilename(pkg.sourcerpm)[0] else: source_name = name # what the hell, why not try: comm = return_committers_by_pkg_name(source_name) except (fedora.client.pkgdb.PackageDBError, fedora.client.AppError), e: print "!! Missing pkg %s: %s" % (name, str(e)) continue if comm: print ' %s: %s' % (name, ', '.join(sorted(comm))) else: print ' %s: ORPHAN' % (name)