跟踪bitbake中的变量赋值

时间:2012-11-21 08:41:50

标签: openembedded bitbake

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

1)如何验证使用file:// protocol

时使用的“当前”路径变量

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

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

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

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

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

3 个答案:

答案 0 :(得分:15)

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

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

最后,你可能有更好的运气询问openembedded邮件列表,而不是在stackoverflow上。

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

bitbake -e(食谱)| grep ^ WORKDIR =

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

快乐的烘焙! ;)

答案 1 :(得分:0)

事实证明,在BitBake的更高版本中有一个补丁,它在我目前正在使用的版本中不受支持: - (

答案 2 :(得分:0)

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

模型在这里:https://www.yoctoproject.org/toaster/build-configuration.html

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

希望这有帮助, 亚历