bitbake 配方中的变量扩展

Variable expansion in bitbake recipes

伙计们。

我一直在研究 yocto 构建过程,我注意到以下结构的用法:

PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"

我知道 ${} 表示变量扩展,grep 命令显示函数“vars_from_file”位于 bitbake/lib/bb/parse/__init__.py.

我想了解这个变量扩展是如何工作的,所以我研究了 bitbake 文件并发现:

我没看懂的是:

有人可以帮助我理解它们吗?

@ 符号用于内联 python 变量扩展的 bit bitbake,它基本上表明您将调用一个函数并扩展其结果,通常将其分配给一个变量,在您的情况下:

PN = "${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"

它将来自 bitbake python 模块解析的函数 vars_from_file 的结果分配给 PN(包名称),位于 bitbake/lib/bb/parse/

与任何其他 Python 模块一样,它会自动加载 init.py 并在导入时访问这些函数。

这些函数的特别之处在于它们可以访问 bitbake 的数据字典,称为“d”。

A​​FAIC 这是 bitbake 特有的。