1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
#! /usr/bin/python3
import optparse
import sys
def main():
usage = """usage: %prog [OPTIONS] <control file> <exclude list>
strip not-built packages from the control file.
"""
parser = optparse.OptionParser(usage)
parser.add_option("--skip-dbg-packages", dest="skip_dbg_packages",
action="store_true", default=False,
help="keep debug packages in the control file")
parser.add_option("--skip-arm32ml-packages", dest="skip_arm32ml_packages",
action="store_true", default=False,
help="keep arm32 multilib packages in the control file")
(options, args) = parser.parse_args()
if len(args) > 2 or len(args) < 2:
parser.error("takes 2 arguments (control file and exclude list)")
(control_file, exclude_list) = args
with open(exclude_list, 'r') as f:
excludes = set([s.strip() for s in f.readlines()])
sys.stderr.write("%d packages in the exclude list\n" % len(excludes))
skip = False
excluded = 0
with open(control_file, 'r') as f:
for line in f:
if line.startswith('Package:'):
pkg = line.split()[-1].strip()
if pkg in excludes:
skip = True
if options.skip_dbg_packages and '-dbg' in pkg:
skip = True
if options.skip_arm32ml_packages:
if 'libhf' in pkg or 'libsf' in pkg or 'multilib-arm' in pkg:
skip = True
if skip:
excluded += 1
if skip and line == '\n':
skip = False
continue
if not skip:
sys.stdout.write(line)
sys.stderr.write("%d packages excluded from the control file\n" % excluded)
if __name__ == '__main__':
main()
|