Plagger のインストールを自動化する

March 22nd, 2007

長らく放置していた、Plagger の Mac OS X 10.4 むけバイナリパッケージ を更新することにした。

放置していたのは更新が面倒だからで、そこを直さないことには、今回がんばってもまたしばらく放置してしまうだろうから、いっそ全てを自動化してみた。

で、これを書いてから、2006年12月以来 Plagger が CPAN にリリースされていないことに気づく。更新必要ない……。

Universal Binary

前は ~/.cpan/build のなかで手動で make なんて書いていたけど、~/.cpan/CPAN/MyConfig.pm を適切に設定すれば、そんなことはしなくていい。

$CPAN::Config = {
  ...
  'make_arg' => q[CC=ub-cc LD=ub-cc],
  'makepl_arg' => q[PREFIX=~/CPAN INSTALLDIRS=site CC=ub-cc LD=ub-cc],
  ...
}

ub-cc は PATH の通ったところに置いたシェルスクリプトで

MACOSX_DEPLOYMENT_TARGET=10.3 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk $*

こんな内容。Universal Binary のためのオプションをつけて gcc を呼んでいる。

CPAN shell

CPAN shell は stdin が端末でなければ、デフォルトの設定ですべてを進めてくれるらしい。

cat <<EOF | perl -MCPAN -e shell
install YAML
EOF

デフォルトの設定ではだめな場合にも、o conf で make_arg と makepl_arg を変更しておけば、大抵なんとかなる。

cpan_dir=$HOME/CPAN
makepl_arg="PREFIX=$cpan_dir INSTALLDIRS=site CC=ub-cc LD=ub-cc"
...
cat <<EOF | perl -MCPAN -e shell
o conf makepl_arg 'TT_ACCEPT=y TT_XS_ENABLE=y TT_XS_DEFAULT=y TT_EXTRAS=n $makepl_arg'
install Template::Stash::XS
EOF

プラグイン

各プラグインが依存する CPAN モジュールについては Plagger-(VERSION)/deps/*.yaml を読んで、platform == MSWin32 なものをはじいてから、depends を見ればよい。

Mac::Carbon

サウンドのテストで奇声が流れるので、非常に心臓に悪い。