LXR | KVM | PM | Time | Interrupt | Systems Performance | Bootup Optimization

OpenWRT(8):使用quilt对OpenWRT的patch进行管理

quilt是一个用于管理源代码补丁的工具,广泛用于 Linux 内核和许多其他开源项目中。它提供了一种方便的方式来创建、修改、应用和撤销补丁。

1 quilt使用

关键特性:

  • 补丁系列管理:quilt允许你将多个补丁组织成一系列,这样可以轻松地对它们进行排序和应用。
  • 自动补丁应用:可以自动应用补丁系列,无需手动干预。
  • 补丁依赖管理:可以指定补丁之间的依赖关系,确保它们按正确的顺序应用。
  • 撤销补丁:可以轻松撤销已应用的补丁,方便回滚更改。
  • 补丁跟踪:跟踪哪些补丁已应用,哪些未应用。
  • 用户界面:提供了一个基于文本的用户界面,可以通过命令行与之交互。

常用命令:
初始化:quilt init。创建一个新 quilt 项目。

创建补丁文件:quilt new <patchname>.patch。创建一个新的空补丁文件。

添加文件到补丁:quilt add <filename>。将更改的文件添加到当前补丁中。

编辑文件:quilt edit <filename>。将文件标记为已编辑,通常与 quilt add 一起使用。

查看补丁差异:quilt diff。显示当前补丁系列中的更改。

应用补丁:quilt push -a。

应用所有补丁到源代码中。

撤销补丁:quilt pop。

撤销最后一个应用的补丁。

查看补丁状态:quilt series。列出所有补丁的系列和它们的状态(已应用、未应用)。

刷新补丁:quilt refresh。更新补丁文件以反映当前的更改。

导入补丁:quilt import <patchfile>。导入现有的补丁文件到 quilt 系列中。

移除补丁:quilt remove <patchname>.patch。从补丁系列中移除一个补丁。

折叠补丁:quilt fold。将补丁系列转换为一个单独的补丁文件。

2 quilt在OpenWRT中应用

更多参考《[OpenWrt Wiki] Working with patches》。

已创建util-linux下的补丁为例。

使用 OpenWrt 的 make 系统准备软件包的源代码,并初始化 quilt:

make package/utils/util-linux/{clean,prepare} V=s QUILT=1

切换到解压缩的源代码目录:

cd build_dir/target-xxx/util-linux-2.36.1

使用 quilt 应用所有现有补丁:

quilt push -a

创建一个新补丁或导入一个上游补丁:

quilt new 101-riscv_code_fix.patch  # 创建新补丁
# 或
quilt import /path/to/010-main_code_fix.patch  # 导入现有补丁

使用 quilt 关联编辑文件到补丁,并使用喜欢的编辑器修改它们:

quilt add modified_file.c
# 然后使用编辑器修改 modified_file.c

使用以下命令查看更改并更新补丁文件:

quilt diff
quilt refresh

 进入根目录,将新补丁移动到构建系统目录:

make package/utils/util-linux/update V=s

此时patch内容被更新到package/utils/util-linux/patches/101-riscv_code_fix.patch。

最后,重新编译软件包以测试更改:

make package/utils/util-linux/{clean,compile} V=s

posted on 2024-08-16 23:59  ArnoldLu  阅读(125)  评论(0编辑  收藏  举报

导航