61 lines · 1.6 KB · Python
RawDownload
import re  # Write the config.c file never = ['marshal', '__main__', '__builtin__', 'sys', 'exceptions'] def makeconfig(infp, outfp, modules, with_ifdef=0):    m1 = re.compile('-- ADDMODULE MARKER 1 --')    m2 = re.compile('-- ADDMODULE MARKER 2 --')    while 1:        line = infp.readline()        if not line: break        outfp.write(line)        if m1 and m1.search(line):            m1 = None            for mod in modules:                if mod in never:                    continue                if with_ifdef:                    outfp.write("#ifndef init%s\n"%mod)                outfp.write('extern void init%s(void);\n' % mod)                if with_ifdef:                    outfp.write("#endif\n")        elif m2 and m2.search(line):            m2 = None            for mod in modules:                if mod in never:                    continue                outfp.write('\t{"%s", init%s},\n' %                            (mod, mod))    if m1:        sys.stderr.write('MARKER 1 never found\n')    elif m2:        sys.stderr.write('MARKER 2 never found\n')  # Test program. def test():    import sys    if not sys.argv[3:]:        print 'usage: python makeconfig.py config.c.in outputfile',        print 'modulename ...'        sys.exit(2)    if sys.argv[1] == '-':        infp = sys.stdin    else:        infp = open(sys.argv[1])    if sys.argv[2] == '-':        outfp = sys.stdout    else:        outfp = open(sys.argv[2], 'w')    makeconfig(infp, outfp, sys.argv[3:])    if outfp != sys.stdout:        outfp.close()    if infp != sys.stdin:        infp.close() if __name__ == '__main__':    test()