BloGroonga

2023-02-07

グルカイ!第26回「ドキュメントのビルドシステムについて 具体的な内容編」を開催しました!

グルカイ!第26回「ドキュメントのビルドシステムについて 具体的な内容編」の内容をまとめました! Groongaのドキュメントのビルドシステムの具体的な内容について解説いただきました!

今回は前回のグルカイ!第25回「ドキュメントのビルドシステムについて」の続きとなります。

解説の図は前回と同じくこちらです。

Groongaのドキュメントのビルドシステムについては、以下のクリアコードのブログ(ククログ)にもまとめられています。

Groongaのドキュメントのビルドシステムが行っていること

ドキュメント関係のビルドシステムでは上述のSphinxの国際化機能でもGNU gettextでも単独ではできない、 英語の.rstの更新を検知 -> 翻訳対象の抽出 -> マージ を実現しています。

ファイル構成

groonga/doc配下には、groonga/doc/locale/engroonga/doc/locale/jaといった各ロケールごとにMakefile.amが存在しています。 groonga/build/makefilesには、これらのロケールごとのビルドの共通処理がまとめられています。各ロケールごとに基本的にはほぼ共通の処理を行っているので、その共通処理をまとめています。

groonga/build/makefilesgroonga/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というファイルは作らない、という指定ができます。