Yocto 在bitbake文件中使用外部变量的If-else语句
嗨,在我的bitbake文件下,我想停止执行某些任务,并希望每次都执行编译函数。为此,我做了以下更改Yocto 在bitbake文件中使用外部变量的If-else语句,yocto,bitbake,openembedded,texas-instruments,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" 而且效果非常好。我能够停止执行诸如c
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文件中实现同样的效果?我已经尝试和链接,但我不能手工制作一个工作条件
注意:我可以使用BB_ENV_EXTRAWHITE,但我无法为bitbake文件编码工作条件。使用可以为您工作
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'}"
我知道,
如果
不是bitbake语法的一部分,而是bitbake函数的一部分。你可以用一个条件语句创建一个函数。如果不是,那么我如何实现这样的功能呢?通常你有两个bb文件。。。一个用于发布版本,另一个用于调试版本。我已经编辑了答案,编辑的代码对我有效,请接受编辑,以便我可以接受它作为答案。@SunnyShukla,d.getVar()现在不需要解释选项“True”,因为它是默认值。