Mac OS SierraをアップデートしたらYesodでビルドが不能になった。ちなみにStackを使っている。
Ubuntsu 14.04仮想環境をVirtual boxで構築して移行したがVMがやはりぼくのマシン(Mac book air 2012ぐらい)には重い。CPUがブーブーいいだすので結局使わなかった。
http://deathmarch.hatenablog.jp/entry/2016/08/27/161156
いやあ、最新環境を追うのって辛いっすね。最近は動かなくなる。昔からこんな感じだったっけ?emacs for mac OS Xも起動時にクラッシュしたのも最近のSierra Updateによってです。その話はまた書きます。
で、Yesodが動かなくなったのでしばらく開発をやめていたのです。
どうやらコンパイラGHCがだめらしい。
対応をずっと待っていた。
最近GHC8.0.2でMac OS SIerraで対応したという情報を得た。
ここを粘って見ていたんですよ。こういうのものつらいなあ。
https://ghc.haskell.org/trac/ghc/ticket/12479
Haskellコミュニティもすぐには対応できない。手作り感がありますね。まだまだHaskellプログラマは少数派です。いままで安定したものしか使ったことなかったので、人類が進んでいく感じがする。
最先端ってこういうものなんだなあ。楽しいけど苦労もある。
で、待ちに待ったGHC 8.0.2のリリースがありました。
GHC 8.0.2を使えばビルドが成功する。と思う。
やったー。
しかし、Stackを使うには、ハードルがまだあった。
Stackは、ビルドに成功するパッケージの集合です。まだGHC8.0.2には対応していなかったわけです。
Cabalを使っていたときはパッケージ間に不整合が発生しビルドできない、いわゆるCabal Hellに陥るわけです。これも今までハマってきたなあ。Stackはこの問題を解決した。
解決策としてはStackで、コンパイラを指定する。stack.yamlでsystem-ghcを指定しよう。
それとskip-ghc-checkも必要だな、たぶん。
Turn on system GHC
system-ghc: true
https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md
で、コンパイルすると、ああああ、まだだめかあああ。
ghcのバージョンと、現状のstackageが不整合があるのです。理由はghcはbaseのバージョンを持っていてそれが新しすぎるからっす。
解決策は、stackage最新版っす。素晴らしい。GHC8.0.2が含まれている。これも8.0.2のリリースから少し待った。
https://www.stackage.org/nightly-2017-01-31
つかれた。
で、まだだめだよwww
だんだん記憶も朦朧としてきたので、このあたり間違っているかもしれない。ごめんなさい。人柱疲れっす。
yesod templateで生成するcabal指定のdirectoryパッケージ指定が古くてパッケージ不整合が起きたんだよ。たぶん。罠おおすぎ。こりゃユーザ増えないってまじで。
ちょっと強引でよくないですが、~/.stack/config.yamlにプロジェクト非依存の以下を設定しましょう。
allow-newer: true
以上になります。これでビルドできるました。
このあたりも参考にしてください。
http://ku00.hatenablog.com/entry/2016/09/25/180919
つかれるな、しかし。
ところでVisual Studio 2015もupdate版を3個だしているけど、それも結構いまいちで、前のバージョンはデバッガの問題で変数値をウオッチできなかったりした。開発環境\ なんて本当に大事だからビジネスユースでは本当にこまる。ソフトウェア品質が問題になる時代は前からだと思うが、ビジネスのスピードと品質がせめぎ合う時代で、最近はスピードのほうに振れているのではないかな。つかれるよ、ともかくさ。