mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
bitbake: utils: add exec_flat_python_func()
Add a function that allows executing a flat python function (defined with def funcname(args): ...). (Bitbake rev: 20e6939ebcb62e08a9a7ad586a915dfe368136a0) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
8ff0840412
commit
cde28486b0
@@ -893,3 +893,25 @@ def multiprocessingpool(*args, **kwargs):
|
|||||||
|
|
||||||
return multiprocessing.Pool(*args, **kwargs)
|
return multiprocessing.Pool(*args, **kwargs)
|
||||||
|
|
||||||
|
def exec_flat_python_func(func, *args, **kwargs):
|
||||||
|
"""Execute a flat python function (defined with def funcname(args):...)"""
|
||||||
|
# Prepare a small piece of python code which calls the requested function
|
||||||
|
# To do this we need to prepare two things - a set of variables we can use to pass
|
||||||
|
# the values of arguments into the calling function, and the list of arguments for
|
||||||
|
# the function being called
|
||||||
|
context = {}
|
||||||
|
funcargs = []
|
||||||
|
# Handle unnamed arguments
|
||||||
|
aidx = 1
|
||||||
|
for arg in args:
|
||||||
|
argname = 'arg_%s' % aidx
|
||||||
|
context[argname] = arg
|
||||||
|
funcargs.append(argname)
|
||||||
|
aidx += 1
|
||||||
|
# Handle keyword arguments
|
||||||
|
context.update(kwargs)
|
||||||
|
funcargs.extend(['%s=%s' % (arg, arg) for arg in kwargs.iterkeys()])
|
||||||
|
code = 'retval = %s(%s)' % (func, ', '.join(funcargs))
|
||||||
|
comp = bb.utils.better_compile(code, '<string>', '<string>')
|
||||||
|
bb.utils.better_exec(comp, context, code, '<string>')
|
||||||
|
return context['retval']
|
||||||
|
|||||||
Reference in New Issue
Block a user