配布用ファイル

先ほどのautomakeが生成するdistcleanターゲットを紹介しましたが、automakeではリリース用のパッケージアーカイブを作成するmake distターゲットも作成してくれます。

# make dist
:(略)
# ls *.tar.gz
sample-1.0.0.tar.gz

配布用パッケージアーカイブが作成されていることを確認します。このアーカイブにはソースファイル・GNU標準ドキュメント(README/COPYING...)および配布先でconfigureスクリプトの実行に必要なファイルがすべて含まれています。

# tar -ztvf sample-1.0.0.tar.gz
-rwxr-xr-x 500/500  9206 2007-10-18 14:37:03 sample-1.0.0/install-sh
-rw-rw-r-- 500/500  542  2007-10-19 13:18:59 sample-1.0.0/makefile.am
-rw-rw-r-- 500/500  372  2007-10-19 10:16:33 sample-1.0.0/tblsample.h
:(略)

独自のドキュメントやツールなどを配布アーカイブに追加する場合、makefile.amに定義が必要となります。ここでは、アプリケーションが正しくビルドされたか否かを確認するための簡単なテストスクリプト・データを作成しアーカイブに追加する処理を考えて見ます。

テスト用スクリプトの指定

テスト用ディレクトリに、テストに必要なセットアップをおこなうシェルスクリプトと入力データサンプルを作成し、makefile.amに追加します。ここでプライマリの種類としてはSCRIPTSとDATAとします。ただし、インストールはしませんので接頭辞はnoinstとしています。

# tail makefile.am
noinst_SCRIPTS=test/test_setup.sh
noinst_DATA=test/test.csv

SCRIPTSやDATAプライマリに指定しただけでは配布対象とはなりません。標準以外のファイルを配布物に含めるためには、EXTRA_XXXXX変数にそのファイルを指定する必要があります。

EXTRA_DIST=test
EXTRA_SCRIPTS=test/test_setup.sh
EXTRA_DATA=test/test.csv

テストスクリプトを作成しましたので、makeからテストを実行できるようcheckターゲットを作成します。これにはcheck_SCRIPT変数にチェック用のターゲット名を設定し、テストにあわせたターゲット記述を追加します。automakeでは変換対象でない記述はそのままmakefile.inへコピーされますからこの部分は普通にmakefileを作成する要領で記述します。ここではutestというcheckターゲットを作成することにします。

check_SCRIPT=utest
utest:
  test/test_setup.sh
  ./sample < test/test.csv | \
   $(AWK) '/1,AAA,a1,b1,1/{print "OK"}!/1,AAA,a1,b1,1/{print "NG"}'

これで準備が整いましたので再度automakeからやり直してみます。

# automake -a -c
# ./configure --with-mysql=/usr/local/mysql/bin/mysql_config
# make
:(略)
# make dist
:(略)

作成されたアーカイブを再度確認してアーカイブにテストスクリプトが含まれていることを確認してください。一応、ビルドを実行してテストもおこないます。

# make check
make  utest
test/test_setup.sh
./sample < test/test.csv | awk '/1,AAA,a1,b1,1/{print "OK"}!/1,AAA,a1,b1,1/{print "NG"}'
OK

一応、テストもOKとなりました。