在poky / build / tmp / work目录中编辑源代码是一种好习惯吗?因为如果我们不小心清理了,那么更改将被删除。
或者我们可以编辑“files”目录中的源代码以及配方文件,但由于大量文件,因此大多数代码都是压缩形式,因此我们需要再次解压缩和压缩以更改一行代码。
那么在yocto中编辑源代码的最佳方法是什么?
答案 0 :(得分:10)
如果你的问题是关于永久性的变化,那么Dan的答案是要遵循的。即将<recipe name>.bbappend
添加到您自己的图层中的配方中,您可以在其中添加
SRC_URI += "file://mypatch1.patch \
file://mypatch2.patch \
"
枚举你需要的所有补丁。
如果有大量补丁,那么分叉上游存储库并在fork中维护自己的分支可能是有意义的。在这种情况下,您可能希望引用自己的存储库,而不是上游存储库或tarball。
OTOH,如果你的问题更多是关于正在进行的工作;那么肯定,在oky/build/tmp/workoky/build/tmp/work/xxxx
中这样做会有效。 (很可能,它是大多数人长期以来一直在做的事情。)
然而,在最近的版本中有更好的方法(从1.8,fido)。新工具称为devtool
。您可以按如下方式使用它:
devtool modify -x <recipe-name> <path-to-unpack-source>
解压缩源并创建一个新的bbappend来从解压缩的源构建。它还在源目录中创建了一个git repo。
现在您可以修改来源了。您可以通过运行devtool build <recipe-name>
来测试构建修改后的源代码。在您满意后,使用git add ...
和git commit
将更改提交到本地仓库。一旦您将更改提交到本地存储库,您就可以运行:
devtool update-recipe <recipe-name>
更新有问题的食谱。如果您满意,可以运行devtool reset <recipe-name>
以删除临时bbappend。
答案 1 :(得分:1)
如果您不断手动“修补”给定的包,我建议您查看在单独的层中实现.bbappend文件,该文件使用do_patch函数(http://www.yoctoproject.org/docs/2.0/mega-manual/mega-manual.html#patching-dev-environment)来应用您的补丁。