背景
OSSのpluginを自分で作って、それをyoctoを使ってビルドしたい。
そのOSSはgithubなどで管理されており、yoctoにもレシピはある。
yoctoだと通常はpatchを作って管理するため、pluginもpatchで管理すれば出来ないことはない。
ただ、patchで管理するとdiffが見辛い。
管理しにくい。
pluginは自分たちでgitを使ってソースコードとして構成管理したい。
この場合のレシピの書き方について調べたので備忘録として残す。
アプローチ
まず類似例がないか考えた。
nginxのpluginが同じような構成になるのではと考え調べると、見事にヒットした。
https://medium.com/@zertsekel/yocto-how-to-add-nginx-module-35f03dd2ede3
https://www.yoctoproject.org/pipermail/yocto/2018-November/043102.html
やはり先人はいるようだ。
考え方
- pluginはpluginだけのレシピを作る
- レシピの中身はfetchしてinstallするだけ
- OSS本体から参照できるようになる
- OSSの本体はbbappendファイルを作る
- DEPENDにpluginを追加
- do_configureなりdo_compileなりを修正
なるほどー。
最後に
今回引っかかったのはnginxのngx-http-auth-pam-moduleだが、nginx-http-auth-digestやngx_mrubyなどももちろん同様にできる。
さらにapacheのmodulesやlighttpd、h2oのpluginも同様の仕組みで実現できる。
dlopenに対応しているOSSだと、bbappendファイルにDEPENDの依存関係は不要になり、
plugin側にOSS本体のDEPENDが必要となる。OSS本体のビルドが終わっていればplugin単体のcompileもできるため素直なレシピになる。