我正在Yocto 2.2下查看run.
文件中的食谱。一些Python具有以下结构:
def do_whatever(d):
# [...]
bb.build.exec_func("sub_function_foo", d)
bb.build.exec_func("sub_function_bar", d)
do_whatever(d)
def sub_function_foo(d):
[...]
def sub_function_bar(d):
[...]
执行的函数似乎是前向引用的。如果这与普通Python一样运行,那么在执行do_whatever
时,sub_function_foo
和sub_function_bar
尚未定义。
这应该如何运作?
bitbake exec_func
机制是否只是将作业排队以后运行,这是在处理完这个文件后发生的?
否则,这是由自定义加载器而不是Python处理的,它将定义置于顶级调用之前? (如果是这样,为什么要这样做而不是简单地以正确的顺序生成代码并将其交给Python?)
答案 0 :(得分:1)
python运行文件本身是由bitbake生成的调试输出,其中包含函数内容,它们实际上并未执行。因此,您可以使用它们进行调试,但它们不能以当前形式执行。这是我考虑修理的问题,但现在还不是优先考虑的问题。这也意味着将数据存储区的静态副本转储到文件中以构建像'd'这样的对象。
仅供参考,实际执行shell脚本运行文件。