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



谁能更全面地解释一下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_cache文件夹和何时进入镜像?

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

为了回答您的问题,首先检查state-cache文件夹,如果没有在本地找到,则检查镜像。

这个缓存是基于一组输入构建的,这些输入被散列成"签名"。它可以在$BUILD_DIR/tmp/stamps中找到,但请记住,您需要bitbaker - dumpgs来查看该文件。了解bitbake-dumpsigsbitbake-diffsigs可以帮助您理解缓存的工作原理。还有一个很棒的"Tips"。Tricks"理解构建环境中发生了什么变化。

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

在跟踪依赖关系方面,例如为什么您的映像可能包含passwd, bitbake -g将给您一个依赖树,oe-pkgdata-util find-path可以帮助您了解哪个配方导致了最终映像上的给定二进制文件。

有用的提示:"当我们需要从头开始重建时,我们要么删除build/tmp,这样我们可以使用state-cache来加速构建,要么我们同时删除build/tmp和state-cache,这样在构建过程中没有缓存被重用。"1

1Salvador, Otavio和Daiane Angolini。6.2了解共享状态缓存嵌入式Linux开发与Yocto项目