Mighttpd2のビルドしようかと思ったけれど
結論から言うとできてません。
やたら早く目がさめたので遊んでる。
Haskellはもういいよって言ったけど、なんか適当なHaskell実装は一度は見てみたいなぁとは思っていて、Mighttpd2のソースを見てみたら案外量が少なかったのでちょっとやる気が出た。気になることはソースに聞こう。
やるやらないは別として、ちょっといじれる状況くらいは作っておこうと思って、ビルドしてみる。
kazu-yamamoto/mighttpd2 - GitHub
ちなみに普通に入れるならcabalで一発っぽい。
# cabal install mighttpd2
1と2の違いはわからない。
cabalってビルドもできたのかー。などと思いながらさっそく
# git clone git://github.com/kazu-yamamoto/mighttpd2.git # cd mighttpd2 # cabal configure
ってやったらcabal updateしろって怒られたのでとりあえず
# cabal update
そしてconfigで足りないと言われたパッケージを入れる。
# cabal configure (足りないパッケージ一覧) # cabal install hashmap http-conduit http-date http-types unix-bytestring wai wai-app-file-cgi wai-logger-prefork warp
結構、どころじゃない時間がかかった。
満を持してビルド。一旦configureしないといけないらしい。
# cabal configure Resolving dependencies... Configuring mighttpd2-2.5.0... # cabal build ...(略)... Mighty.hs:88:16: Couldn't match expected type `enumerator-0.4.18:Data.Enumerator.Internal.Iteratee BS.ByteString IO t0' with actual type `conduit-0.0.4:Control.Monad.Trans.Resource.ResourceT m0 H.Manager' In a stmt of a 'do' expression: mgr <- H.newManager In the expression: do { mgr <- H.newManager; fileCgiApp (cspec lgr) (filespec getInfo) (revproxyspec mgr) route req } In the second argument of `($)', namely `\ req -> do { mgr <- H.newManager; fileCgiApp (cspec lgr) (filespec getInfo) (revproxyspec mgr) route req }'
コケた! expectedとactualの型が全然違うように見えるけど大丈夫か? まあ大丈夫じゃないんだけど。
と、ここまでやったところで、私が本当に知りたいところ(Haskellって何ができないの?という疑問)はここでインストールしたパッケージの中にあるんじゃないかって気がしてきた。
ので調べる。
# cabal list PACKAGE
で調べられるらしい。
* hashmap Synopsis: Persistent containers Map and Set based on hashing. Default available version: 1.2.0.1 Installed versions: 1.2.0.1 Homepage: http://git.auryn.cz/haskell/hashmap/ License: BSD3 * http-conduit Synopsis: HTTP client package with conduit interface and HTTPS support. Default available version: 1.1.1 Installed versions: 1.1.1 Homepage: http://www.yesodweb.com/book/http-conduit License: BSD3 * http-date Synopsis: HTTP Date parser/formatter Default available version: 0.0.1 Installed versions: 0.0.1 License: BSD3 * http-types Synopsis: Generic HTTP types for Haskell (for both client and server code). Default available version: 0.6.8 Installed versions: 0.6.8 Homepage: https://github.com/aristidb/http-types License: BSD3 * unix-bytestring Synopsis: Unix/Posix-specific functions for ByteStrings. Default available version: 0.3.5 Installed versions: 0.3.5 Homepage: http://code.haskell.org/~wren/ License: BSD3 * wai Synopsis: Web Application Interface. Default available version: 0.4.3 Installed versions: 0.4.3 Homepage: https://github.com/yesodweb/wai License: BSD3 * wai-app-file-cgi Synopsis: File/CGI App of WAI Default available version: 0.4.4 Installed versions: 0.4.4 Homepage: http://www.mew.org/~kazu/ License: BSD3 * wai-logger-prefork Synopsis: A logging system for preforked WAI apps Default available version: 0.1.2 Installed versions: 0.1.2 License: BSD3 * warp Synopsis: A fast, light-weight web server for WAI applications. Default available version: 0.4.6.3 Installed versions: 0.4.6.3 Homepage: http://github.com/yesodweb/wai License: BSD3
私が知りたいのはこいつらの正体なんじゃなかろうか。waiあたりかなぁ。
っていうかmighttpd2.cabalの中身見ればモジュール一覧は書いてあった。networkとかかなぁ。
ビルドはまだできていません。