2
0
mirror of https://github.com/xcat2/confluent.git synced 2024-11-25 19:10:10 +00:00
confluent/genesis/getlicenses.py
Jarrod Johnson 41c3c4fb5f Handle metapackages
If a metapackage gets pulled in
as related, do not let it mess up
the license list.
2022-08-11 14:09:55 -04:00

46 lines
1.0 KiB
Python

import subprocess
import sys
import shlex
def runcmd(cmd):
return subprocess.check_output(shlex.split(cmd)).decode('utf8').split('\n')
def getsrpm(rpm):
rpminfo = runcmd(f'rpm -qi {rpm}')
for inf in rpminfo:
if inf.startswith('Source RPM'):
srpm = inf.split(':', 1)[1].strip()
return srpm
srpmtorpm = {}
rpmtosrpm = {}
allrpmlist = runcmd('rpm -qa')
for rpm in allrpmlist:
if not rpm:
continue
srpm = getsrpm(rpm)
rpmtosrpm[rpm] = srpm
if srpm in srpmtorpm:
srpmtorpm[srpm].add(rpm)
else:
srpmtorpm[srpm] = {rpm}
with open(sys.argv[1]) as rpmlist:
rpmlist = rpmlist.read().split('\n')
licenses = set([])
for rpm in rpmlist:
if not rpm:
continue
srpm = rpmtosrpm[rpm]
for relrpm in srpmtorpm[srpm]:
liclist = runcmd(f'rpm -qL {relrpm}')
for lic in liclist:
if lic == '(contains no files)':
continue
licenses.add(lic)
for lic in sorted(licenses):
print(lic)