Package
在buildroot裡面的套件(package),其實就是會在建制過程中被自動處理的meta data,這些meta裡面需要跟系統描述這個套件要在哪裡取得?版本是什麼?還有其相依性是什麼?等等資訊...
buildroot套件的基本構成有以下幾個:
- 在package底下的資料夾,eg.『buildroot/package/xz』。
- Config.in 使用kconfig語言所撰寫,描述此套件的組態。
- <pkg>.mk
使用make語法所撰寫,描述套件在那,怎麼建制,怎麼安裝等等。 - 選用的<pkg>.hash
使用hash可以確保檔案的完整性和正確性。 - 選用的.patch
如果在建制前想要改變source code的內容,可以使用.patch檔,檔名不重要,只要在這個資料夾裡的.patch,系統都會自動幫你套用。
Package Infrastructures
buildroot裡面會用到許多的軟體套件,但是很多都有他自己的well-known建制系統,像是:Makefile, shell script, autotool, CMake和其他的語言(Python, Perlm Lua, Erlang等等)。如下面兩張圖:
(來源 : free-electrons )
你會看到在package底下有對每個建制系統的定義。然後每個套件的建制系統也不會都一樣。不過通常都還是會繼承generic-package的架構,像是底下這張圖一樣,會先經過下載 --> 解壓縮 --> 補丁 --> 設定組態 --> 建制 --> 安裝。只有pkg-kconfig是個例外,並沒有繼承這個流程。
(來源 : free-electrons )