Go言語を修正してソースからビルドする
2017-07-06 / Go
Go自体に手を入れたいということがあって、ソースからビルドしてみた。
Goのソースコードを入手
公式のサイトから手に入る。開発中のものが欲しい場合にはgithubから取得する。
$ cd /tmp
$ wget https://storage.googleapis.com/golang/go1.8.3.src.tar.gz
$ tar xf go1.8.3.src.tar.gz
$ cd go
GOROOT_BOOTSTRAP を設定する
Goをビルドするために必要なGoを指定する環境変数。デフォルトでは $HOME/go1.4
になっている。必ずしも1.4が必要なわけではなく、1.4以上のバージョンであれば良い。
$ which go
/usr/local/go/bin/go
$ go version
go version go1.8 darwin/amd64
$ export GOROOT_BOOTSTRAP=/usr/local/go
ビルド
src
に移動して all.bash
を実行する。 all.bash
は src
に移動しないと実行できない。完了までには数分かかる。
$ cd src
$ ./all.bash
完了すると bin/go
が出来ている。
$ cd ../bin
$ ./go version
go version go1.8.3 darwin/amd64
独自の修正を加えた場合
修正した内容にexportedなものがあれば、必ずapi配下の goX.Y.txt
(X.Yはバージョン番号)を修正する。
例えば、fmtパッケージに
func PrintTwice(args ...interface{}) {
Print(args...)
Print(args...)
}
という変更を加えた場合、go1.8.txtに
pkg fmt, PrintTwice(...interface{})
というのを追記する。
ビルドの最後の方に、apiの変更をチェックするタスクがあって、そこで整合性の確認が行われるため、この記載がないとエラーになってしまう。
all.bash
を使わない方法がありそうだけど中身は見てない。
まとめ
- Goをソースからビルドするのは難しくない
- 必要なバージョンは1.4以上で、1.4必須ではない
- exportされた修正がある場合は、goX.Y.txtも修正する