Yocto 比特贝克&x27;基于Python的运行文件的执行顺序?

Yocto 比特贝克&x27;基于Python的运行文件的执行顺序?,yocto,bitbake,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): [...] 执

我正在查看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_anywhere
时,
sub_函数\u foo
sub_函数\u bar
尚未定义

这是怎么回事

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


或者,这是由自定义加载程序而不是Python处理的,Python将定义放在顶级调用之前?(如果是这样的话,为什么不首先以正确的顺序生成代码并将其交给Python?

Python运行文件本身是bitbake生成的调试输出,其中包含函数内容,它们实际上没有执行。因此,您可以使用它们进行调试,但它们不能以当前形式执行。这是我一直想解决的问题,但现在还不是重点。这还意味着将数据存储的静态副本转储到文件中,以构造像“d”这样的对象

仅供参考,shell脚本运行文件实际上是执行的