2009-03-06
■ Build.PL しかないモジュールを cpanflute2 で RPM 化する patch

293c293,299 < $makefile_pl = qq{CFLAGS="\$RPM_OPT_FLAGS" %{__perl} Makefile.PL destdir=\$RPM_BUILD_ROOT $installdirs < /dev/null}; --- > $makefile_pl = qq{CFLAGS="\$RPM_OPT_FLAGS" %{__perl} Build.PL destdir=\$RPM_BUILD_ROOT $installdirs < /dev/null}; > $make_install = qq{./Build pure_install PERL_INSTALL_ROOT=\$RPM_BUILD_ROOT}; > $spec->build(<<EOB); > $makefile_pl > ./Build %{?_smp_mflags} OPTIMIZE="\$RPM_OPT_FLAGS" > EOB > 297,299c303 < } < < $spec->build(<<EOB); --- > $spec->build(<<EOB); 303a308,309 > } >
なんで、$use_module_build で分岐させてるのに Makefile.PL 使おうとしてるのかがわからない。
ちなみに Build.PL の引数とかは全くわかってない。
2009-03-02
■ CPAN::Packager に微妙なパッチ

はてなグループで trackback 打つのどうすれば良いんだ?
リンク貼っておくと飛ぶとか? id:dann:20090221
module 名を解決してるところに perl ってのが来ると PerlInterp と解決されて、なぜか最終的に Inline::Java が依存関係に入ってくるという事態に陥ったので、perl が来たら return する。*1
diff --git a/lib/CPAN/Packager.pm b/lib/CPAN/Packager.pm diff --git a/lib/CPAN/Packager/ModuleNameResolver.pm b/lib/CPAN/Packager/ModuleNameResolver.pm index ce35906..cf22f4d 100644 --- a/lib/CPAN/Packager/ModuleNameResolver.pm +++ b/lib/CPAN/Packager/ModuleNameResolver.pm @@ -13,6 +13,8 @@ has 'ua' => ( sub resolve { my ($self, $module) = @_; + return if $module eq 'perl'; + my $res = $self->get_or_retry( "http://search.cpan.org/search?query=$module&mode=module"); return unless $res->is_success;
Test::Exception の Requires に Test::Builder::Tester が入っちゃって、それ Test::Simple だよ! とかちょっと苦戦したw かなり楽になってるとは思うけどめどいw これ config でどうにかなるのかな。
Mouse はこれで RPM 化できた気がするなぁ。作った RPM のテストってどうすれば良いんだろうね。
CPANPLUS::Dist::RPM も試してたけど、こっちはあまりうまくいってない。オプション周りがよくわかってないからっぽいなぁ。
cpanp のシェルに入って s conf dist_type CPANPLUS::Dist::RPM して s conf save して、インストールすると RPM ができてて、rpm 経由でインストールしてくれるってのは結構良いなぁ。
dann2009/03/30 03:04今日まで見過ごしてました! orz
dann2009/03/30 03:08コミットdone !
vkgtaro2009/03/30 11:03oh, thanks!
2009-02-14
■ 複数アプリを mod_perl 1プロセスに入れる対応

mod_perl で1プロセスに複数アプリを突っ込むと Config や Logger のインスタンスなど、Singleton 化していたものが混同するという問題があったのですが、mod_perl ブランチを経て修正され、先ほどマージされました。id:dann++
解決のきっかけになったのは Sledge::Registrar::context を Sledge::Pages::Base でセットするところだそうです。
Angelos#setup の該当部分
no warnings 'redefine';
local *Angelos::Registrar::context = sub {$self};
Angelos::Config などは、Angelos 側で Class::Singleton を使用して実装されていたので上記の方法で解決できてるのですが、Logger は Log::Dispatch 自身が Singleton 的な実装になっているためどう回避したのか気になってソースを読んでみました。
Angelos::Logger::Dispatch の build_logger で AppName::Logger::Backend な名前を作って _generate_logger_class に渡して、動的にクラスを生成しています。
sub _generate_logger_class { my ($self, $logger) = @_; # Log::Dispatch::Config is Singleton class, # This causes trobule under mod_perl enviroment, # So, we generate application specific logger class eval <<""; package $logger; use base qw/Log\::Dispatch\::Config/; }
そして、$logger->require して instance 生成してます。
sub build_logger { my $self = shift; my $logger = join '::', ( $self->_app_class, 'Logger', 'Backend' ); $self->_generate_logger_class($logger); $logger->require; $logger->configure_and_watch( Log::Dispatch::Configurator::YAML->new( $self->_logger_conf_file ) ); $logger->instance; }
ソース読んでて色々発見があって面白いですね!
2009-01-30
■ angelos のサイトができたよ!

angelos グループのトップなんだけどw
http://angelos.g.hatena.ne.jp/
Free CSS Template から、良さそうなの移植した。
当面、本体の完成まではこれでいい気がするね。
はてなグループ作った id:lyokato++
最近は赤が好きで、何となく赤い色を選びがちだったので、普段選ばないような色合いのものを選んでみた。
そしてどさくさに紛れて勝手にロゴも作ったw

PNG 透過なので IE6 は見苦しい表示になってるかもしれないけど。
色味はサイトデザインにあわせてるだけ。作ってるときは赤だったり青だったり。
そして、翼付けちゃってるけど、はたして angelos は angel なのかどうかが不明w
HTTP::Engine::Midleware 周りが追いついてけそうにないので、Angelos::Class::Pluggable とか Controller 周りを読むかなぁ。