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 などのデフォルトの場所は変えた。

<< 2007/03 >>
01 02 03
04 05 06 07 08 09 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

RSS