Hatena::Grouphaskell

HowManyFilesの日記

 | 

2010-02-10その後

人力検索用のエントリ

18:06

現在 Haskell の習得に挑戦しているのですが、HOC というパッケージの導入で躓いています。はてなダイアリーをはじめ各種ウェブサイトで情報を探したのですが、自力では解決方法を見つけることが出来ませんでしたのでこちらで質問させていただきます。

Mac OS X 10.6.2/GHC 6.12.1(GHC 6.10.4 でも可) の環境で、HOC を導入する手順と、導入作業にあたり注意すべきことを教えてください。GHC6.12.1/GHC6.10.4にて導入を試みた際の作業手順を下にまとめています。間違った点があれば指摘していただけるとありがたいです。

GHC6.12.1にて導入を試みた際の手順

  1. Xcode 3.2.1 をインストール
  2. GHC 6.12.1 を Haskell.org のダウンロードページ より入手し、インストール
  3. Cabal-1.8.0.2 をインストール
  4. HTTP-4000.0.9 をインストール
  5. zlib-0.5.2.0 をインストール
  6. cabal-install-0.8.0 をインストール
  7. svn co http://hoc.googlecode.com/svn/trunk/hoc して、HOCの最新リビジョンをダウンロード
  8. cd hoc して cabal configure

ここで下記のようなエラーが出力され、どうにも自分では解決出来ません。なお、この質問を書いている時点の最新リビジョンは413です。hoc に添付されている README.txt に書いてある通り、『runhaskell Setup configure』も試したのですが、同じエラーが出力されます。

etup.hs:18:19:
    Couldn't match expected type `GenericPackageDescription'
           against inferred type `Either
                                    GenericPackageDescription PackageDescription'
      Expected type: (GenericPackageDescription, HookedBuildInfo)
      Inferred type: (Either
                        GenericPackageDescription PackageDescription,
                      HookedBuildInfo)
    In the `confHook' field of a record
    In the second argument of `($)', namely
        `defaultUserHooks
           {confHook = customConfig, buildHook = customBuild}'

Setup.hs:88:21:
    Couldn't match expected type `GenericPackageDescription'
           against inferred type `Either
                                    GenericPackageDescription PackageDescription'
      Expected type: (GenericPackageDescription, HookedBuildInfo)
      Inferred type: (Either
                        GenericPackageDescription PackageDescription,
                      HookedBuildInfo)
    In the first argument of `configure', namely `pdbi'
    In a stmt of a 'do' expression: lbi <- configure pdbi cf

GHC6.10.4にて導入を試みた際の手順

  1. Xcode 3.2.1 をインストール
  2. Haskel Platform』よりGHC 6.10.4 をインストール
  3. Snow LeopardにGHC 6.10.4入れた』を参考に、usr/bin/ghc を修正
  4. Mac OS X 10.6 でcabal-installを設定する』を参考に、cabal-install が使えるようにパッケージ類を導入
  5. svn co http://hoc.googlecode.com/svn/trunk/hoc して、HOCの最新リビジョンをダウンロード
  6. cd hoc して cabal configure

この場合でも同じようにエラーが出力されました。runhaskell configure でもやはり同じようにエラーが出力されます。

自分でわかっていることと、わかっていないこと

わかっていること

エラーメッセージを読む限り、パッケージの依存とか以前のところで Setup.hs がこけているように見えます。(GenericPackageDescriptin 型のデータを受け取る関数に対して Eigher GenericPackageDescription PackageDescription なデータが渡されている?)

わかっていないこと
  • 結局どうすれば HOC を導入出来るのか
  • Setup.hs にあからさまなエラーがあるとは考えにくい(リビジョンをいくつか遡ってみたが、当該箇所に特に変化はなかったので)が、私の環境のどこがおかしいのか

mr_konnmr_konn2010/02/27 19:02どうやら、Cabalが新バージョンになって使用が変わったのが原因のようですね。
考えられる対策としては、

1. Cabal を Cabal-1.6.x系統にグレードダウンする
2. Setup.hs を書き換える

のどちらかだと思います。しばらくは1.8に移行していない他のライブラリでも同じエラーが出るのではないかと。
いずれはCabal-1.8系統に対応したモノが増えると思いますので、手間がかかりますが2の手段を執るのが良いと思います。

それならば、Setup.hsの88行目付近の

customConfig :: (Either GenericPackageDescription PackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo



customConfig :: (GenericPackageDescription, HookedBuildInfo) -> ConfigFlags -> IO LocalBuildInfo

に書き換えると動くのではないかと思います。ただ、ちょっと今Haskellが使えない環境なのでうまくいくかわからないので、もし無理だったら一時的にCabalを1.6に替えるのがよいかと思います。

 |