[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13. ISIS開発者のための機能

13.1 開発に必要なツール  
13.2 デバッグモード  
13.3 ライブラリの動作チェック  
13.4 acinclude.m4に記述されているマクロ  
13.5 テストスクリプトの記述  


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.1 開発に必要なツール

ISISの開発を行う場合は、ISISのインストールに必要なツールに加え、以下の ツールが必要となる。

autoconf-2.57
automake-1.7.6
makeを実行する環境を検査し、その結果に応じた`Makefile' を生成する。

libtool-1.5
共有ライブラリをサポートする。

texinfo-4.5
ptex-2.1.8
マニュアルを生成する。

tar-1.12
パッケージを作成する。

gzip-1.2.4a
テスト用データファイルの作成と展開を行う。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.2 デバッグモード

configureを実行する際に`--enable-debug'オプションを指 定することで、ISISをデバッグモードで作成することができる。デバッグモー ドが通常のモードと異なる点を以下に列挙する。

ローカルライブラリの構築
ISISをコンパイルする際に、パケットライブラリや同期ユニットライブラリと いったカテゴリに応じたローカルライブラリを生成する。

通常これらのライブラリ内のオブジェクトファイルは、最終的に生成される ISIS のライブラリファイルのみに格納されている。通常モードで実行バイナ リを生成する場合、このライブラリファイルを作成する必要がある。また、ラ イブラリのソースコードを変更した場合には、ライブラリファイルを最新の状 態に更新しなければならない。

これに対しデバッグモードでは、前述したライブラリファイルに加えてローカ ルライブラリが生成される。これらのローカルライブラリをリンクすることで 最終的なISISのライブラリを作成、または更新する前に実行ファイルを作成す ることができる。頻繁にライブラリのソースコードを更新する際に有効である。

コンパイルオプションの変更
デバッグモードにすると、コンパイルオプションに`-Wall'`-ansi'`-pedantic-errors'`+w'`-fullwarn'が可能な限り付加される。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.3 ライブラリの動作チェック

make checkを実行することで、ライブラリのチェックを行うことが できる。make checkautomakeによりサポートされてい る機能で、`Makefile.am'内のTESTSで指示されたスクリプトを順 に実行し、正常に終了したかどうかをレポートする。

さらに詳細にレポートを行わせたい場合は、make VERBOSE=yes checkを実行すると良い。また、make TESTS=foo.test checkとい うように、TESTS変数をコマンドライン上で明示することで行うテスト を限定することもできる。

テストスクリプトはBourne Shellスクリプトで、生成した実行バイナリを起動 して動作チェックを行うプログラムになっている。動作チェックは、実行結果 のステータス値や標準出力、標準エラー出力を正常値と比較することで行う。 正常値はファイルから読み込まれる。See section 13.5 テストスクリプトの記述.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.4 acinclude.m4に記述されているマクロ

`acinclude.m4'は、`configure.ac'で使用されるマクロを定義して いる。`configure.ac'内で使用するマクロを追加する場合、このファイ ルに追加する。現在記述されている主なマクロを以下に示す。

CF_CHECK_VERSION(VERSION-FILE-NAME [, LT-VERSION-FILE-NAME])
引数で指定されたファイルからパッケージのバージョン情報を環境変数に読み 込む。パッケージ名はPACKAGE変数、バージョンはVERSION変数、 リビジョンはREVISION変数にそれぞれ格納される。

バージョンファイルの形式は次の通りである。1行目以降は無視される。

<パッケージ名> version <バージョン> [(<リビジョン>)]

<バージョン> は、さらにMAJOR_VERSIONMINOR_VERSIONMICRO_VERSIONに分解され、各変数に格納される。

第二引数を指定すると、第二引数で指定されたファイルから共有ライブラリの バージョン情報を読み込む。共有ライブラリバージョンファイルの形式は次の 通りである。1行目以降は無視される。

<インタフェース番号>.<バイナリ番号>

バージョン情報とインタフェース番号、バイナリ番号から、共有ライブラリバー ジョン指定用にLT_RELEASELT_CURRENTLT_REVISIONLT_AGEが算出され、各変数に格納される。

バージョンを指定する各変数は、リリースバージョンを作成する際に以下の手 順にしたがって更新される。

  1. MICRO_VERSION、インタフェース番号、バイナリ番号それぞれに1を加算 する。

  2. 関数が追加されていれば、インタフェース番号を0にする。

  3. 下位互換性を失うなら、インタフェース番号とバイナリ番号を0にする。

CF_CHECK_OPTION(PROGRAM-VARIABLE, FLAG-VARIABLE, OPTION)
コマンドがオプションを受け付けるかどうかを判別する。第一引数にコマンド、 第二引数に結果を格納する変数、第三引数にオプションを示す文字列を指定す る。

CF_CHECK_FPSETMASK
fpsetmask関数が使用できるかどうかを判別する。

CF_CHECK_HTONS
htons関数またはマクロが使用できるかどうかを判別する。

CF_CHECK_MATH_FUNC(NAME [, ARGS [, IF-FOUND [, UNLESS-FOUND]]])
mathライブラリの関数の有無を判別する。第一引数に関数名、第二引 数に関数の引数を指定する。第三および第四引数が指定されていれば、判別結 果に応じてシェルコマンドを実行する。


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

13.5 テストスクリプトの記述

テストスクリプトは、生成した実行バイナリを起動して動作チェックを行うシェ ルスクリプトである。動作チェックは、実行結果のステータス値や標準出力、 標準エラー出力を正常値と比較することで行う。

以下に簡単な例を示す。

 
#! /bin/sh

. $test_defs || exit 1

program=hello
answer='Hello, world.'

. $test_exec || exit 1

このテストスクリプトは`hello'をテストする。標準出力から Hello, world.という出力が得られ、標準エラー出力は出力がなく、終 了ステータスが0 の時にテストは成功したと見なされる。programは実 行するプログラム名、answerは標準出力の出力結果を指定する。

以下に指定できるテスト内容を示す。

program
実行するプログラム名。無指定の場合、テストスクリプトのファイル名から末 尾の.testを除いたものが実行するプログラム名となる。

args
プログラムに与える引数を指定する。

echo
標準入力へ入力する文字列を指定する。

stdin
標準入力へ入力するファイルを指定する。echostdinのどちら か一方のみを指定すること。ファイル名をautoとすると、テストスク リプトのファイル名から末尾の.testを除き、.cinを付加した ものが使用される。また、指定したファイル名 + .gz または .uu、あるいはその両方というファイルがあれば、そのファイルを展開 して参照する。ファイル名をignoreとすると、チェックを行わない。 後述するstdoutstderrについても同様である。

answer
標準出力から出力される内容を示す文字列を指定する。

stdout
標準出力から出力される内容を示すファイルを指定する。answerstdoutのどちらか一方のみを指定すること。

error
標準エラー出力から出力される内容を示す文字列を指定する。

stderr
標準エラー出力から出力される内容を示すファイルを指定する。errorstderrのどちらか一方のみを指定すること。


[ << ] [ >> ]           [Top] [Contents] [Index] [ ? ]

This document was generated by Masaki WAKABAYASHI on September, 3 2003 using texi2html