Goに対する知識はほとんどない。ghqとかにプルリク投げてたくらい。
今のBigSur M1じゃGoをHomebrewインストールできないけど、なんとかしようとしている。
HomebrewのGoはソースコードをmake.bashでビルドすることでインストールしているけど、./make.bash --no-clean
実行中に以下エラーになる。
./make.bash: line 184: 94599 Segmentation fault: 11 GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" GO111MODULE=off "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
Goよく知らないけど、最近のGoはGo1.4以上を事前に入れないとビルドができない。 Goをビルドする前にbootstrapのGoを事前にインストールしていてそれが1.7なんだ。とても古い。
具体的にはこの辺り(直近1.15.6もプルリク投げたけどgodep周りで他のGo依存フォーミュラが盛大にインストールできなくなってるからコアコミッターさんなどのご協力もありなんとかbumpできた) homebrew-core/go.rb at 798511ad089608e1a92f0e82e93bf016e073c90b · Homebrew/homebrew-core · GitHub
Segmentation faultの根本原因は不明なんだけど、Segmentation faultが出るのは古いboostrap Goを使っているのが原因で、これをバージョンアップすることによって解決する。 http://storage.googleapis.com/golang
Go 1.16がM1対応していて、brew install go --HEAD
したら一応最新版がビルドできるけど、前述のbootstrapのgoのバージョンが古すぎてSegmentation faultなのを解決しようとしたプルリクがこれ。
通常ベータ版はstableに入れないけど、Goは他パッケージとの兼ね合いで影響範囲がデカすぎるから事前に入れてしまおうというのが今の流れ。 github.com