任何人都可以更全面地向我解释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文件夹中查找并进入镜像时?
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开发