Debian (sid) で Plagger を使う (3) ― 2007年03月19日
長いこと中断していた、Debian (sid) 向けの Plagger のパッケージ作り。
- パッケージングするモジュールが既に deb になっていないかどうか、apt-find コマンドで探す
- パッケージなってなかったら、cpan シェルで get コマンド使ってダウンロード
- モジュール中の META.yml を読みこんで、recommends や requires などをリストアップし、必要なバージョンや、既にインストールされてたら $<PACKAGE>::VERSION と共にリストアップするスクリプトの作成
- パッケージ化したいモジュールと、そのモジュールが「依存」するモジュールを gnumeric に記録しつつ作業
- ひたすら dh-make-perl
といったところ。cpan コマンドの install は意地でも使わない。
ほとんど順調だったけど、現在はまっているのは、XML::FOAFから参照されている Crypt::OpenPGP から参照されている Math::Pari モジュール。
Debianオフィシャルな libpari-dev とリンクさせようと、 Makefile.PL や Pari.xs などを 修正して build してみたら、t/00_Pari.t で segv が発生する。 さて、どこが悪いのだろう。
Debian (sid) で Plagger を使う (4) ― 2007年03月19日
Math::Pari モジュールがうまくいかない件は、apt-get source で libpari-dev のソースコードを取ってきて展開し、 Makefile.PL に paridir= で、その展開した場所を渡すことでとりあえず「解決」。ただし、t/55_ のいくつかの テストが通らない。libpari-dev の debin package の パッチを見ると、64bit 環境で問題があるようだが...。
次にはまったのは、 Crypt::OpenPGPの
t/07-digest.t
RIPEMD160 でのdigestで問題が発生。ググって みると、ロシア語のサイトで、x86_64 環境で 問題があるらしきレポートが上がっていた。
あらためて Crypt::RIPEMD160 を再buildしてみる と、いろんなtestがfailしていた。64bit環境だとうまく 動作しないのだろうか。rt.cpan.org を検索してみると、そのものずばりのエラーレポートっぽい のを発見。
#19138: unsigned 32-bit int type is wrong on Linux amd64.
--- libcrypt-ripemd160-perl-0.04.orig/rmd160.h +++ libcrypt-ripemd160-perl-0.04/rmd160.h @@ -25,7 +25,7 @@ for your operating system and compiler */ typedef unsigned char byte; /* unsigned 8-bit integer */ typedef unsigned short word; /* unsigned 16-bit integer */ -typedef unsigned long dword; /* unsigned 32-bit integer */ +typedef unsigned int dword; /* unsigned 32-bit integer */ /********************************************************************/
これで Crypt::RIPEMD160 だけでなく、Crypt::OpenPGP もテストが通るようになった。
そしてようやく、Planet 本体のパッケージも作ることができた。ただ、config.yaml や assets_path などのデフォルトの場所は変えた。
最近のコメント