根据变量值排除yocto元层



我正在为一个个人项目玩yocto。我有一个叫做meta-nightcore的层,里面有几个用不同语言写的文件:bash, Python, C, c++和几个食谱。

当用户定义变量NIGHTCORE_ENABLED时,调用bitbake <image_name>时是否可能排除meta-nightcore?这个变量在调用source oe-init-build-env之前通过shell命令设置。

如果你有不同的想法,你也可以分享吗?

谢谢,致以最诚挚的问候。Duy Tran

是的,您可以将环境变量传递到构建环境中,然后使用它来有条件地添加额外的层。

你需要修改你的bblayers.conf来存储NIGHTCORE_ENABLED的默认值,并添加额外的层到BBLAYERS,如果它被设置为1:

NIGHTCORE_ENABLED ?= "0"  # overridden by env if specified in BB_ENV_EXTRAWHITE
NIGHTCORE_LAYERS ?= "/path/to/poky/meta-nightcore"
BBLAYERS ?= " 
/path/to/poky/meta 
/path/to/poky/meta-poky 
/path/to/poky/meta-yocto-bsp 
${@bb.utils.contains('NIGHTCORE_ENABLED', '1', '${NIGHTCORE_LAYERS}', '', d)} 
"

然后,您需要告诉Bitbake允许通过将环境变量添加到BB_ENV_EXTRAWHITE来将其捕获到Bitbake数据存储中:

export NIGHTCORE_ENABLED=1
export BB_ENV_EXTRAWHITE="${BB_ENV_EXTRAWHITE} NIGHTCORE_ENABLED"

你可以运行bitbake <image_name>.

因为bblayers.conf通常是在第一次运行source oe-init-build-env时生成的,所以您可能希望使用TEMPLATECONF来创建一个已经包含了这个额外逻辑的bblayers.conf.sample文件。

这里也有一些相关的答案:

是否可以将命令行变量传递到bitbake构建?

最新更新