【发布时间】:2022-01-27 13:49:13
【问题描述】:
伙计们。
我一直在研究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,结构体开头没有“@”的应用。
谁能帮我理解它们?
【问题讨论】: