本当は GUI をつけたいんだけど、まずは Plagger 単体を Universal Binary な CPAN モジュール群といっしょに配布できるかどうか試してみた。
http://8-p.info/Plagger/ から tarball をダウンロードして、
% tar zxvf Plagger-Mac-0.1.tar.gz
...
% cd Plagger-Mac-0.1/
% ls
CPAN/ assets/ plagger*
% (config.yaml を書く)
% ./plagger -c config.yaml
で動くと思います。プラグインは少なめです。assets/ はフォルダの直下にあるので、
global:
assets_path: assets/
してください。
Intel, PowerPC 問わず、インストール直後の Mac OS X 10.4 ですぐ使えるはずです。たぶんだけど。
(9/9 追記)
すみません。バグを見つけました。「"Can't locate Plagger.pm in @INC..." で動かない!」という方は plagger の
PERL5LIB="$PLAGGER_MAC_ROOT/CPAN/lib"
の行を
export PERL5LIB="$PLAGGER_MAC_ROOT/CPAN/lib"
と書き換えればうまくいくかと思います。
つくりかた
まず、~/.cpan/CPAN/MyConfig.pm の makepl_arg で PREFIX=~/CPAN と指定して、Plagger とその他もろもろを CPAN からインストール。
このままだと Intel Mac に持っていけないので、ls ~/CPAN/**/*.bundle で PowerPC でしか動かないモジュールを確認して、手動で tarball をダウンロード。Universal Binary として make し直す。
% perl Makefile.PL PREFIX=/Users/kzys/CPAN/
...
% make install_site CC='gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' LD='env MACOSX_DEPLOYMENT_TARGET=10.3 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk'
Net::SSLeay は Makefile.PL の引数の解釈がほかと違う。
% perl Makefile.PL /usr -- PREFIX=/Users/kzys/CPAN/
expat も Universal Binary として make する。
% CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk -arch i386 -arch ppc" ./configure --disable-dependency-tracking
XML::Parser::Expat に、さっきの expat を静的リンクする。
% perl Makefile.PL PREFIX=/Users/kzys/CPAN/ EXPATLIBPATH=/Users/kzys/expat-2.0.0/ EXPATINCPATH=/Users/kzys/expat-2.0.0/lib
...
% make install_site CC='gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' LD='env MACOSX_DEPLOYMENT_TARGET=10.3 gcc -arch ppc -arch i386 -isysroot /Developer/SDKs/MacOSX10.4u.sdk' OTHERLDFLAGS=/Users/kzys/expat-2.0.0/.libs/libexpat.a
バイナリがすべて universal になっていること確認する。
% file CPAN/**/*.bundle | grep 'fat file' | wc -l
22
% ls CPAN/**/*.bundle | wc -l
22
tarball にまとめるフォルダに ~/.cpan/build/Plagger-0.7.10/assets/ と ~/CPAN をコピー。なんとなく CPAN/ のなかを整理。man とかは消しちゃう。
- CPAN/usr/bin/ → CPAN/bin/
- CPAN/lib/perl5/site_perl/ → CPAN/lib/
最後に CPAN/bin/plagger を実行するシェルスクリプトを置いて完成。
% ls
CPAN/ assets/ plagger*