Bitbake 对基于 Python 的 运行 文件的执行顺序?
Bitbake's order of execution of Python-based run files?
我正在查看 run.
Yocto 2.2 下的食谱文件。其中一些 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?)
python 运行 文件本身是bitbake生成的调试输出,其中包含函数内容,它们并没有真正执行。因此您可以使用它们进行调试,但它们在当前形式下不可执行。这是我考虑过要解决的问题,但目前还不是优先事项。这也意味着将数据存储的静态副本转储到文件中以构建像 'd'.
这样的对象
仅供参考,实际执行shell脚本运行个文件
我正在查看 run.
Yocto 2.2 下的食谱文件。其中一些 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?)
python 运行 文件本身是bitbake生成的调试输出,其中包含函数内容,它们并没有真正执行。因此您可以使用它们进行调试,但它们在当前形式下不可执行。这是我考虑过要解决的问题,但目前还不是优先事项。这也意味着将数据存储的静态副本转储到文件中以构建像 'd'.
这样的对象仅供参考,实际执行shell脚本运行个文件