無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

35.16. 拡張構築基盤

PostgreSQL 拡張モジュールの配布を考えているのであれば、移植可能な構築システムを準備することはかなり難しいものになるかもしれません。 このため PostgreSQL インストレーションは単純な拡張モジュールをすでにインストールされているサーバに対して簡単に構築することができるように、 PGXS と呼ばれる拡張向けの構築基盤を提供します。 PGXS は主にCコードを含む拡張を意図していますが、SQLのみからなる拡張でも使用することができます。 PGXS PostgreSQL と相互に作用する任意のソフトウェアを構築するために使用できるような万能な構築システムを意図したものではないことに注意してください。 これは単に、単純なサーバ拡張用の一般的な構築規則を自動化するものです。 より複雑なパッケージでは、独自の構築システムを作成する必要があるかもしれません。

独自の拡張で PGXS 基盤を使用するためには、簡単なメークファイルを作成する必要があります。 このメークファイルの中で、いくつか変数を設定し、最後に大域的な PGXS メークファイルをインクルードする必要があります。 以下に isbn_issn という名称の拡張モジュールを構築する例を示します。 このモジュールはいくつかのCコードを含む共有ライブラリ、拡張の制御ファイル、SQLスクリプト、ドキュメントテキストファイルから構成されます。

MODULES = isbn_issn
EXTENSION = isbn_issn
DATA = isbn_issn--1.0.sql
DOCS = README.isbn_issn

PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)

最後の3行は常に同じです。 ファイルのこの前に変数の設定と独自の make ルールを記載してください。

以下の3個の変数の1つを構築対象に指定してください。

MODULES

同じ家系のソースファイルから構築される共有ライブラリのリストです。 (このリストにはライブラリ接頭辞を含めないでください。)

MODULE_big

複数のソースファイルから構築される共有ライブラリです。 ( OBJS にオブジェクトファイルを列挙します。)

PROGRAM

構築する実行プログラムです。 ( OBJS にオブジェクトファイルを列挙します。)

以下の変数も設定することができます。

EXTENSION

拡張の名前です。 各名前に対して、 prefix /share/extension にインストールされる extension .control を提供しなければなりません。

MODULEDIR

DATAおよびDOCSファイルのインストール先となるはずの prefix /share 副ディレクトリです。 (設定がない場合、デフォルトは EXTENSION が設定されている場合は extension に、設定されていない場合は contrib になります。)

DATA

prefix /share/$MODULEDIR にインストールされる様々なファイルです。

DATA_built

prefix /share/$MODULEDIR にインストールされる、最初に構築しなければならない様々なファイルです。

DATA_TSEARCH

prefix /share/tsearch_data 以下にインストールされる様々なファイルです。

DOCS

prefix /doc/$MODULEDIR 以下にインストールされる様々なファイルです。

SCRIPTS

prefix /bin にインストールされるスクリプトファイルです(バイナリファイルではありません)。

SCRIPTS_built

prefix /bin にインストールされる、最初に構築しなければならないスクリプトファイルです(バイナリファイルではありません)。

REGRESS

リグレッション試験ケース(接尾辞がない)のリストです。 後述します。

REGRESS_OPTS

pg_regress に渡す追加オプションです。

EXTRA_CLEAN

make clean で削除される追加ファイルです。

PG_CPPFLAGS

CPPFLAGS に追加されます。

PG_LIBS

PROGRAM のリンク行に追加されます。

SHLIB_LINK

MODULE_big リンク行に追加されます。

PG_CONFIG

構築対象の PostgreSQL インストレーション用の pg_config プログラムへのパスです。 (通常は PATH 内の最初に見つかる pg_config が単純に使用されます)

このメークファイルを Makefile として拡張を保管するディレクトリ内に保管してください。 その後コンパイルするために make を、モジュールをインストールするために make install を行うことができます。 デフォルトでは、 PATH の中で最初に見つかる pg_config プログラムが対応する PostgreSQL インストレーション用に拡張はコンパイルされ、インストールされます。 メークファイルまたは make のコマンドラインのいずれかで PG_CONFIG を別の pg_config プログラムを指し示すように設定することで、別のインストレーションを使用することができます。

注意

PG_CONFIG の変更は、 PostgreSQL 8.3以降に対して構築する場合にのみ動作します。 より古いリリースでは、 pg_config 以外の何かを設定しても動作しません。 構築対象のインストレーションを選択するように PATH を変更しなければなりません。

REGRESS 変数に列挙されたスクリプトは、 make install を実行した後で make installcheck によって呼び出すことができる、作成したモジュールのリグレッション試験で使用されます。 これが動作するためには、 PostgreSQL サーバが実行していなければなりません。 REGRESS 変数に列挙されたスクリプトは、拡張のディレクトリ内の sql/ という名前の副ディレクトリ内に存在しなければなりません。 これらのファイルは .sql という拡張子を持たなければなりません。 この拡張子はメークファイル内の REGRESS リストには含まれません。 また試験ごとに expected/ という名前の副ディレクトリ内に想定出力を内容として含む、同じステムに .out 拡張子を付けた名前のファイルがなければなりません。 make installcheck psql を用いて各試験スクリプトを実行し、結果出力が想定ファイルに一致するかどうか比較します。 何らかの差異は diff -c 書式で regression.diffs に書き出されます。 想定ファイルがない試験を実行しようとすると "問題" として報告されます。 このためすべての想定ファイルがあることを確認してください。

ティップ: 想定ファイルを作成する最も簡単な方法は、空のファイルを作成し、試験を実行する(当然差異が報告されます)ことです。 results/ ディレクトリ内で見つかる実際の結果ファイルを確認し、テストの想定結果と合致するのであれば、 expected/ にコピーしてください。


powered by SEO.CUG.NET