File: remove-unbuilt.py

package info (click to toggle)
llvm-toolchain-21 1%3A21.1.6-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 2,245,028 kB
  • sloc: cpp: 7,619,726; ansic: 1,434,018; asm: 1,058,748; python: 252,740; f90: 94,671; objc: 70,685; lisp: 42,813; pascal: 18,401; sh: 8,601; ml: 5,111; perl: 4,720; makefile: 3,675; awk: 3,523; javascript: 2,409; xml: 892; fortran: 770
file content (61 lines) | stat: -rw-r--r-- 1,897 bytes parent folder | download | duplicates (2)
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
51
52
53
54
55
56
57
58
59
60
61
#! /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-common-packages",
        dest="skip_common_packages",
        action="store_true",
        default=False,
        help="skip packages built by the next LLVM version",
    )
    parser.add_option(
        "--skip-ocaml-packages",
        dest="skip_ocaml_packages",
        action="store_true",
        default=False,
        help="skip OCAML packages",
    )
    (options, args) = parser.parse_args()

    if len(args) > 3 or len(args) < 3:
        parser.error("takes 2 arguments (<control file> <common list> <ocaml list>)")
    (control_file, common_list, ocaml_list) = args

    with open(common_list, "r") as f:
        commons = set([s.strip() for s in f.readlines()])

    with open(ocaml_list, "r") as f:
        ocamls = set([s.strip() for s in f.readlines()])

    sys.stderr.write("%d packages in the common list\n" % len(commons))
    sys.stderr.write("%d packages in the OCAML list\n" % len(ocamls))
    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 options.skip_common_packages and pkg in commons:
                    skip = True
                if options.skip_ocaml_packages and pkg in ocamls:
                    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()