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


任何人都可以更全面地向我解释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)

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

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


9718
2017-07-31 14:25


起源

多德。我也是。调试多么痛苦。我依赖于base-passwd:do_populate_sysroot_setscene无论我尝试什么都无法找到。据称他们都从基础配方继承了它。它只是不起作用,我正在撕裂我的头发。 - izak


答案:


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

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

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

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

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

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

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


13
2017-08-01 17:25