diff options
author | 2016-04-27 18:59:40 +1000 | |
---|---|---|
committer | 2016-04-27 18:59:40 +1000 | |
commit | bcd8558b02cb54eab92df98f14bf07221d6d358b (patch) | |
tree | c29211cecf250a791c074dfc3e1fc9a2d9a1a593 /docs/release/scripts/build/makelist.py | |
parent | 0d70c1f8cdb9e66fd7bc5bcad128e394a2345607 (diff) |
0.173 Release Fileshbmame173
Diffstat (limited to 'docs/release/scripts/build/makelist.py')
-rw-r--r-- | docs/release/scripts/build/makelist.py | 81 |
1 files changed, 76 insertions, 5 deletions
diff --git a/docs/release/scripts/build/makelist.py b/docs/release/scripts/build/makelist.py index 144dc636c8d..a9b450474e2 100644 --- a/docs/release/scripts/build/makelist.py +++ b/docs/release/scripts/build/makelist.py @@ -8,6 +8,9 @@ from __future__ import with_statement import sys drivlist = [] +sourcelist = [] +filter_addlist = [] +filter_removelist = [] def parse_file(srcfile): try: @@ -17,6 +20,7 @@ def parse_file(srcfile): return 1 in_comment = 0 linenum = 0 + curr_source = '' for line in fp.readlines(): drivname = '' linenum+=1 @@ -49,19 +53,81 @@ def parse_file(srcfile): sys.stderr.write("Importing drivers from '%s'\n" % drivname[1:]) parse_file(drivname[1:]) continue + if drivname[0]=='@': + curr_source= drivname[8:] + continue if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_') for c in drivname): sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile, linenum, drivname)) return 1 - else: - drivlist.append(drivname) + else: + if (curr_source == '') or (len(sourcelist)==0) or (curr_source in sourcelist): + drivlist.append(drivname) + return 0 + +def parse_filter_file(srcfile): + try: + fp = open(srcfile, 'rt') + except IOError: + sys.stderr.write("Unable to open filter file '%s'\n" % srcfile) + return 1 + in_comment = 0 + linenum = 0 + for line in fp.readlines(): + sourcename = '' + linenum+=1 + srcptr = 0 + while srcptr < len(line): + c = line[srcptr] + srcptr+=1 + if c==13 or c==10: + if c==13 and line[srcptr]==10: + srcptr+=1 + continue + if c==' ' or c==9: + continue + if in_comment==1 and c=='*' and line[srcptr]=='/' : + srcptr+=1 + in_comment = 0 + continue + if in_comment: + continue + if c=='/' and line[srcptr]=='*' : + srcptr+=1 + in_comment = 1 + continue + if c=='/' and line[srcptr]=='/' : + break + sourcename += c + sourcename = sourcename.strip() + if len(sourcename)>0: + if sourcename[0]=='#': + sys.stderr.write("Importing drivers from '%s'\n" % sourcename[1:]) + parse_filter_file(sourcename[1:]) + continue + if sourcename[0]=='+': + filter_addlist.append(sourcename[1:]) + continue + if sourcename[0]=='-': + filter_removelist.append(sourcename[1:]) + continue + if not all(((c >='a' and c<='z') or (c>='0' and c<='9') or c=='_' or c=='.' or c=='-') for c in sourcename): + sys.stderr.write("%s:%d - Invalid character in driver \"%s\"\n" % (srcfile, linenum, sourcename)) + return 1 + else: + sourcelist.append(sourcename) return 0 -if len(sys.argv) < 2: +if len(sys.argv) < 2 or len(sys.argv) > 3: print('Usage:') - print(' makelist <source.lst>') + print(' makelist <source.lst> [<filter.flt>]') sys.exit(0) +if len(sys.argv) == 3: + if parse_filter_file(sys.argv[2]) : + sys.exit(1) + sys.stderr.write("%d source file(s) found\n" % len(sourcelist)) + if parse_file(sys.argv[1]) : sys.exit(1) @@ -70,7 +136,12 @@ if len(drivlist)==0 : sys.stderr.write("No drivers found\n") sys.exit(1) -sys.stderr.write("%d drivers found\n" % len(drivlist)) +for x in filter_addlist: + drivlist.append(x) + +drivlist = [x for x in drivlist if (x not in filter_removelist)] + +sys.stderr.write("%d driver(s) found\n" % len(drivlist)) # add a reference to the ___empty driver drivlist.append("___empty") |