如何在 Yocto 中禁用每个配方的状态缓存

Mar*_* H. 2 bitbake yocto

我有一些自己编写的 yocto 配方,它们会产生 yocto sstate-cache 机制的问题(比如当依赖项发生变化时不重建配方)。有没有办法在每个配方的基础上禁用状态缓存?

在互联网上搜索我只能找到非常古老且现已损坏的机制:

https://patchwork.openembedded.org/patch/17039/

或者仅部分禁用功能:

https://patchwork.openembedded.org/patch/130719/

我的 Yocto 版本是 Zeus 及以上。

谢谢并欢呼!

Jus*_*tin 5

在食谱中:

SSTATE_SKIP_CREATION = "1"
Run Code Online (Sandbox Code Playgroud)

或者,从食谱之外(例如local.conf):

SSTATE_SKIP_CREATION_pn-recipefoo = "1"
SSTATE_SKIP_CREATION_pn-recipebar = "1"
Run Code Online (Sandbox Code Playgroud)

您可以使用 来验证配方的 sstate 是否存在oe-check-sstate,例如:

oe-check-sstate yourimage | grep recipefoo
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令删除配方的状态:

bitbake -c cleansstate recipefoo
Run Code Online (Sandbox Code Playgroud)

然而,令人担忧的是你的配方会干扰状态机制。确保每当源代码发生更改时,您都正确设置和更新包的版本和修订版。

如果您的配方源与 Yocto 元数据一起存储,请考虑使用externalsrc来引用它,以便 Yocto 更好地跟踪更改。