执行位烘烤配方,丢弃sstate_cache是​​什么

时间:2018-08-14 10:05:42

标签: yocto bitbake build-system

我有一个yocto项目,在其中添加了一些配方,其中的某些功能在构建时至关重要(这些功能仅包含一些链接的创建,某些文件的“均衡性”)。尽管在第一次构建时就完成了所有操作,并将sstate_cache保存到shared / sstate_cache,以便执行这些配方。当我在构建系统上进行一些更改时,还要删除一些已构建的文件或hole build dir并重新运行构建,bitbake不会执行配方。 唯一的解决方案是:

bitbake -c cleanall <list_of_my_recipes_to_be_rerun>

所以我必须明确清理缓存以告诉bitbake重新运行它们。

所以我的问题是: 有什么方法可以明确设置要执行的配方,而不管共享缓存中保存了什么内容? 还是在本地将状态保存在构建目录中? 还是告诉bitbake不要保存配方的状态?

3 个答案:

答案 0 :(得分:2)

您可以在配方中设置BB_DONT_CACHE =“ 1”,使用-C选项重新运行配方,或者使任务校验和取决于您要更改的这些内容,因此当您更改它们时,它将自动重建。您也可以只清洁配方,然后使用--no-setscene进行烘烤。

答案 1 :(得分:1)

简便方法:

$ bitbake <recipe> -C unpack

这会生成配方,但会强制重新打包以重新运行,这意味着其他所有内容也必须重新运行。

但是,如果该食谱不适用于sstate,则说明您的食谱存在问题。

答案 2 :(得分:0)

  

无论共享缓存存储在什么内容上,是否都可以通过某种方式显式设置要执行的配方?

要强制执行配方而不管共享状态缓存(或其他任何内容)中的内容如何, 将-f | --force选项传递给bitbake命令,例如

bitbake -f [other_options...] recipe_name ...

请参见手册中的bitbake commmandline options

相关问题