]>
Commit | Line | Data |
---|---|---|
4710c53d | 1 | import re\r |
2 | import sys\r | |
3 | \r | |
4 | # Write the config.c file\r | |
5 | \r | |
6 | never = ['marshal', '__main__', '__builtin__', 'sys', 'exceptions', '_warnings']\r | |
7 | \r | |
8 | def makeconfig(infp, outfp, modules, with_ifdef=0):\r | |
9 | m1 = re.compile('-- ADDMODULE MARKER 1 --')\r | |
10 | m2 = re.compile('-- ADDMODULE MARKER 2 --')\r | |
11 | while 1:\r | |
12 | line = infp.readline()\r | |
13 | if not line: break\r | |
14 | outfp.write(line)\r | |
15 | if m1 and m1.search(line):\r | |
16 | m1 = None\r | |
17 | for mod in modules:\r | |
18 | if mod in never:\r | |
19 | continue\r | |
20 | if with_ifdef:\r | |
21 | outfp.write("#ifndef init%s\n"%mod)\r | |
22 | outfp.write('extern void init%s(void);\n' % mod)\r | |
23 | if with_ifdef:\r | |
24 | outfp.write("#endif\n")\r | |
25 | elif m2 and m2.search(line):\r | |
26 | m2 = None\r | |
27 | for mod in modules:\r | |
28 | if mod in never:\r | |
29 | continue\r | |
30 | outfp.write('\t{"%s", init%s},\n' %\r | |
31 | (mod, mod))\r | |
32 | if m1:\r | |
33 | sys.stderr.write('MARKER 1 never found\n')\r | |
34 | elif m2:\r | |
35 | sys.stderr.write('MARKER 2 never found\n')\r | |
36 | \r | |
37 | \r | |
38 | # Test program.\r | |
39 | \r | |
40 | def test():\r | |
41 | if not sys.argv[3:]:\r | |
42 | print 'usage: python makeconfig.py config.c.in outputfile',\r | |
43 | print 'modulename ...'\r | |
44 | sys.exit(2)\r | |
45 | if sys.argv[1] == '-':\r | |
46 | infp = sys.stdin\r | |
47 | else:\r | |
48 | infp = open(sys.argv[1])\r | |
49 | if sys.argv[2] == '-':\r | |
50 | outfp = sys.stdout\r | |
51 | else:\r | |
52 | outfp = open(sys.argv[2], 'w')\r | |
53 | makeconfig(infp, outfp, sys.argv[3:])\r | |
54 | if outfp != sys.stdout:\r | |
55 | outfp.close()\r | |
56 | if infp != sys.stdin:\r | |
57 | infp.close()\r | |
58 | \r | |
59 | if __name__ == '__main__':\r | |
60 | test()\r |