如何在Buildroot中将补丁应用到软件包?
-
28-10-2019 - |
题
我正在使用buildroot作为构建内核和根文件系统的工具的嵌入式系统。我想在此内核源代码树上应用一些补丁,有人可以告诉我buildroot如何应用补丁吗?
解决方案 2
研究了buildroot架构后,我知道buildroot使用quilt工具来应用补丁。quilt跟踪“修补程序”目录中存在的名为“ series”的文件中的所有修补程序。您必须将补丁保存在此目录中。并按希望应用补丁的顺序在系列文件中添加补丁的条目,同时使补丁首先位于顶部。
这样,当您运行buildroot makefile时,它将自动应用系列文件中列出的补丁。
其他提示
在@ pradeepchhentri的答案上进行扩展。被子将查找位于与* .mk文件相同文件夹中的文件。构建适当的文件:
-
将源包从原始包扩展到名为的文件中
packageName - number - 描述 .patch
packagename - 必须与包名称相同
number - 是如果您有多个补丁申请,则应应用修补程序的顺序(否则将按字母顺序应用)
描述 - 可以是任何免费文本
-
将此文件放入与[packageName] .mk文件和包/ config.in文件相同级别的包。
别忘了吹走你的构建文件,或者如果你这样做,请做一个[包] -rebuild。如果完成,您应该看到“修补...”消息。
BR2_GLOBAL_PATCH_DIR
树外补丁
目录结构:
-
.git/
如 https://stackoverflow.com/a/23635403/895245 所述的 -
buildroot/
Buildroot子模块> -
global_patch_dir/packagename/0001-my-test.patch
添加到配置: 通用标签
然后使用: 通用标签
在构建之前,应将补丁应用于
output/build/packagename-1.0.0/
。使用
*_OVERRIDE_SRCDIR
生成补丁如果您只是直接破解了
output/build/
下的软件包,那么您将没有任何区别。请改为使用
*_OVERRIDE_SRCDIR
机制,该机制可让您指向您选择的git repo:如何修改Buildroot软件包的源以进行软件包开发?,然后应将其作为git子模块进行跟踪。
有关 buildroot 项目中补丁文件的一些详细信息:
-
您必须
diff -u "old_file" "new_file" > file.patch
正好位于包裹 tar.gz 中定义的提取位置的上方 通用标签
这意味着,文件路径必须包含提取的软件包文件夹名称。
-
以防您怀疑“ old_file” 路径是否与原始路径不同-不用担心,重要的是“ new_file” 路径和名称-它应与您提取的软件包相匹配。
-
已在buildroot中使用/定义的补丁的命名约定(所有部分都用'-'符号分隔):
- 4位补丁优先级(从0001开始)
- 目标文件名
- 修补原因
- .patch扩展
示例: 通用标签
- 将补丁文件存放在 buildroot / package /“您的软件包名称” / 文件夹中。
无需修改配置文件,所有修补程序将自动尝试用于应用程序。
- 如果发生故障,拒绝补丁文件(名称与您尝试打补丁的文件类似,但扩展名为 .rej )将存储在软件包提取的文件夹中。
- 将补丁文件存放在 buildroot / package /“您的软件包名称” / 文件夹中。
-