昨日の「Tatsumaki」が動かない件 できました
どうしても動かないのが納得いかないので追いかけてました。最終的には解決したのですがそれでも腑に落ちないなぁ。。。
原因はこんな事でした。
Plackでは最終的なデータが出力されるモジュールはPlack::Server::*なのですがTatsumakiでは性質上Plack::Server::AnyEventになる事になる。
でFreeBSDではportsを使ってモジュールをインストールしていたのですが基本はCPANだよなと意味の分からない理屈でportsをアンインストールついでにPlack::Server::AnyEventに依存しているモジュール群もCPANから入れる事にした。
cpan>install Plack::Server::AnyEvent
make test でずっこけます。???
気を取り直し依存モジュールも削除する事に。
依存してるモジュールを調べるのにソースを呼んでたのですが自分には理解できない読み込み方をしてる部分がありました。
use constant HAS_AIO => !$ENV{PLACK_NO_SENDFILE} && try { require AnyEvent::AIO; require IO::AIO; 1; };
AIO系のモジュールなので多分ファイルハンドルのデータをnon blockで処理するモジュール?なのかと思いますがこれらもportsから入れてあったのでuninstallしてCPANからPlack::Server::AnyEventを入れました。
依存関係で自動で先のAIO系モジュールもinstallされるかと思いきや入らずに終了。
??となりましたが試しにTESTすると動作しなかったアプリが動きました。
原因はここかぁ。IO::AIO AnyEvent::AIO が入ってると何らかの理由により処理が失敗するようでした><
多分FreeBSD側の問題なんでしょうね。ドキュメントにはAIO系の事は一切触れて無いし。
※追記
うわぁあああああ perl の thread が有効になってねぇえええええ
これが有効になっていないとIO:AIOのinstallが失敗するという事でした><
portsって結構いいかげんだなthreadが有効になってなくてもp5-IO-AIOが入っちゃうって事でしょ。
これって入る入る詐欺><
CPANでIO::AIO install しようとしたら見事にmake test でこけました。
あーあ何やってんだか・・・・・・・