これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド pg_buildext です。
プログラム:
NAME
pg_buildext - PostgreSQL 拡張機能をビルドしてインストールする
SYNOPSIS
pg_buildext [オプション] アクション [オプション]
DESCRIPTION
pg_buildext VPATH 方式で PostgreSQL 拡張機能を構築するスクリプトです。
複数の PostgreSQL サーバー バージョンが並行して実行される可能性があります。 のために構築されます
debian/pgversions で既知のバージョンの共通部分 (パッケージでサポートされているバージョン)
/usr/share/postgresql-common/supported-versions (このバージョンでサポートされているバージョン)
リリース)。
USAGE
を使用したパッケージ pg_buildext PostgreSQL バージョンのバイナリをビルドする準備をする必要があります
Debian 不安定版には存在しないもの (バックポートを構築する場合の古いリリースなど)
Debian (古い) 安定版 (新しい PostgreSQL リリースのバックポートを含む可能性があります)、または
パッケージのビルド時のすべての PostgreSQL リリース apt.postgresql.org.
バイナリ パッケージのセットはターゲットの PostgreSQL バージョンに依存するため、debian/control は
debian/control.in のテンプレートから生成される場合 pg_buildext 更新制御 実行されます。
の出現 PGバージョン パッケージ内のセクションはターゲット PostgreSQL に置き換えられます
バージョン。 debian/rules に /usr/share/postgresql-common/pgxs_debian_control.mk をインクルードします。
debian/control の更新が必要な場合は、ビルド時にチェックを実行します。
As pg_buildext 呼び出す make ビルド, install, アクション、呼び出し
debian/rules (メイクファイル) には接頭辞を付ける必要があります。 + サブメーカーが会話できるように
make jobserver を使用します。
多くの拡張機能をサポート make インストールチェック を使用してテストする pg_regress。 これには必要なため、
パッケージがインストールされると、ビルド時に実行できません。 代わりに、テストを実行する必要があります
autopkgtest debian/test/* から。
debian/tests/control.in が存在する場合、次の内容を含むパッケージ名が出現します。 PGバージョン
ターゲットの PostgreSQL バージョンが入力されたパッケージ名のリストに置き換えられます。(存在しない場合)
debian/tests/control で置き換えが必要ですが、テスト制御ファイルを提供しても問題ありません
直接。)
OPTIONS
-シオ argは
-s に渡されます pg_virtualenv 走っているとき インストールチェック.
ACTIONS
ほとんどのアクションでは、ソースをビルドするディレクトリ名が必要です。 のために作成されます
それが存在しない場合は、あなた。 もし ビルドディレクトリ %v 記号が含まれている場合は、
ビルド対象の PostgreSQL の特定のバージョン。 (通常、このパラメータは build-%v です。)
サポートされているバージョン
サポートされているバージョンの有効なリスト、つまり、次のセットの共通部分を出力します。
システムとパッケージでサポートされているバージョン。
チェックコントロール
debian/control.in から debian/control を更新する必要があるかどうかを確認します。 これはから呼び出されます
/usr/share/postgresql-common/pgxs_debian_control.mk。 のために構築するとき バックポート or
PGDG debian/changelog によって決定されたスイートの場合、このアクションによりコントロールも更新されます
ファイル。 さもないと、 更新制御 手動で実行する必要があります。
更新制御
debian/control.in から debian/control を更新し、から debian/tests/control を更新します。
debian/tests/control.in (後者が存在する場合)。
configure ビルドディレクトリ [追加構成オプション]
サポートされているすべてのバージョンについて、 ../構成、設定 ビルドディレクトリ ディレクトリ。 (ほとんど
PostgreSQL 拡張機能には構成スクリプトがありません。)
ビルド ビルドディレクトリ [追加のcflags]
拡張機能をビルドします。 ビルドディレクトリ ディレクトリにあります。
install ビルドディレクトリ パッケージパターン
呼び出します make install ビルドディレクトリ ディレクトリ。 XNUMX 番目のパラメータは、
使用するパッケージ名。 ほとんどのパッケージでは、 postgresql-%v-pkgname。 Make は次のように呼び出されます
DESTDIR="$(CURDIR)/debian/パッケージ".
ビルドディレクトリ
ビルドディレクトリをクリーンアップします。
ループ パッケージパターン
電話のバリエーションとして ビルド と install VPATH ビルドの場合は個別にループします。
最上位のソース ディレクトリでサポートされている PostgreSQL バージョン。 これは、次の場合に使用する必要があります。
パッケージは VPATH ビルドをサポートしていません。 それも呼び起こすので、 make install、 そのはず
ビルドが行われる場所ではなく、debian/rules でインストールが行われる場所に配置されます。
普通に呼ばれます。
インストールチェック [ビルドディレクトリ]
pg_virtualenv make インストールチェック 拡張機能回帰テストを実行します。 これは
debian/tests/control から実行することを目的としています。 autopkgtest。 場合 ビルドディレクトリ 省略、
最上位のソース ディレクトリが使用されます。
アクションを呼び出す前に、バージョンごとに追加のコードを実行することが望ましい場合があります。
その場合、サポートされているバージョンに対するループを呼び出しスクリプト内に含める必要があります。 に
このモードを容易にするため、アクションは次のように呼び出すこともできます。 アクション-バージョン。 インストールチェックを参照してください
以下の例。
サポートされている バージョン
pg_buildext debian/pgversions を読み取り、どの PostgreSQL でモジュール/拡張機能を構築するかを決定します
のために。 このファイルには、次の形式で XNUMX 行に XNUMX つの PostgreSQL バージョン番号が含まれています。
を すべてのバージョンをサポートします。 既知の非互換性がない限り、これをお勧めします。
XY このバージョンをサポートします。
XY+
このバージョンとそれ以降のすべてのバージョンをサポートします。
#...
コメント。
使用するバージョンについては、そのバージョンが出力にもリストされている必要があります。
/usr/share/postgresql-common/supported-versions。 設定方法については、このファイルを参照してください。
システムでサポートされているバージョンのリスト。
実施例
debian/control.in:
ソース: postgresql-foobar
ビルド依存: debhelper、postgresql-server-dev-all (>= 153~)
XS テストスイート: autopkgtest
パッケージ: postgresql-PGVERSION-foobar
依存: ${misc:Depends}、${shlibs:Depends}、postgresql-PGVERSION
debian/pg バージョン:
を
debian/ルール:
#!/ usr / bin / make -f
/usr/share/postgresql-common/pgxs_debian_control.mk を含める
# パッケージが autoconf を使用しない場合はこれを省略します
override_dh_auto_configure:
+pg_buildext configure build-%v "--libdir=/usr/lib/postgresql/%v/lib --datadir=/usr/share/postgresql-%v-foobar"
override_dh_auto_build:
+pg_buildext ビルド ビルド-%v
override_dh_auto_test:
# ここでは何もする必要はありません。代わりに debian/tests/* を参照してください
override_dh_auto_install:
+pg_buildext install build-%v postgresql-%v-foobar
override_dh_installdocs:
dh_installdocs --all README.*
override_dh_auto_clean:
+pg_buildext クリーン ビルド-%v
%:
dh $ @
debian/テスト/コントロール:
依存: @、postgresql-server-dev-all
テスト: インストールチェック
制限事項:allow-stderr
debian/tests/control.in: (optional)
依存: @、postgresql-contrib-PGVERSION、postgresql-PGVERSION-bar
テスト: インストールチェック
制限事項:allow-stderr
debian/テスト/インストールチェック:
#!/bin/sh
pg_buildext インストールチェック
# 代わりに: pg_buildext installcheck build-%v
# 実際のアクションを呼び出す前に追加のコードを実行します。
セット-e
$(pg_buildext サポートバージョン) の v の場合; する
テスト -L ビルド $v/sql || ln -s ../sql build-$v/
test -L build-$v/expected || ln -s ../期待されるビルド-$v/
pg_buildext installcheck-$v build-$v
行われ
ENVIRONMENT
pg_buildext セット PG_VIRTUALENV_UNSHARE=-n installcheck アクションの場合、デフォルトでは
新しいネットワーク名前空間をリクエストし、複数のインスタンスを並行して実行して共有できるようにします。
ポート 5432。別の値に設定してオーバーライドします。
互換性の確保
前 pg_buildext バージョンでは、アクションの後に「source dir」引数が必要でした。 これは
現在は非推奨になっていますが、依然として受け入れられています (そして無視されています)。
pg_buildext ループ postgresql-server-dev-all (>= 141~) で導入されました。
debian/pgversions での「all」または「X.Y+」の使用は、postgresql-server-dev- で導入されました。
すべて (>= 148~)。
pg_buildext インストールチェック postgresql-server-dev-all (>= 153~) で導入されました。
PG_VIRTUALENV_UNSHARE=-n postgresql-common (>= 170~) で導入されました。
debian/tests/control.in の処理 PGバージョン 代替品が導入されました
postgresql-common (>= 171~)。
onworks.net サービスを使用してオンラインで pg_buildext を使用する