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 文件并发现:
oe-init-build-env调用oe-buildenv-internal,最后一个设置PYTHONPATH为bitbake/lib.
我推断 bitbake 使用 PYTHONPATH 搜索函数 vars_from_file
我没看懂的是:
- 变量展开中符号“@”的含义;
- 如果bitbake使用PYTHONPATH搜索函数,为什么没有通过绝对路径
${@bb.parse.__init__.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}
而不是"${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
- 这种变量扩展只适用于bitbake吗?。我在gnu website中搜索,没有结构体开头的“@”的应用。
有人可以帮助我理解它们吗?
@ 符号用于内联 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”。
AFAIC 这是 bitbake 特有的。
伙计们。
我一直在研究 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 文件并发现:
oe-init-build-env调用oe-buildenv-internal,最后一个设置PYTHONPATH为bitbake/lib.
我推断 bitbake 使用 PYTHONPATH 搜索函数 vars_from_file
我没看懂的是:
- 变量展开中符号“@”的含义;
- 如果bitbake使用PYTHONPATH搜索函数,为什么没有通过绝对路径
${@bb.parse.__init__.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}
而不是"${@bb.parse.vars_from_file(d.getVar('FILE', False),d)[0] or 'defaultpkgname'}"
- 这种变量扩展只适用于bitbake吗?。我在gnu website中搜索,没有结构体开头的“@”的应用。
有人可以帮助我理解它们吗?
@ 符号用于内联 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”。
AFAIC 这是 bitbake 特有的。