我正在使用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”文件夹。
答案 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界面中,您将找到从构建中记录的数据。
希望这有帮助, 亚历