bitbake 有条件地包含 depends 语句

bitbake conditional inclusion of depends statement

如何在带有条件的 bitbake 文件中包含依赖行? 我想要如下内容:

if (some env varible)
  DEPENDS += "recipe-1"
else
  DEPENDS += "recipe-2'

我在 .bb 文件中试过以下:

DEPENDS += "${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}"

之前我将 ENV_VAR 导出到 BB_ENV_EXTRAWHITE

export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE ENV_VAR"

这仅在设置 ENV_VAR 时有效:

env ENV_VAR="value" bitbake test-recipe

如果未设置 ENV_VAR,则在解析 bitbake DEPENDS 行时会抛出错误

ExpansionError: Failure expanding variable DEPENDS, expression was
${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}  
which triggered exception SyntaxError: EOL while scanning string literal (DEPENDS, line 1)

尝试:

DEPENDS += "${@ 'recipe-2' if d.getVar('ENV_VAR') else 'recipe-1'}"

原因是 ${ENV_VAR} 被扩展为变量的值。如果未设置,则不会展开并触发您看到的错误。通过使用 getVar 你会得到一个结果,python 表达式的其余部分可以处理 None 或一个值。

请注意,有一些提议的更改可能会改进行为,使它更容易被人们使用和理解,但无论如何上述内容都会继续工作。

假设您有食谱,recipe-main 和 recipe-test,根据 USE_TEST_RECIPE 01 的值,您可以执行以下操作

DEPENDS_append += "${@base_conditional('USE_TEST_RECIPE', '1', 'recipe-test', 'recipe-main', d)}"