【问题标题】:If else statement using external variable in a bitbake file在 bitbake 文件中使用外部变量的 if else 语句
【发布时间】:2019-02-28 17:09:51
【问题描述】:

嗨,在我的 bitbake 文件下,我想停止执行某些任务并希望每次都执行编译功能。为此,我做了以下更改。

do_compile[nostamp] = "1" 
do_clean[noexec] = "1" 
do_cleanall[noexec] = "1" 
do_cleansstate[noexec] = "1" 
do_fetch[noexec] = "1" 
do_patch[noexec] = "1" 
do_unpack[noexec] = "1"

而且效果很好。我能够停止执行诸如 clean、cleanall、cleansstate、fetch、patch 和 unpack 之类的任务。此外,我能够确保每次都运行编译任务。

但是,我想对此设置一些限制。我想确保相关任务的 noexec 和 nostamp 仅在 DEVMODE 变量设置为 1 时适用。伪代码如下。

if DEVMODE == 1 then
    do_compile[nostamp] = "1" 
    do_clean[noexec] = "1" 
    do_cleanall[noexec] = "1" 
    do_cleansstate[noexec] = "1" 
    do_fetch[noexec] = "1" 
    do_patch[noexec] = "1" 
    do_unpack[noexec] = "1"
endif

如何在 bitbake 文件中实现相同的功能?我已经尝试过 thisthis 链接,但我无法制作一个有效的 if 条件。

注意:使用 BB_ENV_EXTRAWHITE 没问题,但无法为 bitbake 文件编写工作 if 条件。

【问题讨论】:

  • 据我所知if 不是 bitbake 语法的一部分,而是 bitbake 函数的一部分。您可以使用条件语句创建函数。
  • 如果没有,我该如何实现这样的功能?
  • 通常你有两个 bb 文件...一个用于发布版本,另一个用于调试版本。
  • @SunnyShukla - 试试 L

标签: yocto bitbake openembedded texas-instruments


【解决方案1】:

使用python anonymous function 可以为您工作。

python () {
    #add "export DEVMODE=1" under conf/setenv
    #add DEVMODE under BB_ENV_EXTRAWHITE variable under conf/setenv

    if d.getVar("DEVMODE", True) == "1":
        d.setVarFlag("do_compile", 'nostamp', "1")
}

或者直接设置:

do_compile[nostamp] = "${@'1' if d.getVar('DEVMODE') == '1' else '0'}"

【讨论】:

  • 我已经编辑了答案,编辑后的代码对我有用,请接受编辑,以便我可以接受它作为答案。
  • @SunnyShukla,d.getVar() 现在不需要显式选项 'True',因为它是默认值。
猜你喜欢
  • 2022-08-16
  • 2018-01-09
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 2016-10-13
  • 2012-10-31
相关资源
最近更新 更多