yunomuのブログ

酒とゲームと上から目線

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とかかなぁ。

ビルドはまだできていません。