Crypt-OpenSSL-RC4 を Module::Build に移行してみた

Crypt-OpenSSL-RC4 では Module::Install を利用していたのだが、libs('-lcrypto') を指定しても Solaris の場合だけリンカ実行するときに -lcrypto が指定されないという現象にみまわれた。

で、原因をおってもよかったのだが、めんどくさいので Module::Build に移行してみた。結果、うごいたっぽいのでそれでよしとしてこれについては忘れることにする。

Build.PL は以下のようにかいた。

use 5.008001;
use strict;
use Module::Build;
use lib qw(inc);
use Devel::CheckLib;

check_lib_or_exit(
    lib => [qw(crypto)]
);

my $build = Module::Build->new(
    module_name          => 'Crypt::OpenSSL::RC4',
    build_requires       => { 'Test::More' => 0, },
    requries             => {},
    recommends           => {},
    recursive_test_files => 1,
    sign                 => 0,
    create_license       => 1,
    license              => 'artistic_2',
    extra_linker_flags   => '-lcrypto',
    c_source             => './lib/Crypt/OpenSSL/',
    dist_author          => 'Tokuhiro Matsuno <tokuhirom gmail.com>',
);
$build->create_build_script;

M::B は参考にできるものがすくないのとまわりにつかってる人がすくないのが難点。ドキュメントも、チュートリアル的なのがみつからなくてこまる。
自分の場合は手元にすべての CPAN モジュールをぶちまけているので、「locate Build.PL」して、参考になりそうなものをみつけてコピペした(LBROCARD/Image-Imlib2-2.03/Build.PL が一番参考になった)。

Devel::CheckLib 相当のものは当然組込まれてるんだろうな、とおもってさがしたがそれっぽいものがなかったので素直に Devel::CheckLib をつかった。use-devel-checklib というコマンドをたたくと自動的に Build.PL が書きかえられて、inc/ がつくられて便利。

まとめ

Module::Build に移行したらなんとかなったけど、どうも情報がすくない。

Published: 2010-03-23(Tue) 21:44