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

16

能否有人更全面地解释一下在 Yocto 中 sstate 缓存如何工作?

这份说明并不是很清晰易懂。

我不明白什么情况下会出现这种情况:

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_cache文件夹,什么时候进入镜像?


2
兄弟,我也是。调试真是太痛苦了。我有一个依赖于base-passwd:do_populate_sysroot_setscene的问题,无论我尝试什么都找不到它。据说它们都从基础配方继承。但它就是不起作用,我都快抓狂了。 - izak
是的。到目前为止,我还没有找到关于Yocto中任何东西的良好文档。作者似乎不理解我们并不知道这些内容。写得太差了 :( - steve
1个回答

26

Yocto Project手册有一节专门介绍共享状态缓存

回答你的问题,sstate-cache文件夹首先被检查,如果本地没有找到,则会检查镜像。

此缓存是基于一组输入构建的,这些输入被散列为“签名”,可以在$BUILD_DIR/tmp/stamps中找到,但请注意,您需要使用bitbake-dumpsigs来查看文件。查看bitbake-dumpsigsbitbake-diffsigs可以帮助您了解缓存的工作原理。此外,在了解构建环境中发生了什么的“技巧与窍门”文章中有很棒的内容。

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

关于追踪依赖项,例如为什么您的镜像可能包含passwd,bitbake -g将提供一个依赖树,oe-pkgdata-util find-path可以帮助您了解哪个配方导致了结果镜像上的给定二进制文件。
有用的提示:“当我们需要从头开始重建时,我们要么删除build/tmp以便我们可以使用sstate-cache加速构建,要么同时删除build/tmp和sstate-cache以便在构建期间不重用任何缓存。”1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接