グルカイ!第26回「ドキュメントのビルドシステムについて 具体的な内容編」を開催しました!
グルカイ!第26回「ドキュメントのビルドシステムについて 具体的な内容編」の内容をまとめました! Groongaのドキュメントのビルドシステムの具体的な内容について解説いただきました!
今回は前回のグルカイ!第25回「ドキュメントのビルドシステムについて」の続きとなります。
解説の図は前回と同じくこちらです。
Groongaのドキュメントのビルドシステムについては、以下のクリアコードのブログ(ククログ)にもまとめられています。
Groongaのドキュメントのビルドシステムが行っていること
ドキュメント関係のビルドシステムでは上述のSphinxの国際化機能でもGNU gettextでも単独ではできない、
英語の.rst
の更新を検知 -> 翻訳対象の抽出 -> マージ を実現しています。
ファイル構成
groonga/doc配下には、groonga/doc/locale/enやgroonga/doc/locale/jaといった各ロケールごとにMakefile.amが存在しています。 groonga/build/makefilesには、これらのロケールごとのビルドの共通処理がまとめられています。各ロケールごとに基本的にはほぼ共通の処理を行っているので、その共通処理をまとめています。
groonga/build/makefilesやgroonga/doc配下にあるMakefile.am
はGroonga側で独自に作成しています。
Sphinxが新しくドキュメントを作る際にMakefile
を作成してくれますが、それは使っていません。
sphinx-build.am
groonga/build/makefiles/sphinx-build.am
は、実際に実行するSphinxのビルドコマンドを定義しています。
ビルドオプションには -j auto
のみが追加されています。
これは並列度を自動で設定するオプションで、ビルドを高速化するために追加しています。
sphinx.am
groonga/build/makefiles/sphinx.am
は各ビルドの定義をしています。
ここでのポイントは、XXXX-build-stamp
という形式の空のファイルを作ってビルド済みかどうかの判定を行っている点です。
ドキュメントのビルドでは大量のファイルが対象になり管理が大変なので、代わりにXXXX-build-stamp
を作って管理しています。
例えばHTMLのビルドを対象にしているときはhtml-build-stamp
というファイルを作成しています。
また、これらのbuild-stamp
ファイルは、ドキュメントのビルドが有効な場合にはEXTRA_DIST
変数に追加されています。
EXTRA_DIST
は配布物に含めるファイルを指定するための変数です。これにhtml-build-stamp
ファイルを指定することで、ビルドされたHTMLも配布対象にしています。
.PHONYとは?
.PHONY
はダミーターゲットを指定するための機能です。
make
では、基本的にターゲットファイルを生成することを前提としています。
そのため、例えばhtml: hogehoge
というような記述があった場合、html
というファイルを作成します。
一方で、ターゲットファイルを生成したくないケースもあります。Groongaのドキュメントのビルドがそのケースに該当します。
Groongaのドキュメントのビルドのために make html
を実行したときは、html
というファイルの作成ではなく、Sphinxを使って.rst
ファイルからHTMLのドキュメントを生成することを意図しています。
このように、ターゲットファイルを生成したくない場合に.PHONY
を使います。
.PHONY: html
という定義をすることで、html
はダミーターゲットであり、html
というファイルは作らない、という指定ができます。