summaryrefslogtreecommitdiffstats
path: root/docs/release/scripts/build/makelist.py
diff options
context:
space:
mode:
author Robbbert <pac0446@bigpond.net.au>2016-04-27 18:59:40 +1000
committer Robbbert <pac0446@bigpond.net.au>2016-04-27 18:59:40 +1000
commitbcd8558b02cb54eab92df98f14bf07221d6d358b (patch)
treec29211cecf250a791c074dfc3e1fc9a2d9a1a593 /docs/release/scripts/build/makelist.py
parent0d70c1f8cdb9e66fd7bc5bcad128e394a2345607 (diff)
0.173 Release Fileshbmame173
Diffstat (limited to 'docs/release/scripts/build/makelist.py')
-rw-r--r--docs/release/scripts/build/makelist.py81
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")