先ほどの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となりました。