在Yocto中对源代码进行细微更改的最佳做法是什么

时间:2015-11-26 13:21:33

标签: yocto bitbake

在poky / build / tmp / work目录中编辑源代码是一种好习惯吗?因为如果我们不小心清理了,那么更改将被删除。

或者我们可以编辑“files”目录中的源代码以及配方文件,但由于大量文件,因此大多数代码都是压缩形式,因此我们需要再次解压缩和压缩以更改一行代码。

那么在yocto中编辑源代码的最佳方法是什么?

2 个答案:

答案 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。

另请参阅:Yocto manual on modifying source code

答案 1 :(得分:1)

如果您不断手动“修补”给定的包,我建议您查看在单独的层中实现.bbappend文件,该文件使用do_patch函数(http://www.yoctoproject.org/docs/2.0/mega-manual/mega-manual.html#patching-dev-environment)来应用您的补丁。