如何製作Buildroot package patch
公司規定第三方庫都要放在buildroot 管理,也就是如果要修改source code 的話,就需要打patch。
buildroot architecture
buidlroot 本身不會存放所有Package source code,會從 buildroot/src/package/package名稱 裡面找。 下載版本、make confiugre等等都是在這裡定義的。 patch 的名稱 000x-…patch 會從 0001 往下安裝下去,也就是要注意到序列的問題。
how to make Linux patch
diff
舊檔案為 src.c 現複製一份、出來修改後新檔案為 src-1.c
diff -Naur package-name.src.c package-name/src-1.c > 000x-xxx-xxxx.patch
git format-patch
筆者比較推薦這個方法,也可以做出Binary patch 不限於比較text file而已 並且PATCH 名稱會根據commit message 產生,是真的方便。 但是buildroot 不吃binary patch 這是buidroot proj自己的問題
情境
-
git 所產生的patch 是以
commit 為單位的
-
原本的source code 假設commit 有兩筆為 aaaaaaa bbbbbbb
將其中一筆作為patch
git format-patch aaaaaaa
將兩筆作為patch
git format-patch aaaaaaa...bbbbbbb
從HEAD 開始算起N筆作為PATCH
git firmat-patch HEAD^N`
buildroot download source and patch 的流程
$ cd [buildroot]/build
$ make <package name>-dirclean
$ make <package name>-rebuild
這時到 output/build/[package name] 就會看到改好的source code 並且根據patch build 出來的結果
reference
[Git] 使用 git format-patch 將指定 commit 的內容補丁到任意分支 使用Git生成patch和應用patch,看完這一篇文章就全懂了 [Linux] 使用 diff 指令產生補丁檔,用 patch 指令幫程式上補丁
|