Daily Archives: 2013年9月23日

Xcode 5.0 で不調になった Haskell 環境をなんとかする

iOS 7 のリリースに合わせて Xcode 5.0 がリリースになり、思わずアップデートしてしまった人はきっと私だけじゃないはず。しかし、これによって私の Haskell 環境は調子が悪くなってしまいました。特に Haskell コード中のシングルクォートの扱いがおかしいケースが目立ちました。

なお、私の Haskell 環境は Homebrew でインストールしたものです。

GHC に使わせる gcc を変更する

問題の原因は、Xcode 5.0 付属の gcc のようです。そこで、gcc のバージョン 4.7 を別途インストールします。

brew tap homebrew/versions
brew install gcc47

GHC の設定を変更するため /usr/local/Cellar/ghc/7.6.3/lib/ghc-7.6.3/settings を修正します。

2
 ("C compiler command", "/usr/bin/gcc"),

↑これを↓このように修正します。

2
 ("C compiler command", "/usr/local/bin/gcc-4.7"),

これでだいたい良さそうでしたが、これだけでは Yesod が依存している entropy のコンパイルが通りませんでした。どうも単純にパス上の gcc を見ているくさいのです。ですので、Homebrew を使っているのでしたら、/usr/bin よりも /usr/local/bin を優先してパスを通しているかと思いますので、ここにシンボリックリンクを作成してしのぎましょう。

ln -s /usr/local/bin/gcc-4.7 /usr/local/bin/gcc

ただしこれをやると、ほとんど Xcode の gcc をパス上から隠蔽することになるわけですから、その点十分に注意してください(コマンドラインで Xcode に依存するような開発をする場合など)。

それから、haskell-platform も念の為に再インストールしたほうがいいかもしれません。

brew uninstall haskell-platform
brew install haskell-platform