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

waq*_*qas 7 bitbake yocto

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

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

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

And*_*ers 11

如果你的问题是关于永久性的变化,那么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手册


小智 1

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