2013年3月8日 星期五

[OpenWrt] patch 管理及 quilt

OpenWrt 編譯環境會去抓程式的原始檔來 patch 使用。當原始檔版本更新時,只需要更新 OpenWrt 的 Makefile,修改抓取的版本,再執行
make package/xxx/refresh

make target/linux/xxx/refresh
就可以一次更新所有相關的 patch 檔。當然,這是理想狀況,實際上可能會有衝突發生。

OpenWRT 內部是靠 quilt 來管理 patch 檔的,在製作自己的 patch 檔時,需要
make package/xxx/{clean,prepare} QUILT=1 V=99
cd built_dir/target-yyy/xxx/ 下的編譯目錄
執行需要的 quilt 及編輯指令
最後,回到原本目錄,執行 make package/xxx/update

make target/linux/xxx/{clean,prepare} QUILT=1 V=99
cd built_dir/linux-xxx/xxx/ 下 Linux Kernel 的編譯目錄
執行需要的 quilt 及編輯指令
最後,回到原本目錄,執行 make target/linux/xxx/update
複製 patch 檔到該有的目錄

為了讓上述執行 quilt 指令產生的 patch 檔跟 OpenWrt 產生的格式一致,需設定 ~/.quiltrc 如下:
QUILT_DIFF_OPTS="-p"
QUILT_REFRESH_ARGS="-p ab --no-index --no-timestamps"
參考:
  1. OpenWrt: Working with patches
  2. Jserv's blog: quilt - 強大的 patch 管理工具
  3. git 產生 patch 檔

沒有留言:

張貼留言

SIP header Via

所有 SIP 訊息 都要有 Via,縮寫 v。一開始的 UAC 和後續途經的每個 proxy 都會疊加一個 Via 放傳送的位址,依序作為回應的路徑。 格式 sent-protocol sent-by [ ;branch= branch ][ ; 參數 ...] s...