如果在位烘烤文件中使用外部变量的if else语句

时间:2018-09-25 06:39:54

标签: yocto bitbake openembedded texas-instruments

嗨,在我的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等任务。另外,我能够确保每次都执行编译任务。

但是,我想对它进行一些限制。我要确保仅当 DEVMODE 变量设置为1时,相关任务的noexec和nostamp才适用。 Psuedo代码如下。

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链接,但是如果有条件,我将无法正常工作。

注意:可以使用BB_ENV_EXTRAWHITE很好,但是无法对bitbake文件的条件进行编码。

1 个答案:

答案 0 :(得分:0)

使用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'}"