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

时间:2015-07-31 14:25:52

标签: yocto bitbake openembedded

任何人都可以更全面地向我解释sstate缓存在yocto中的工作原理吗?

This explanation远非明确。

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

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)

当它找到工件或得到候选人,然后检查签名。我想知道setcene任务何时实际运行。

其他问题:当它在本地sstate_cache文件夹中查找并进入镜像时?

1 个答案:

答案 0 :(得分:13)

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

要回答您的问题,首先检查sstate-cache文件夹,然后检查镜像是否在本地找不到。

此缓存是基于一组输入构建的,这些输入被散列为“签名”,可以在$BUILD_DIR/tmp/stamps中找到,但请记住,您需要使用bitbake-dumpsigs来查看文件。查看bitbake-dumpsigsbitbake-diffsigs可以帮助您了解缓存的工作原理。此外,您的构建环境中的Understanding What Changed上还有一篇很棒的“提示和技巧”文章。

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

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

有用的提示:“当我们需要从头开始重建时,我们要么删除build / tmp,以便我们可以使用sstate-cache来加速构建,或者我们删除build / tmp和sstate-cache,这样就不会有缓存在构建过程中重复使用。“ 1

1 Salvador,Otavio和Daiane Angolini。 “6.2了解共享状态缓存。”使用Yocto项目进行嵌入式Linux开发