summaryrefslogtreecommitdiff
path: root/bitbake/lib/bb/utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/utils.py')
-rw-r--r--bitbake/lib/bb/utils.py18
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
separators = ".-"
-import re, fcntl, os, types, bb, string, stat, shutil
+import re, fcntl, os, types, bb, string, stat, shutil, time
from commands import getstatusoutput
+# Context used in better_exec, eval
+_context = {
+ "os": os,
+ "bb": bb,
+ "time": time,
+}
+
def explode_version(s):
r = []
alpha_regexp = re.compile('^([a-zA-Z]+)(.*)$')
@@ -164,13 +171,13 @@ def _print_trace(body, line):
bb.msg.error(bb.msg.domain.Util, "\t%.4d:%s" % (i, body[i-1]) )
-def better_compile(text, file, realfile):
+def better_compile(text, file, realfile, mode = "exec"):
"""
A better compile method. This method
will print the offending lines.
"""
try:
- return compile(text, file, "exec")
+ return compile(text, file, mode)
except Exception, e:
import bb,sys
@@ -193,7 +200,7 @@ def better_exec(code, context, text, realfile):
"""
import bb,sys
try:
- exec code in context
+ exec code in _context, context
except:
(t,value,tb) = sys.exc_info()
@@ -215,6 +222,9 @@ def better_exec(code, context, text, realfile):
raise
+def better_eval(source, locals):
+ return eval(source, _context, locals)
+
def Enum(*names):
"""
A simple class to give Enum support