diff options
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r-- | bitbake/lib/bb/utils.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/bitbake/lib/bb/utils.py b/bitbake/lib/bb/utils.py index 86b9c724ed..50e9402a2b 100644 --- a/bitbake/lib/bb/utils.py +++ b/bitbake/lib/bb/utils.py | |||
@@ -21,9 +21,16 @@ BitBake Utility Functions | |||
21 | 21 | ||
22 | separators = ".-" | 22 | separators = ".-" |
23 | 23 | ||
24 | import re, fcntl, os, types, bb, string, stat, shutil | 24 | import re, fcntl, os, types, bb, string, stat, shutil, time |
25 | from commands import getstatusoutput | 25 | from commands import getstatusoutput |
26 | 26 | ||
27 | # Context used in better_exec, eval | ||
28 | _context = { | ||
29 | "os": os, | ||
30 | "bb": bb, | ||
31 | "time": time, | ||
32 | } | ||
33 | |||
27 | def explode_version(s): | 34 | def explode_version(s): |
28 | r = [] | 35 | r = [] |
29 | alpha_regexp = re.compile('^([a-zA-Z]+)(.*)$') | 36 | alpha_regexp = re.compile('^([a-zA-Z]+)(.*)$') |
@@ -164,13 +171,13 @@ def _print_trace(body, line): | |||
164 | bb.msg.error(bb.msg.domain.Util, "\t%.4d:%s" % (i, body[i-1]) ) | 171 | bb.msg.error(bb.msg.domain.Util, "\t%.4d:%s" % (i, body[i-1]) ) |
165 | 172 | ||
166 | 173 | ||
167 | def better_compile(text, file, realfile): | 174 | def better_compile(text, file, realfile, mode = "exec"): |
168 | """ | 175 | """ |
169 | A better compile method. This method | 176 | A better compile method. This method |
170 | will print the offending lines. | 177 | will print the offending lines. |
171 | """ | 178 | """ |
172 | try: | 179 | try: |
173 | return compile(text, file, "exec") | 180 | return compile(text, file, mode) |
174 | except Exception, e: | 181 | except Exception, e: |
175 | import bb,sys | 182 | import bb,sys |
176 | 183 | ||
@@ -193,7 +200,7 @@ def better_exec(code, context, text, realfile): | |||
193 | """ | 200 | """ |
194 | import bb,sys | 201 | import bb,sys |
195 | try: | 202 | try: |
196 | exec code in context | 203 | exec code in _context, context |
197 | except: | 204 | except: |
198 | (t,value,tb) = sys.exc_info() | 205 | (t,value,tb) = sys.exc_info() |
199 | 206 | ||
@@ -215,6 +222,9 @@ def better_exec(code, context, text, realfile): | |||
215 | 222 | ||
216 | raise | 223 | raise |
217 | 224 | ||
225 | def better_eval(source, locals): | ||
226 | return eval(source, _context, locals) | ||
227 | |||
218 | def Enum(*names): | 228 | def Enum(*names): |
219 | """ | 229 | """ |
220 | A simple class to give Enum support | 230 | A simple class to give Enum support |