【问题标题】:bitbake conditional inclusion of depends statement依赖语句的bitbake条件包含
【发布时间】:2016-05-18 01:10:19
【问题描述】:

如何在带有条件的 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)

【问题讨论】:

  • 它与python打交道吗?
  • 我在 bitbake 中使用 python 表达式。 DEPENDS += "${@ 'recipe-2' if '${ENV_VAR}' else 'recipe-1'}" 语法:DEPENDS += "${@ python expression}"
  • recipe-2' if '${ENV_VAR}' else 'recipe-1 不是正确的 Python 表达式,因为 ${ENV_VAR} 在 shell 中返回 ENV_VAR 的值。我错了吗?

标签: python bitbake


【解决方案1】:

试试:

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

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

请注意,有一些建议的更改可能会改善行为,使其对人们更有用和更容易理解,但以上内容将继续有效。

【讨论】:

    【解决方案2】:

    假设你有食谱,recipe-main & recipe-test 并且基于USE_TEST_RECIPE 01 的值,你可以执行以下操作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 2021-10-29
      相关资源
      最近更新 更多