Bitbake执行基于Python的运行文件的顺序?

时间:2017-12-04 22:26:39

标签: yocto bitbake

我正在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_foosub_function_bar尚未定义。

这应该如何运作?

bitbake exec_func机制是否只是将作业排队以后运行,这是在处理完这个文件后发生的?

否则,这是由自定义加载器而不是Python处理的,它将定义置于顶级调用之前? (如果是这样,为什么要这样做而不是简单地以正确的顺序生成代码并将其交给Python?)

1 个答案:

答案 0 :(得分:1)

python运行文件本身是由bitbake生成的调试输出,其中包含函数内容,它们实际上并未执行。因此,您可以使用它们进行调试,但它们不能以当前形式执行。这是我考虑修理的问题,但现在还不是优先考虑的问题。这也意味着将数据存储区的静态副本转储到文件中以构建像'd'这样的对象。

仅供参考,实际执行shell脚本运行文件。