このドキュメントは開発者としてPGroongaをビルドする方法を説明しています。たとえば、新しい機能を開発したりバグを直したりするような開発者が対象になります。
もし、カジュアルなPGroonga開発者になりたい場合は、このドキュメントよりもカジュアル開発者としてビルドの方が適切です。
PostgreSQLもPGroonaもどちらもデバッグオプション付きでビルドすることをオススメします。
デバッグオプション付きでGroongaもビルドした方がよいです。そのためには、cmake --preset=debug-maximum ...
を使えます。
Groongaのパッケージを使う場合は、開発用パッケージをインストールする必要があります。Debian系のディストリビューションではlibgroonga-dev
で、Red Hat系のディストリビューションではgroonga-devel
です。
すべてのテストを実行するためにはtoken_fitlers/stem
というGroongaのプラグインをインストールする必要があります。groonga-token-filter-stem
パッケージをインストールするとインストールできます。
PostgreSQLのサイトからソースをダウンロードします。以下はPostgreSQL 17.0のソースをダウンロードして展開するコマンドラインです。
wget https://ftp.postgresql.org/pub/source/v17.0/postgresql-17.0.tar.bz2
tar xf postgresql-17.0.tar.bz2
--buildtype=debug
引数付きでmeson setup
を実行します。これでデバッグビルドになります。--prefix=/tmp/local
は指定してもしなくてもどちらでもよいです。
meson setup \
--buildtype=debug \
--prefix=/tmp/local \
postgresql-17.0.build \
postgresql-17.0
PostgreSQLをビルドしてインストールします。
meson compile -C postgresql-17.0.build
meson install -C postgresql-17.0.build
PostgreSQLを初期化して実行します。
mkdir -p /tmp/local/var/lib
/tmp/local/bin/initdb \
--locale C \
--encoding UTF-8 \
--set=enable_partitionwise_join=on \
--set=max_prepared_transactions=1 \
--set=random_page_cost=0 \
-D /tmp/local/var/lib/postgresql
/tmp/local/bin/postgres -D /tmp/local/var/lib/postgresql
以下のワンライナーはPostgreSQL関連のすべてのデータをリセットするときに便利です。このワンライナーをシェルのヒストリーに入れておけば、すぐにこのワンライナーを再実行できます。
rm -rf /tmp/local/var/lib/postgresql && \
mkdir -p /tmp/local/var/lib/postgresql &&
/tmp/local/bin/initdb \
--locale C \
--encoding UTF-8 \
--set=enable_partitionwise_join=on \
--set=max_prepared_transactions=1 \
--set=random_page_cost=0 \
-D /tmp/local/var/lib/postgresql && \
/tmp/local/bin/postgres -D /tmp/local/var/lib/postgresql
開発するためにhttps://github.com/pgroonga/pgroonga/をフォークする必要があります。後でフォークしたリポジトリーからプルリクエストを作るかもしれません。GitHubのドキュメントも参照してください。
フォークしたリポジトリーをクローンするコマンドラインは次のとおりです。
git clone --recursive git@github.com:${YOUR_GITHUB_ACCOUNT}/pgroonga.git
cd pgroonga
PGroongaをビルドしてPGroongaのテストを実行するには次のコマンドラインを使います。
HAVE_XXHASH=1 test/run-sql-test.sh
PGroongaのテストは2種類あります。
SQLベースのリグレッションテスト
SQLだけでは実装できない複雑なテスト
通常、前者だけを使います。test/run-sql-test.sh
は前者用のテストランナーです。PGroongaをビルド・インストールしてSQLベースのリグレッションテストを実行します。
テストも読んでください。