89 lines
2.6 KiB
Plaintext
89 lines
2.6 KiB
Plaintext
some random snippets to incorporate...
|
|
|
|
|
|
|
|
######################
|
|
this was to assist with https://www.archlinux.org/news/perl-library-path-change/
|
|
the following was used to gen the /tmp/perlfix.pkgs.lst:
|
|
pacman -Qqo '/usr/lib/perl5/vendor_perl' >> /tmp/perlfix.pkgs.lst ; pacman -Qqo '/usr/lib/perl5/site_perl' >> /tmp/perlfix.pkgs.lst
|
|
######################
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
import datetime
|
|
import re
|
|
import os
|
|
import pprint
|
|
import subprocess
|
|
|
|
pkgs = []
|
|
|
|
pkglstfile = '/tmp/perlfix.pkgs.lst'
|
|
|
|
if os.path.isfile(pkglstfile):
|
|
with open(pkglstfile, 'r') as f:
|
|
pkgs = f.read().splitlines()
|
|
|
|
pkgd = {'rdeps': [],
|
|
'deps': [],
|
|
'remove': []}
|
|
|
|
for p in pkgs:
|
|
pkgchkcmd = ['apacman', '-Q', p]
|
|
with open(os.devnull, 'w') as devnull:
|
|
pkgchk = subprocess.run(pkgchkcmd, stdout = devnull, stderr = devnull).returncode
|
|
if pkgchk != 0: # not installed anymore
|
|
break
|
|
cmd = ['apacman',
|
|
'-Qi',
|
|
p]
|
|
stdout = subprocess.run(cmd, stdout = subprocess.PIPE).stdout.decode('utf-8').strip().splitlines()
|
|
#pprint.pprint(stdout)
|
|
d = {re.sub('\s', '_', k.strip().lower()):v.strip() for k, v in (dict(k.split(':', 1) for k in stdout).items())}
|
|
|
|
# some pythonizations..
|
|
# list of things(keys) that should be lists
|
|
ll = ['architecture', 'conflicts_with', 'depends_on', 'groups', 'licenses', 'make_depends',
|
|
'optional_deps', 'provides', 'replaces', 'required_by']
|
|
# and now actually listify
|
|
for k in ll:
|
|
if k in d.keys():
|
|
if d[k].lower() in ('none', ''):
|
|
d[k] = None
|
|
else:
|
|
d[k] = d[k].split()
|
|
# Not necessary... blah blah inconsistent whitespace blah blah.
|
|
#for k in ('build_date', 'install_date'):
|
|
# if k in d.keys():
|
|
# try:
|
|
# d[k] = datetime.datetime.strptime(d[k], '%a %d %b %Y %H:%M:%S %p %Z')
|
|
# except:
|
|
# d[k] = datetime.datetime.strptime(d[k], '%a %d %b %Y %H:%M:%S %p')
|
|
|
|
#pprint.pprint(d)
|
|
if d['required_by']:
|
|
pkgd['rdeps'].extend(d['required_by'])
|
|
else:
|
|
if d['install_reason'] != 'Explicitly installed':
|
|
pkgd['remove'].append(p)
|
|
if d['depends_on']:
|
|
pkgd['deps'].extend(d['depends_on'])
|
|
#break
|
|
|
|
for x in ('rdeps', 'deps'):
|
|
pkgd[x].sort()
|
|
|
|
#for p in pkgd['rdeps']:
|
|
# if p in pkgd['deps']:
|
|
# pkgd['
|
|
|
|
#print('DEPENDENCIES:')
|
|
#print('\n'.join(pkgd['deps']))
|
|
#print('\nREQUIRED BY:')
|
|
#print('\n'.join(pkgd['rdeps']))
|
|
#print('\nCAN REMOVE:')
|
|
print('\n'.join(pkgd['remove']))
|
|
|
|
#cmd = ['apacman', '-R']
|
|
#cmd.extend(pkgd['remove'])
|
|
#subprocess.run(cmd) |