brew install haskell-stack がstackをソースからコ...

brew install haskell-stack
がstackをソースからコンパイルしちゃう件って、今でもそうなんでしょうか。
本来stackはコンパイル済みの実行ファイルからインストールした方が時間もかからないし安全なやり方なんですが、以前見たときはそうなっておらず、わざわざGHCをインストールしてstackのビルドから始めるという面倒な仕様でした。

Replies

brew install haskell-stack
がstackをソースからコンパイルしちゃう件って、今でもそうなんでしょうか。
本来stackはコンパイル済みの実行ファイルからインストールした方が時間もかからないし安全なやり方なんですが、以前見たときはそうなっておらず、わざわざGHCをインストールしてstackのビルドから始めるという面倒な仕様でした。

で、当時報告しようと思って、「その前にDiscourseというのを使ったフォーラムがあるみたいだしそっちでの相談からするか」と思ったらバグにハマってしまったのかログインできず、どこに報告すればいいかもわからなくて詰んだ、ということがあったんですが。。。

homebrew-coreは基本的にソースからビルドする方針でバイナリインストールはCIでビルドしたbottoleのみ、それ以外のバイナリはhomebrew-caskでという方針だったような気がします。方針はどこかに書いてあるかなあ。

なるほどそういうポリシーなんですね。。。確かに言われてみればどこかで聞いた気がする。。。悩ましいな。。。

昔 cask に登録したんですが、 haskell-stack と重複するということで消されちゃいましたね…
https://github.com/Homebrew/homebrew-cask/commit/f3401525970dc2e0f3caf12b25f15ad74466f716#diff-d33387f91fa14758d5d2cd457700fcbe

むー、わざわざ消したと言うことはそれなりの理由があるってことですよね。。。
なんでバイナリーよりソースコードからのインストールを優先したんだろう。
「brew installで入れないで」という記事でも書こうかと思ったけどその辺踏まえてからの方が良さそうですな。。。

(昔の事情はよく知りませんが,)最新のだと普通にbottleにstackのバイナリがprebuiltで入ってる気がしますね

tar tf ~/Library/Caches/Homebrew/downloads/1e4899432ad59163362a51ca3f2df23d87312f999ac5fb08948a8d0cc59e14b3--haskell-stack-1.7.1.high_sierra.bottle.tar.gz
haskell-stack/1.7.1/
haskell-stack/1.7.1/.brew/
haskell-stack/1.7.1/bin/
haskell-stack/1.7.1/ChangeLog.md
haskell-stack/1.7.1/INSTALL_RECEIPT.json
haskell-stack/1.7.1/LICENSE
haskell-stack/1.7.1/README.md
haskell-stack/1.7.1/bin/stack
haskell-stack/1.7.1/.brew/haskell-stack.rb

おっ、 https://github.com/Homebrew/homebrew-core/blob/master/Formula/haskell-stack.rb を読んだ限り相変わらずビルドしてるのかな、と思ってましたが、違うのか。
読んだだけじゃわからないもんですね。

bottleのセクションがCIでビルドしたバイナリのハッシュです

> なんでバイナリーよりソースコードからのインストールを優先したんだろう。
stack はコマンドラインツールなので、 GUI が中心の cask ではなく brew がふさわしいという判断だったようです。ソースコードからビルドされてしまう (キャッシュされるにせよ) ことは考えられていないように見えます。
https://github.com/Homebrew/homebrew-cask/issues/15603#issuecomment-170067179