以下では, gtool4 プロジェクト で公開されているデータ I/O ライブラリ gt4f90io を The G95 project で公開されている G95 Fortran Compiler によってコンパイルし, その Debian パッケージを自動生成するための方法について記す.
buildpackage-tools ディレクトリ以下には以下のファイルが置かれている.
プログラムが呼び出される際のプロセスの階層を以下に示す.
gt4f90io-g95_debmake_main.sh ダウンロード - Debian パッケージ作成 | |-- g95_version バージョン比較 | `-- gt4f90io_version バージョン比較 gt4f90io-g95-v0.9_debmake_main.sh Debian パッケージ作成 | `-- gt4f90io_version_v0.9 バージョン比較
gt4f90io-g95 パッケージは netcdf-g95 パッケージ に依存することから, <URL:../netcdf-g95/> 以下の ファイル群に依存する. 直接的に依存しているのは以下のファイルである.
これらのファイルが生成されていない場合, gt4f90io-g95 パッケージが 自動生成できないため注意すること.
buildpackage-tools ディレクトリへ移動後, gt4f90io-g95_debmake_main.sh を実行する. その際, 環境変数 DEBEMAIL, DEBFULLNAME, MAILTO を設定して実行すること. gt4f90io-g95-v0.9_debmake_main.sh も同様である.
DEBFULLNAME, DEBEMAIL で設定された値は Debian パッケージ内の changelog に書き込まれる. MAILTO で設定されたメールアドレスへは, このプログラム によるアップデートの結果が送られる.
$ cd buildpackage-tools $ DEBEMAIL=morikawa@xxx.xxxx.xx \ MAILTO=morikawa@xxx.xxxx.xx \ DEBFULLNAME="Yasuhiro MORIKAWA" \ ./gt4f90io-g95_debmake_main.sh -v
オプション -v によって動作の詳細が標準エラー出力に 表示される. 不要な場合は -v をはずすこと.
cron を利用することによって, 更新を自動化する.
$ crontab -e
以下に書き込む内容の例を示す. MAILTO, DEBEMAIL, DEBFULLNAME は 適宜変更せよ.
MAILTO=morikawa@xxx.xxxx.xx # gt4f90io-g95 Debian パッケージのアップデート (毎週月曜深夜にアップデート) # ※ 実際には 1 行で記述すること 30 3 * * 1 umask 002; cd /GFD_Dennou_Club/ftp/arch/cc-env/g95/gt4f90io-g95/buildpackage-tools ; DEBEMAIL=morikawa@xxx.xxxx.xx DEBFULLNAME="Yasuhiro MORIKAWA" ./gt4f90io-g95_debmake_main.sh
g95 は頻繁に更新されるため, バージョンによっては gt4f90io の コンパイルがうまくいかない場合がある. その場合, もし cron を利用した自動更新 を行っていて毎回 cron からエラーメールが 来るのが鬱陶しい場合は, 一時的に g95_version のバージョンを手動で 最新版に更新しておくと良い. こうすると再度 g95 がバージョンアップされる までは gt4f90io-g95 パッケージの自動生成を行わないため, エラーが生じない.
ただし, g95 がバージョンアップした際には, 「一つ前の deb パッケージが 取得できない」というエラーを生じるため, g95_version を元の (過去, gt4f90io-g95 を正しく生成できた) バージョンに手動で戻す. もしも再度 バージョンアップされた g95 でも gt4f90io ライブラリが生成できない場合は 再び上記のように g95_version を g95 の最新バージョンに手動で 変更すること.