我如何弄清楚是什么导致了一个食谱被包括在内



我正在做一个yocto项目,在我的自定义层中,我有几十个食谱。一些食谱仍在开发中,并没有在我的图片的食谱中列出。然而,一个破碎的配方仍在构建中。我已经删除了build/tmp目录以及我的状态缓存并重新构建。但是这个坏配方还在被拉进来。我该怎么弄清楚这个坏配方是什么?bitbake-e根本没有显示我的食谱。

我很幸运地弄清楚了这一点,所以我真的很想在未来做这件事时掌握调试技巧。在我的案例中,坏的食谱有十几个PROVIDES,而另一个食谱依赖于其中一个。有没有一种方法可以让bitbake指示为什么要烘焙食谱?类似于";编译lib_bad.bb是因为lib_good.bb依赖于它">

您可以生成依赖关系图:

bitbake -g <packagename>
vim task-depends.dot

或图形版本(graphviz(:

bitbake -g <packagename> -u taskexp

因此,为了回答我自己的问题,可以提供以下几点:https://docs.yoctoproject.org/what-i-wish-id-known.html我的问题基本上是该清单第8项的关键。因此,我本可以做些什么来加快解开这个谜团。

当您运行bitbake -g core-image-minimal时,您会在构建目录中获得两个文件:task-depends.dotpn-buildlist

然后查找task-depends.dot文件并搜索包。grep <package> task-depends.dot第一个搜索结果将显示拉入坏包的罪魁祸首包的几个条目。

~/poky/build$ grep lib_bad task-depends.dot
"lib_good.do_build" -> "lib_bad.do_package_write_deb"
"lib_good.do_package" -> "lib_bad.do_packagedata"
"lib_good.do_prepare_recipe_sysroot" -> "lib_bad.do_populate_sysroot"
"lib_bad.do_build" -> "autoconf.do_package_write_deb"
etc...

因此,在搜索依赖关系图后,我们可以看到lib_good以某种方式将lib_bad拉入构建中。下一步是在该配方中查找其DEPENDS或RDEPENDS变量,并将它们与lib_bad在其PROVIDES变量中的内容进行比较。

最新更新