この文書は spml の debian パッケージ作成の手引である.
使用するオプショナルライブラリと使用したコンパイラ毎に ライブラリを用意するので, 名前を
spml-[(オプショナルライブラリ名)-]*-(コンパイラ名)
とする.
コンパイラ名は
ffcN Fujitsu Fortran90 compiler ver. N (N はバージョン名) ifcN Intel fortran ver. N
以下では ffc Ver.5 を用いることを想定する.
オプショナルライブラリとして想定されるものは
lapack, ssl2 : 行列計算(固有値)用ライブラリ fftw2 : FFT 用ライブラリ
の 2 種類である. 生成されるパッケージ名はそれぞれ
spml-ffcN Fujitsu Fortran 使用 spml-lapack-ffcN Fujitsu Fortran, lapack 使用 spml-ssl2-ffcN Fujitsu Fortran, ssl2 使用 spml-fftw2-ffcN Fujitsu Fortran, fftw2 使用 spml-fftw2-lapack-ffcN Fujitsu Fortran, fftw2, lapack 使用 spml-fftw2-ssl2-ffcN Fujitsu Fortran, fftw2, ssl2 使用 spml-doc ドキュメント,サンプルプログラム
である.
またソース名は
spml-<コンパイラ名>
もしくは
spml-doc
としている(単一のソースから複数のパッケージを生成している).
パッケージ作成, 更新作業の前にパッケージ情報に引用される環境変数 EMAIL と DEBFULLNAE を適切に設定しておくこと. 例えば
$ export EMAIL=uwabami(at)gfd-dennou.org # (at) は @ に置きかえる. $ export DEBFULLNAE="Youhei SASAKI"
EMAIL, DEBFULLNAME は適宜各人の情報に合わせる.
事前に以下のパッケージが実行環境にインストールされているか確認する.
dh-make debhelper build-essential fakeroot cdbs
また, FFC を使用する場合には
ffc(>= N) もしくは ffcpara(>= N) ispack-ffcN ispack-fftw2-ffcN fftw-no2underscore netcdf-ffcN gt4f90io-ffcN lapack-dev
ifc を使用する場合には
ifcN ispack-ifcN ispack-fftw2-ifcN fftw-no2underscore netcdf-ifcN gt4f90io-ifcN lapack-dev
をインストールしておく.
ソースをダウンロードして展開後, パッケージ情報を作成する. 例えば, ソー スを展開して生成されるディレクトリが spml-4.2 であり, 作成するソースパッ ケージが spml-ffcN-4.2 の場合,
$ tar xvzf spml.tar.gz $ mv spml-4.2 spml-ffcN-4.2 $ cd spml-ffcN-4.2 $ dh_make -m -b -f ../spml.tar.gz
とする. dh_make のオプションとして,
-m: シングルバイナリの生成 -f: オリジナルソースアーカイブを指定 -b: パッケージ作成に cdbs を使用する.
を指定した.
今回は不要なので, debian ディレクトリ内の *.ex, *.EX のついた雛形ファイ ルは削除しておく.
以下では使うコンパイラが ffcN(Nはバージョン番号) の場合について記述する. Source セクションは次の通りである.
Source: spml-ffcN Section: math Priority: optional Maintainer: Youhei Sasaki <uwabami(at)gfd-dennou.org> Build-Depends: cdbs, debhelper (>= 5), autotools-dev, ffc(>=N)|ffcpara(>=N), netcdf-ffcN, netcdfg-dev, gt4f90io-ffcN, ispack-ffcN, ispack-fftw2-ffcN, fftw-no2underscore, lapack3-dev Standards-Version: 3.7.2
また, Package セクションはパッケージ毎に記述する. 例えば作成するパッケージが
spml-fftw2-lapack-ffcN
の場合には
Package: spml-fftw2-lapack-ffcN Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, netcdf-ffcN, netcdfg-dev, gt4f90io-ffcN, ispack-fftw2-ffcN, fftw-no2underscore, lapack3-dev Description: SPML is Fortran90 module library for solveing fundamental GFD problems SPML (a SPectral Model Library) is a Fortran90 module library for constructing spectral models for fundamental geophysical fluid dynamic problems. Fortran90 modules of this library are based on ISPACK (http://www.gfd-dennou.org/arch/ispack), which is also library for spectral models but written in Fortran77. This package provides module binary files built with Fujitsu Fortran Compiler ver. 5, using fftw2 library, include lapack interface. GFD-Dennu Club spmodel project web site is http://www.gfd-dennou.org/arch/spmodel.
である. 詳細は実ファイルを参照されたい.
ソースを落とした URL, Upstream Author を修正する. Copyright, License セ クションは ソースの COPYRIGHT を参照する様に記述しておく.
これらのファイルは pre-build.sh によって, rules から生成される. 詳細は pre-build.sh を参照されたい.
パッケージ化には cdbs を用いる. 詳細は実ファイルを参照されたい.
バイナリとソースの両方を更新したい場合にはソース直下において
$ debuild -rfakeroot -uc -us
を実行する. その結果, 一つ上のディレクトリに
spml-ffcN_<version>_i386.deb spml-lapack-ffcN_<version>_i386.deb spml-ssl2-ffcN_<version>_i386.deb spml-fftw2-ffcN_<version>_i386.deb spml-fftw2-lapack-ffcN_<version>_i386.deb spml-fftw2-ssl2-ffcN_<version>_i386.deb spml-ffcN_<version>.diff.gz spml-ffcN_<version>.dsc spml-ffcN_<version>_i386.build spml-ffcN_<version>_i386.changes spml-ffcN_<version>.orig.tar.gz
が生成される. また, バイナリだけを更新したい場合にはソース直下において
$ fakeroot ./debian/rules binary
とする.
既に作成したパッケージに不具合があった場合, もしくは更新する場合には,
spml-ffcN_<version>.diff.gz spml-ffcN_<version>.dsc spml-ffcN_3.6.2.orig.tar.gz
をダウンロードしてきて
$ dpkg-source -x spml-ffcN_<version>.dsc
を実行する. もしくは,
$ apt-get source spml-ffcN
とする. これにより, debian ディレクトリを含むソースツリーが展開される.
変更すべき点は
を行なう. changelog の更新には
$ dch -i
を行うと良い. これによりエディタが changelog ファイルを時動的に読み込ん で起動する. この場合, 記載されるパッケージ番号が自動的に一つ上るが,コン パイラの違いによる新パッケージ生成であるから, パッケージ名とバージョン を適切に修正する.
バージョンを明示したい場合は
$ dch -v <version>
とする. ここで指定するバージョンは <ソースバージョン>-<debian パッケー ジバージョン> のようにする.
後はパッケージ作成と手順は同じである.
ソースに修正を加え changelog を更新した後は新規パッケージと同様の手順 でパッケージを生成する.
ソースが更新された場合(ここでは spml-0.4.3 がリリースされたとする), 古いソースディレクトリにて
$ uupdate -u ../spml.tar.gz -v 0.4.3
を実行する. これにより, 時動的にソースが更新される. 1 つ上のディレ クトリに新しいソースツリーが展開されているのでそちらへ移動し, あと は新規パッケージと同様の手順でパッケージ化する.