def pickle_oe( oefile, oe ):
p = pickle.Pickler( file( "%s/%s" % ( cache, oefile ), "wb" ), -1 )
p.dump( oe )
- funcstr = data.getVar('__functions', oe)
- if funcstr:
- funcs = funcstr.split()
- for func in funcs:
- p.dump(eval(func, globals()))
def unpickle_oe( oefile ):
p = pickle.Unpickler( file( "%s/%s" % ( cache, oefile ), "rb" ) )
- return p.load()
+ oe = p.load()
+ funcstr = data.getVar('__functions__', oe)
+ if funcstr:
+ comp = compile(funcstr, "<pickled>", "exec")
+ exec comp in __builtins__
+ return oe
def collect_oefiles( progressCallback ):
"""Collect all available .oe build files"""
exec comp in __builtins__
__body__ = []
__inpython__ = False
+ funcs = data.getVar('__functions__', d) or ""
+ data.setVar('__functions__', "%s\n%s" % (funcs, text), d)
# fall through
if s[0] == '#': return # skip comments
m = __def_regexp__.match(s)
if m:
- funcname = m.group(1)
- funcs = data.getVar('__functions', d) or ""
- data.setVar('__functions', "%s %s" % (funcs, funcname), d)
__body__.append(s)
__inpython__ = True
return