bitbake条件包含depends语句

see*_*333 5 python bitbake

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

if (some env varible)
  DEPENDS += "recipe-1"
else
  DEPENDS += "recipe-2'
Run Code Online (Sandbox Code Playgroud)

我在.bb文件中尝试过:

DEPENDS += "${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}"
Run Code Online (Sandbox Code Playgroud)

在此之前,我将ENV_VAR导出到BB_ENV_EXTRAWHITE

export BB_ENV_EXTRAWHITE="$BB_ENV_EXTRAWHITE ENV_VAR"
Run Code Online (Sandbox Code Playgroud)

仅在设置ENV_VAR时才有效:

env ENV_VAR="value" bitbake test-recipe
Run Code Online (Sandbox Code Playgroud)

如果未设置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)
Run Code Online (Sandbox Code Playgroud)

小智 8

尝试:

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

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

请注意,有一些建议的更改可能会改善行为,使人们可以更容易理解和理解,但上述情况无论如何都会继续有效.