前言:简单聊一下为什么需要制作补丁,因为openwrt的编译是去下载很多组件放到dl目录下面,这些组件都是压缩包。如果我们要修改这些组件里面的源码,就需要对这些组件打pacth,也就是把我们的差异点在编译的时候合入到对应的组件里面去。下面的以一个demo为例子,学会即可去照葫芦画瓢去修改我们对应的开源组件。
安装quilt
sudo apt-get install quilt
为了让 quilt 以首选格式创建补丁,必须在本地主目录中创建一个包含常见 diff 和 patch 选项的配置文件.quiltrc
vi ~/.quiltrc
QUILT_DIFF_ARGS="--no-timestamps --no-index -p ab --color=auto"
QUILT_REFRESH_ARGS="--no-timestamps --no-index -p ab"
QUILT_SERIES_ARGS="--color=auto"
QUILT_PATCH_OPTS="--unified"
QUILT_DIFF_OPTS="-p"
EDITOR="vi"
要向现有软件包示例添加全新的补丁,请先准备源目录:
需要在package目录下面放example文件夹,如下图所示
里面包含基本的文件
执行下面命令
make package/example/{clean,prepare} V=s QUILT=1
会在该目录下面得到如下东西
下面这个命令是打印当前patch目录有哪些补丁
quilt push -a
我们当前目录还没有对应的一个补丁
建一个新的空补丁文件而不导入现有补丁文件:
quilt new 010-main_code_fix.patch
更改完成后,可使用 quilt diff 命令对其进行查看
如果差异看起来正常,就执行下面的命令
quilt refresh
这个时候就会在该目录下面生成我们的patch目录
要将更新的补丁文件移动到 buildroot(也就是我们的package下面),请在包上运行 update:
make package/example/update V=s
就会把build_dir目录下面生成的patch拷贝到/openwrt/lede/package目录下面
最后,重新构建包以测试更改:
make package/example/{clean,compile} package/index V=s
就会编译一下我们pach是否会有语法上面的报错
本文主要来源:
[OpenWrt 维基]使用补丁