Patches
因為專案裡面有很多檔案是tarball下載或是git下載,我想要讓它保持專案的最小限度,所以要去修改它裡面的內容就必須要用到patch(補丁)檔[以下都稱patch],在buildroot的patch步驟時,它會自動的將patch套用到你的package裡面(解壓縮後,跑組態前)。
- 建制前下載
如果需要下載的patch則需要在< pkg >_PATCH變數裡面去設定,設定完之後便會自動下載。
- Patch的放置路徑
patch都要放在 package/< pkg >/*.patch
- Patch 的順序
如果你有多個patch,則命名規則就是先數字,然後沒有數字的話就用字母排序 舉例來說: 會發現這個package就是用序號開頭,然後後面接的是這個patch的描述。
- 產生patch
有兩個方式可以產生patch 檔,如果你的案子是有版本管控的話,當然就是用『git』拉,如果沒有的話用『quilt』也蠻方便的。
git patch(必須在buildroot外面去做這件事):
- clone 專案
git clone git://...
- 建立branch
git checkout -b buildroot-changes v3.2
- 引入既有的patches
git am /path/to/buildroot/package/<foo>/*.patch
- 修改檔案並且commit
git commit -s -m ``this is a change''
- 產生patches
git format-patch v3.2
quilt patch:
- 解壓縮sorce code (buildroot將下載完的package放在資料夾『dl』裡面)
tar xf /path/to/dl/<foo>-<version>.tar.gz
- 在source code裡面,建立一個patch資料夾
mkdir patches
- 引入既有的patch
quilt import /path/to/buildroot/package/<foo>/*.patch
- 套用既有的patch
quilt push -a
- 建立新的patch
quilt new 0001-fix-header-inclusion.patch
- 修改檔案
quilt edit main.c
- 將修改存入patch
quilt refresh