brew で gcc と ghc の version を上げたら Agda が build できなくなったので repository から build したおはなし
環境
- Mac OSX 10.9.4
- Homebrew 0.9.5 (bd3217ea598e9ccf85bb5b1f5ac244f1641378f8)
- gcc 4.9.1
- ghc 7.6.3 (brew 的には 7.6.3_3)
- cabal-install 1.20.0.2 (installed by homebrew)
- cabal-install 1.20.0.3 (installed by cabal-install)
経緯
一旦 cabal を消して gcc と ghc の version を上げる
- brew uninstall haskell-platform
- brew upgrade gcc
- brew upgrade ghc
- rm -rf ~/.cabal ~/.ghc
- brew install haskell-platform
そして cabal で agda を入れる
- rehash
- cabal update
- cabal install cabal-install
- rehash
- cabal install agda
と、こんなエラーが。
src/full/Agda/Utils/Cluster.hs:50:10:
Duplicate instance declarations:
instance Monad m => Functor (EquivT s x y m)
-- Defined at src/full/Agda/Utils/Cluster.hs:50:10
instance Functor m => Functor (EquivT s c v m)
-- Defined in ‘Data.Equivalence.Monad’
cabal: Error: some packages failed to install:
Agda-2.4.0.1 failed during the building phase. The exception was:
ExitFailure 1
調べてみると依存パッケージの equivalence に 0.2.4 から Agda と重複する内容が入ったらしいです。
解決方法としては equivalence を downgrade するか Agda の該当部分を排除しろ、とのこと。
HEAD からの build と haskell-platform からの脱却
stack over flow に書かれてるっぽいのでおそらく HEAD では修正されてないかなー、ということで repository を落としてみる。
- cabal info agda
の Source Repo に github があったのでそれを clone。
あと brew 側で haskell-platform ではなく cabal-install を使ってみたり。
何故か依存が自動インストールされなくて happy と alex を入れたりもした。
結果的に実行したコマンドは以下な流れ。
- cabal install happy
- cabal install alex
- git clone https://github.com/agda/agda.git
- cd agda
- ./configure
- make
make すると cabal install が走ってくれるみたいで結果的に実行ファイルがきちんと .cabal に入ってた。
ちなみに記事を書いた時点での HEAD は a11a5fb9fc8421747f50d0280c3afe650acd4f1b で Agda の versioning は 2.4.1 扱いになってました。
brew で gcc の install から実行するとなると
- brew install gcc
- brew install ghc
- brew install cabal-install
- rehash
- cabal update
- cabal install cabal-install
- rehash
- cabal install happy
- cabal install alex
- git clone https://github.com/agda/agda.git
- cd agda
- ./configure
- make
ってな感じでしょうか。
とりあえず Agda 2.4.1 がリリースされれば問題無く build できるはずなので、それまでの間で発生しちゃう問題っぽさそうです。
0 件のコメント:
コメントを投稿