Yocto中的共享状态缓存是如何工作的?

Yocto中的共享状态缓存是如何工作的?,yocto,bitbake,openembedded,Yocto,Bitbake,Openembedded,有谁能更全面地向我解释一下sstate缓存在yocto中是如何工作的 这还远远不清楚 我不明白这种情况何时发生: NOTE: Preparing runqueue NOTE: Executing SetScene Tasks NOTE: Running setscene task 118 of 155 (virtual:native:/home/lulianhao/poky-build/edwin/poky/meta/recipes-devtools/pseudo/pseudo_git.bb:d

有谁能更全面地向我解释一下sstate缓存在yocto中是如何工作的

这还远远不清楚

我不明白这种情况何时发生:

NOTE: Preparing runqueue
NOTE: Executing SetScene Tasks
NOTE: Running setscene task 118 of 155 (virtual:native:/home/lulianhao/poky-build/edwin/poky/meta/recipes-devtools/pseudo/pseudo_git.bb:do_populate_sysroot_setscene)
NOTE: Running setscene task 119 of 155 (/home/lulianhao/poky-build/edwin/poky/meta/recipes-devtools/quilt/quilt-native_0.48.bb:do_populate_sysroot_setscene)
当它发现工件或得到候选对象时,然后检查签名。我想知道setscene任务何时实际运行


附加问题:当它在本地sstate_缓存文件夹中查找时,以及何时进入镜像?

Yocto项目手册有一节专门介绍

要回答您的问题,首先检查sstate缓存文件夹,然后检查镜像(如果本地未找到任何内容)

此缓存是基于一组输入构建的,这些输入散列为“签名”,可以在
$BUILD\u DIR/tmp/stamps
中找到,但请记住,您需要bitbake dumpsigs来查看文件。查看
bitbake dumpsigs
bitbake diffsigs
可以帮助您了解缓存的工作原理。还有一篇关于构建环境的“技巧和窍门”文章

虽然理解共享状态缓存可能需要一些时间,但它非常有价值,并且经过了严格的测试

在跟踪相关性方面,例如,为什么图像可能包含passwd,
bitbake-g
将为您提供一个相关性树,
oe pkgdata util find path
可以帮助您了解是哪个配方在结果图像上产生了给定的二进制文件

有用提示:“当我们需要从头开始重建时,我们要么删除build/tmp以便使用sstate缓存来加速构建,要么同时删除build/tmp和sstate缓存以便在构建过程中不重用缓存。”1


1萨尔瓦多、奥塔维奥和代安安哥拉。“6.2理解共享状态缓存。”Yocto项目嵌入式Linux开发。我也是。调试是多么痛苦啊。我依赖于base passwd:do_populate_sysroot_setscene,无论我如何尝试都找不到它。据说他们都是从基本配方继承来的。它不起作用了,我把头发扯下来了。是的。到目前为止,我还没有在yocto中找到任何写得很好的文档。作者似乎不明白我们还不知道。写得如此糟糕:(