16

我正在使用 bitbake / openembedded,但我的食谱失败了,因为我认为某些路径变量最终没有正确设置。具体来说,我正在将文件添加到 SRC_URI,但错误表明尝试复制文件是使用错误的路径完成的。所以

1)如何验证使用 file:// 协议时使用的“当前”路径变量

2)鉴于我以某种方式确认了哪个变量用于搜索文件,我可以在我的依赖图中跟踪对所述变量的分配吗?我的意思是,bitbake 必须在一组配方文件中以某种顺序遇到变量的追加/前置,我想检查这些以找到我的错误

额外的问题:我认为我当前用于检测食谱中的错误的“调试方法”过于原始(例如,将 -D -D -D 添加到命令行,然后在成堆的输出中寻找提示) )。“专业人士”如何调试他们的 bitbake 食谱?

更新:我找到了一种更好的方法来调试我的食谱:

事实证明,在给定配方的“获取”任务成功完成后,会创建该配方的工作文件夹。此文件夹内是一个“temp”子文件夹,其中包含配方中每个任务的执行代码(例如 run.do_fetch.######)和结果(例如 log._do_fetch.######) .

检查“run..###”文件将告诉您任何变量的确切值,以及为该任务执行的确切命令/Python 函数。给定“运行”的输出存储在“log..###”文件中,其 ID/编号与“运行”文件相同。不知何故,当我阅读手册时,这个非常基本的信息并没有注册,但现在我总是在配方失败时查看“临时”文件夹。

4

3 回答 3

25

我想你已经发现了bitbake -e,对吧?这会转储特定于单个 bitbake“目标”(即配方)的环境。我相信FILESPATH这是 bitbake 用于查找file:// SRC_URI组件中指定的文件的关键变量。使用bitbake -e (recipe) | grep ^FILESPATH=将显示非常大的路径变量!

我不知道如何跟踪对该变量的分配,但有几种方法可以修改它。(实际上我记得一个 bitbake 补丁,它会bitbake -e用哪个文件修改哪个变量但无法回忆细节的输出来注释。在 oe 列表中询问。)无论如何,如果你=从上面的 grep 中删除符号,你可以看到其他方式FILESPATH可以修改。我认为这也包含在各种文档中。

最后,在openembedded mailing list上提问可能比在 stackoverflow 上提问要好。

bitbake -e日志文件(在 中找到${WORKDIR}/temp)是您最好的调试工具。(另请查看ack-grep。比grep一些与 bitbake 相关的用例更好。)你在哪里WORKDIR问?

bitbake -e (recipe) | grep ^WORKDIR=

一旦你熟悉了WORKDIR,你就会看到这个模式,而不必那样去寻找它。

快乐烘焙!;)

于 2012-11-21T23:22:34.187 回答
0

我建议在交互模式下使用 Toaster。在配置页面中,您可以跟踪变量分配历史。

样机在这里: https: //www.yoctoproject.org/toaster/build-configuration.html

要使用它,请在“source oe-init-build-env”之后运行“source toaster start”,然后在 Web 界面中,您将找到从构建中记录的数据。

希望这会有所帮助,亚历克斯

于 2015-02-10T11:07:34.547 回答
-1

事实证明,在更高版本的 BitBake 中有一个补丁可以做到这一点,只是我目前使用的那个不支持它:-(

于 2012-12-19T13:15:19.377 回答