前言:簡單聊一下為什么需要制作補丁,因為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 維基]使用補丁