1
2 """This module is designed to build makefiles."""
3
4 import os
5 import re
6 import sys
7 import tempfile
8 import datetime
9 import subprocess
10
11 from gmisclib import die
12 from gmisclib import avio
13 from gmisclib import fiatio
14 from gmisclib import gpkmisc
15
16 _debug = False
17 _log = None
18 makeflags = []
19 makefile = None
20 _makefd = None
21 _makeprog = ['make']
22 _did_header = False
23 DB_format = 'fiatio'
24
25
26 -def maketemp(dir='/tmp', prefix='maketemp', suffix=''):
31
32
37
38
40 global _did_header
41 if _did_header:
42 return
43 _write("# Makefile produced by gmisclib/makemake.py")
44 _write(".SUFFIXES:", "")
45 _write(".PHONY: all", "")
46 _did_header = True
47
48
52
53
55 """Log some strings, one per line."""
56 for x in s:
57 _log.writelines([x, '\n'])
58 _log.flush()
59
60
61
62 _qp = re.compile('[^a-zA-Z0-9_.+,/:-]')
64 def replf(x):
65 return '\\%s' % x
66 return re.sub(_qp, replf, s)
67
68
70 """Pass a variable to make."""
71 _header()
72 _write('%s = %s' % (k, v))
73
74
76 """Writes a rule into a makefile. All lines except the
77 first are indented.
78 """
79 _write('', a)
80 _write( *['\t%s' % t for t in b] )
81 _write('')
82
83
85 _header()
86 _write("")
87
88
92
93
110
112 return datetime.datetime.now().ctime()
113
114
118
119
120
122 for d in os.environ['PATH'].split(':'):
123 tmp = os.path.join(d, s)
124 if os.access(tmp, os.X_OK):
125 return tmp
126 raise FileNotFound, s
127
128
136
137
139 """
140 @rtype: str !Not an integer!
141 @return: a string representation of the integer number of cores that
142 the computer has.
143 """
144 n = 0
145 for x in open('/proc/cpuinfo', 'r'):
146 if x.split(':')[0].strip() == 'processor':
147 n += 1
148 assert n > 0, "Silly!"
149 return str(n)
150
151
160