[インデックス 11472] ファイルの概要
このコミットは、Go言語のビルドシステムにおける重要な変更、具体的にはgopackツールの名称変更と配置変更に関するものです。gopackはpackにリネームされ、go-toolディレクトリに移動されました。これにより、Goのツールチェインの構造が整理され、将来的な拡張性や管理のしやすさが向上しています。
コミット
commit ff8133d42e19d22fc0f1a4dc05f587e135f51ce7
Author: Rob Pike <r@golang.org>
Date: Mon Jan 30 10:30:46 2012 -0800
gopack: rename pack, move to go-tool directory
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5598045
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ff8133d42e19d22fc0f1a4dc05f587e135f51ce7
元コミット内容
gopack: rename pack, move to go-tool directory
このコミットメッセージは非常に簡潔ですが、その内容はGo言語のビルドシステムにおける重要な変更を示しています。具体的には、gopackというツールがpackという名前に変更され、さらにgo-toolという新しいディレクトリに移動されたことを意味します。
変更の背景
Go言語の初期のビルドシステムでは、様々なツールがGoのソースツリー内の異なる場所に散在していました。gopackもその一つで、Goのパッケージアーカイブ(.aファイル)を作成するために使用される重要なツールでした。
このコミットが行われた2012年1月時点では、Go言語はまだ活発な開発段階にあり、ツールの命名規則や配置に関する整理が進められていました。gopackという名前は、Goのツールであることを示唆していましたが、より汎用的な「アーカイブツール」としての役割を明確にするためにpackという簡潔な名前に変更されたと考えられます。
また、go-toolディレクトリへの移動は、Goの公式ツールチェインの一部として、これらのツールを一元的に管理し、ユーザーがgo tool <command>形式でアクセスできるようにするための初期段階の取り組みの一環です。これにより、Goのビルドシステム全体の整合性が向上し、ツールの発見可能性と利用のしやすさが改善されました。
前提知識の解説
このコミットを理解するためには、以下のGo言語のビルドシステムに関する基本的な知識が必要です。
- Goのビルドプロセス: Go言語のソースコードは、コンパイラ(
gc,6g,8gなど、当時はアーキテクチャごとに異なる名前が使われていました)、アセンブラ(ga,6a,8aなど)、リンカ(gl,6l,8lなど)といったツールチェインによってコンパイルされ、実行可能なバイナリやライブラリが生成されます。 - パッケージアーカイブ (
.aファイル): Go言語では、コンパイルされたパッケージは.aという拡張子を持つアーカイブファイルとして保存されます。これは、C/C++における静的ライブラリ(.libや.a)に似ています。他のパッケージが依存するコードは、このアーカイブファイルからリンクされます。 packツール (旧gopack):packは、Goのパッケージアーカイブファイル(.a)を作成・操作するためのツールです。複数のコンパイル済みオブジェクトファイル(.8や.6など、当時はアーキテクチャごとに異なる拡張子が使われていました)を一つのアーカイブにまとめる役割を担っていました。これは、Unix系のシステムにおけるarコマンドに似ています。go toolコマンド: 現代のGoでは、go toolコマンドを通じて、Goの内部ツール(例:go tool vet,go tool pprofなど)にアクセスします。このコミットは、packツールがこのgo toolの管理下に置かれるための準備の一環でした。GOROOTとGOBIN:GOROOT: Goのインストールディレクトリのルートパスです。Goの標準ライブラリ、ツールチェインのソースコードなどが含まれます。GOBIN: Goの実行可能バイナリがインストールされるディレクトリです。通常、$GOROOT/binまたはユーザーの$HOME/go/binに設定されます。
Makefileとビルドスクリプト: Goの初期のビルドシステムは、主にMakefileとシェルスクリプト(buildscript/*.sh)に依存していました。これらのスクリプトが、コンパイラ、アセンブラ、packツールなどを呼び出してビルドプロセスを自動化していました。
技術的詳細
このコミットの技術的な核心は、Goのビルドシステムがgopackという特定の名前のツールに依存していた箇所を、新しい名前packと新しいパス$GOROOT/bin/go-tool/packに更新することです。
具体的には、以下の変更が行われています。
src/cmd/gopackからsrc/cmd/packへのディレクトリ移動とリネーム:src/cmd/gopackディレクトリがsrc/cmd/packに移動されました。これにより、ツールのソースコードの場所と名前が変更されました。src/cmd/{gopack => pack}/Makefileのように、Gitの差分表示ではディレクトリのリネームとして認識されています。
- ビルドスクリプト (
src/buildscript/*.sh) の更新:- Goの各プラットフォーム(darwin_386, linux_amd64など)向けのビルドスクリプト内で、
gopackコマンドを呼び出していた箇所が、新しいパス"$GOROOT"/bin/go-tool/packに置き換えられました。 - これは、Goの標準ライブラリ(
runtime,errors,sync,io,unicode,bytes,math,sort,container/heap,strings,strconv,encoding/base64,syscall,time,os,reflect,fmt,unicode/utf16,encoding/json,flag,bufio,encoding/gob,go/token,path/filepath,go/scanner,go/ast,io/ioutil,go/parser,log,path,go/build,os/exec,regexp/syntax,regexp,net/url,text/template/parse,text/templateなど)のコンパイルとアーカイブ化のステップに影響を与えます。 - これらのスクリプトは、各パッケージのオブジェクトファイル(例:
_go_.8,alg.8,atomic_386.8など)をpackコマンドに渡し、最終的なパッケージアーカイブ(例:runtime.a,errors.aなど)を生成していました。
- Goの各プラットフォーム(darwin_386, linux_amd64など)向けのビルドスクリプト内で、
Makefileの更新:src/Make.cmd,src/Make.pkg,src/Make.toolといった主要なMakefile内で、gopackへの参照が"$(GOROOT)/bin/go-tool/pack"に更新されました。これらのMakefileは、Goのビルドシステム全体の挙動を定義しており、ツールのパス変更がシステム全体に波及することを示しています。
src/cmd/go/build.goの変更:goコマンド自体がpackツールをどのように扱うかに関する変更が含まれています。具体的には、goコマンドが内部でpackツールを呼び出す際のパスが更新されました。これは、go buildやgo installなどのコマンドが正しく機能するために必要です。
src/cmd/gopack/doc.goの変更:gopackのドキュメントファイルがpackにリネームされ、内容も更新されました。
この変更は、Goのビルドシステムがよりモジュール化され、go toolという統一されたインターフェースを通じて内部ツールにアクセスする現代のGoの姿へと進化していく過程の一部です。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、主に以下のファイル群に集中しています。
-
src/cmd/{gopack => pack}/ディレクトリのリネームと移動:src/cmd/gopack/Makefile->src/cmd/pack/Makefilesrc/cmd/gopack/ar.c->src/cmd/pack/ar.csrc/cmd/gopack/doc.go->src/cmd/pack/doc.goこれは、gopackツールのソースコード自体がpackという新しい名前に変更され、src/cmd/packという新しいパスに配置されたことを示します。
-
src/Make.*ファイル群におけるgopackから$(GOROOT)/bin/go-tool/packへのパス変更:src/Make.cmdsrc/Make.pkgsrc/Make.toolこれらのファイルはGoのビルドプロセス全体を制御するMakefileであり、gopackコマンドの呼び出しが新しいパスに更新されています。
例:
--- a/src/Make.cmd +++ b/src/Make.cmd @@ -41,7 +41,7 @@ testpackage-clean: _test/main.a: _gotest_.$O @mkdir -p _test rm -f $@ - gopack grc $@ _gotest_.$O + "$(GOROOT)/bin/go-tool/pack" grc $@ _gotest_.$O _gotest_.$O: $(GOFILES) $(GOTESTFILES) $(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES) $(GOTESTFILES) -
src/buildscript/*.shファイル群におけるgopackから"$GOROOT"/bin/go-tool/packへのパス変更:src/buildscript/darwin_386.shsrc/buildscript/darwin_amd64.shsrc/buildscript/freebsd_386.shsrc/buildscript/freebsd_amd64.shsrc/buildscript/linux_386.shsrc/buildscript/linux_amd64.shsrc/buildscript/linux_arm.shsrc/buildscript/netbsd_386.shsrc/buildscript/netbsd_amd64.shsrc/buildscript/openbsd_386.shsrc/buildscript/openbsd_amd64.shsrc/buildscript/plan9_386.shsrc/buildscript/windows_386.shsrc/buildscript/windows_amd64.shこれらのシェルスクリプトは、Goの標準ライブラリを各OS/アーキテクチャ向けにビルドする際にpackツールを呼び出しており、その呼び出しパスが変更されています。
例:
--- a/src/buildscript/darwin_386.sh +++ b/src/buildscript/darwin_386.sh @@ -64,7 +64,7 @@ cp "$GOROOT"/src/pkg/runtime/zasm_darwin_386.h "$WORK"/runtime/_obj/zasm_GOOS_GO 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/rt0_darwin_386.8 -DGOOS_darwin -DGOARCH_386 ./rt0_darwin_386.s 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/sys_darwin_386.8 -DGOOS_darwin -DGOARCH_386 ./sys_darwin_386.s 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/vlop_386.8 -DGOOS_darwin -DGOARCH_386 ./vlop_386.s -gopack grc "$WORK"/runtime.a "$WORK"/runtime/_obj/_go_.8 "$WORK"/runtime/_obj/alg.8 ... +"$GOROOT"/bin/go-tool/pack grc "$WORK"/runtime.a "$WORK"/runtime/_obj/_go_.8 "$WORK"/runtime/_obj/alg.8 ... -
src/cmd/go/build.goの変更:goコマンドのビルド関連ロジック内で、packツールのパスが更新されています。
コアとなるコードの解説
このコミットのコード変更は、Goのビルドシステムにおけるpackツールのパスと名前の統一化に尽きます。
src/cmd/{gopack => pack}/: これは、gopackという名前の実行可能ファイルと、その関連ソースコードが格納されていたディレクトリが、packという新しい名前に変更されたことを示します。このリネームは、ツールの役割をより明確にし、Goの他の内部ツールとの命名規則の整合性を高める意図があったと考えられます。Makefileとbuildscript/*.shの変更: これらのファイルは、Goのビルドプロセスにおいて、コンパイルされたオブジェクトファイルをまとめてパッケージアーカイブ(.aファイル)を作成するためにpackツールを呼び出しています。変更前は単にgopackと呼び出されていましたが、変更後は"$(GOROOT)/bin/go-tool/pack"という絶対パスで呼び出されるようになりました。$(GOROOT): Goのインストールルートディレクトリへのパスを示す変数です。/bin/go-tool/: これは、Goの内部ツールが配置される新しい標準的な場所を示しています。これにより、Goのツールチェインがより整理され、go toolコマンドを通じてアクセスできるようになります。pack: 新しいツール名です。grc:packコマンドに渡される引数で、gはGoのオブジェクトファイルを扱うこと、rはアーカイブにメンバーを追加または置換すること、cはアーカイブが存在しない場合に作成することを意味します。
この変更により、Goのビルドシステムは、packツールをより明確に、そして統一された方法で参照するようになりました。これは、Goのツールチェインの進化における重要な一歩であり、後のgo toolコマンドの導入や、より洗練されたビルドプロセスの基盤となりました。
関連リンク
- Go言語の公式ドキュメント: Go言語のビルドシステムやツールに関する最新の情報は、公式ドキュメントで確認できます。
- https://go.dev/doc/
- https://go.dev/cmd/go/ (goコマンドについて)
- Goのツールチェインに関する議論: GoのメーリングリストやIssueトラッカーには、ツールの設計や進化に関する議論が残されている可能性があります。
参考にした情報源リンク
- Go言語のGitリポジトリ:
- Goのコードレビューシステム (Gerrit):
- https://golang.org/cl/5598045 (コミットメッセージに記載されているChange-ID)
- Go言語の歴史に関する記事やドキュメント (Goのビルドシステムの進化について言及されているもの)
- Unix
arコマンドのドキュメント (Goのpackツールがarに似た機能を持つため) - Goの
Makefileの構造に関する情報 (Goのビルドプロセスを理解するため) - Goの
buildscriptに関する情報 (Goのクロスコンパイルやビルド環境のセットアップを理解するため)
[インデックス 11472] ファイルの概要
このコミットは、Go言語のビルドシステムにおける重要な変更、具体的にはgopackツールの名称変更と配置変更に関するものです。gopackはpackにリネームされ、go-toolディレクトリに移動されました。これにより、Goのツールチェインの構造が整理され、将来的な拡張性や管理のしやすさが向上しています。
コミット
commit ff8133d42e19d22fc0f1a4dc05f587e135f51ce7
Author: Rob Pike <r@golang.org>
Date: Mon Jan 30 10:30:46 2012 -0800
gopack: rename pack, move to go-tool directory
R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/5598045
GitHub上でのコミットページへのリンク
https://github.com/golang/go/commit/ff8133d42e19d22fc0f1a4dc05f587e135f51ce7
元コミット内容
gopack: rename pack, move to go-tool directory
このコミットメッセージは非常に簡潔ですが、その内容はGo言語のビルドシステムにおける重要な変更を示しています。具体的には、gopackというツールがpackという名前に変更され、さらにgo-toolという新しいディレクトリに移動されたことを意味します。
変更の背景
Go言語の初期のビルドシステムでは、様々なツールがGoのソースツリー内の異なる場所に散在していました。gopackもその一つで、Goのパッケージアーカイブ(.aファイル)を作成するために使用される重要なツールでした。
このコミットが行われた2012年1月時点では、Go言語はまだ活発な開発段階にあり、ツールの命名規則や配置に関する整理が進められていました。gopackという名前は、Goのツールであることを示唆していましたが、より汎用的な「アーカイブツール」としての役割を明確にするためにpackという簡潔な名前に変更されたと考えられます。
また、go-toolディレクトリへの移動は、Goの公式ツールチェインの一部として、これらのツールを一元的に管理し、ユーザーがgo tool <command>形式でアクセスできるようにするための初期段階の取り組みの一環です。これにより、Goのビルドシステム全体の整合性が向上し、ツールの発見可能性と利用のしやすさが改善されました。
前提知識の解説
このコミットを理解するためには、以下のGo言語のビルドシステムに関する基本的な知識が必要です。
- Goのビルドプロセス: Go言語のソースコードは、コンパイラ(
gc,6g,8gなど、当時はアーキテクチャごとに異なる名前が使われていました)、アセンブラ(ga,6a,8aなど)、リンカ(gl,6l,8lなど)といったツールチェインによってコンパイルされ、実行可能なバイナリやライブラリが生成されます。 - パッケージアーカイブ (
.aファイル): Go言語では、コンパイルされたパッケージは.aという拡張子を持つアーカイブファイルとして保存されます。これは、C/C++における静的ライブラリ(.libや.a)に似ています。他のパッケージが依存するコードは、このアーカイブファイルからリンクされます。 packツール (旧gopack):packは、Goのパッケージアーカイブファイル(.a)を作成・操作するためのツールです。複数のコンパイル済みオブジェクトファイル(.8や.6など、当時はアーキテクチャごとに異なる拡張子が使われていました)を一つのアーカイブにまとめる役割を担っていました。これは、Unix系のシステムにおけるarコマンドに似ています。go toolコマンド: 現代のGoでは、go toolコマンドを通じて、Goの内部ツール(例:go tool vet,go tool pprofなど)にアクセスします。このコミットは、packツールがこのgo toolの管理下に置かれるための準備の一環でした。GOROOTとGOBIN:GOROOT: Goのインストールディレクトリのルートパスです。Goの標準ライブラリ、ツールチェインのソースコードなどが含まれます。GOBIN: Goの実行可能バイナリがインストールされるディレクトリです。通常、$GOROOT/binまたはユーザーの$HOME/go/binに設定されます。
Makefileとビルドスクリプト: Goの初期のビルドシステムは、主にMakefileとシェルスクリプト(buildscript/*.sh)に依存していました。これらのスクリプトが、コンパイラ、アセンブラ、packツールなどを呼び出してビルドプロセスを自動化していました。
技術的詳細
このコミットの技術的な核心は、Goのビルドシステムがgopackという特定の名前のツールに依存していた箇所を、新しい名前packと新しいパス$GOROOT/bin/go-tool/packに更新することです。
具体的には、以下の変更が行われています。
src/cmd/gopackからsrc/cmd/packへのディレクトリ移動とリネーム:src/cmd/gopackディレクトリがsrc/cmd/packに移動されました。これにより、ツールのソースコードの場所と名前が変更されました。src/cmd/{gopack => pack}/Makefileのように、Gitの差分表示ではディレクトリのリネームとして認識されています。
- ビルドスクリプト (
src/buildscript/*.sh) の更新:- Goの各プラットフォーム(darwin_386, linux_amd64など)向けのビルドスクリプト内で、
gopackコマンドを呼び出していた箇所が、新しいパス"$GOROOT"/bin/go-tool/packに置き換えられました。 - これは、Goの標準ライブラリ(
runtime,errors,sync,io,unicode,bytes,math,sort,container/heap,strings,strconv,encoding/base64,syscall,time,os,reflect,fmt,unicode/utf16,encoding/json,flag,bufio,encoding/gob,go/token,path/filepath,go/scanner,go/ast,io/ioutil,go/parser,log,path,go/build,os/exec,regexp/syntax,regexp,net/url,text/template/parse,text/templateなど)のコンパイルとアーカイブ化のステップに影響を与えます。 - これらのスクリプトは、各パッケージのオブジェクトファイル(例:
_go_.8,alg.8,atomic_386.8など)をpackコマンドに渡し、最終的なパッケージアーカイブ(例:runtime.a,errors.aなど)を生成していました。
- Goの各プラットフォーム(darwin_386, linux_amd64など)向けのビルドスクリプト内で、
Makefileの更新:src/Make.cmd,src/Make.pkg,src/Make.toolといった主要なMakefile内で、gopackへの参照が"$(GOROOT)/bin/go-tool/pack"に更新されました。これらのMakefileは、Goのビルドシステム全体の挙動を定義しており、ツールのパス変更がシステム全体に波及することを示しています。
src/cmd/go/build.goの変更:goコマンド自体がpackツールをどのように扱うかに関する変更が含まれています。具体的には、goコマンドが内部でpackツールを呼び出す際のパスが更新されました。これは、go buildやgo installなどのコマンドが正しく機能するために必要です。
src/cmd/gopack/doc.goの変更:gopackのドキュメントファイルがpackにリネームされ、内容も更新されました。
この変更は、Goのビルドシステムがよりモジュール化され、go toolという統一されたインターフェースを通じて内部ツールにアクセスする現代のGoの姿へと進化していく過程の一部です。
コアとなるコードの変更箇所
このコミットにおけるコアとなるコードの変更は、主に以下のファイル群に集中しています。
-
src/cmd/{gopack => pack}/ディレクトリのリネームと移動:src/cmd/gopack/Makefile->src/cmd/pack/Makefilesrc/cmd/gopack/ar.c->src/cmd/pack/ar.csrc/cmd/gopack/doc.go->src/cmd/pack/doc.goこれは、gopackツールのソースコード自体がpackという新しい名前に変更され、src/cmd/packという新しいパスに配置されたことを示します。
-
src/Make.*ファイル群におけるgopackから$(GOROOT)/bin/go-tool/packへのパス変更:src/Make.cmdsrc/Make.pkgsrc/Make.toolこれらのファイルはGoのビルドプロセス全体を制御するMakefileであり、gopackコマンドの呼び出しが新しいパスに更新されています。
例:
--- a/src/Make.cmd +++ b/src/Make.cmd @@ -41,7 +41,7 @@ testpackage-clean: _test/main.a: _gotest_.$O @mkdir -p _test rm -f $@ - gopack grc $@ _gotest_.$O + "$(GOROOT)/bin/go-tool/pack" grc $@ _gotest_.$O _gotest_.$O: $(GOFILES) $(GOTESTFILES) $(GC) $(GCFLAGS) $(GCIMPORTS) -o $@ $(GOFILES) $(GOTESTFILES) -
src/buildscript/*.shファイル群におけるgopackから"$GOROOT"/bin/go-tool/packへのパス変更:src/buildscript/darwin_386.shsrc/buildscript/darwin_amd64.shsrc/buildscript/freebsd_386.shsrc/buildscript/freebsd_amd64.shsrc/buildscript/linux_386.shsrc/buildscript/linux_amd64.shsrc/buildscript/linux_arm.shsrc/buildscript/netbsd_386.shsrc/buildscript/netbsd_amd64.shsrc/buildscript/openbsd_386.shsrc/buildscript/openbsd_amd64.shsrc/buildscript/plan9_386.shsrc/buildscript/windows_386.shsrc/buildscript/windows_amd64.shこれらのシェルスクリプトは、Goの標準ライブラリを各OS/アーキテクチャ向けにビルドする際にpackツールを呼び出しており、その呼び出しパスが変更されています。
例:
--- a/src/buildscript/darwin_386.sh +++ b/src/buildscript/darwin_386.sh @@ -64,7 +64,7 @@ cp "$GOROOT"/src/pkg/runtime/zasm_darwin_386.h "$WORK"/runtime/_obj/zasm_GOOS_GO 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/rt0_darwin_386.8 -DGOOS_darwin -DGOARCH_386 ./rt0_darwin_386.s 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/sys_darwin_386.8 -DGOOS_darwin -DGOARCH_386 ./sys_darwin_386.s 8a -I "$WORK"/runtime/_obj/ -o "$WORK"/runtime/_obj/vlop_386.8 -DGOOS_darwin -DGOARCH_386 ./vlop_386.s -gopack grc "$WORK"/runtime.a "$WORK"/runtime/_obj/_go_.8 "$WORK"/runtime/_obj/alg.8 ... +"$GOROOT"/bin/go-tool/pack grc "$WORK"/runtime.a "$WORK"/runtime/_obj/_go_.8 "$WORK"/runtime/_obj/alg.8 ... -
src/cmd/go/build.goの変更:goコマンドのビルド関連ロジック内で、packツールのパスが更新されています。
コアとなるコードの解説
このコミットのコード変更は、Goのビルドシステムにおけるpackツールのパスと名前の統一化に尽きます。
src/cmd/{gopack => pack}/: これは、gopackという名前の実行可能ファイルと、その関連ソースコードが格納されていたディレクトリが、packという新しい名前に変更されたことを示します。このリネームは、ツールの役割をより明確にし、Goの他の内部ツールとの命名規則の整合性を高める意図があったと考えられます。Makefileとbuildscript/*.shの変更: これらのファイルは、Goのビルドプロセスにおいて、コンパイルされたオブジェクトファイルをまとめてパッケージアーカイブ(.aファイル)を作成するためにpackツールを呼び出しています。変更前は単にgopackと呼び出されていましたが、変更後は"$(GOROOT)/bin/go-tool/pack"という絶対パスで呼び出されるようになりました。$(GOROOT): Goのインストールルートディレクトリへのパスを示す変数です。/bin/go-tool/: これは、Goの内部ツールが配置される新しい標準的な場所を示しています。これにより、Goのツールチェインがより整理され、go toolコマンドを通じてアクセスできるようになります。pack: 新しいツール名です。grc:packコマンドに渡される引数で、gはGoのオブジェクトファイルを扱うこと、rはアーカイブにメンバーを追加または置換すること、cはアーカイブが存在しない場合に作成することを意味します。
この変更により、Goのビルドシステムは、packツールをより明確に、そして統一された方法で参照するようになりました。これは、Goのツールチェインの進化における重要な一歩であり、後のgo toolコマンドの導入や、より洗練されたビルドプロセスの基盤となりました。
関連リンク
- Go言語の公式ドキュメント: Go言語のビルドシステムやツールに関する最新の情報は、公式ドキュメントで確認できます。
- https://go.dev/doc/
- https://go.dev/cmd/go/ (goコマンドについて)
- Goのツールチェインに関する議論: GoのメーリングリストやIssueトラッカーには、ツールの設計や進化に関する議論が残されている可能性があります。
参考にした情報源リンク
- Go言語のGitリポジトリ:
- Goのコードレビューシステム (Gerrit):
- https://golang.org/cl/5598045 (コミットメッセージに記載されているChange-ID)
- Go言語の歴史に関する記事やドキュメント (Goのビルドシステムの進化について言及されているもの)
- Unix
arコマンドのドキュメント (Goのpackツールがarに似た機能を持つため) - Goの
Makefileの構造に関する情報 (Goのビルドプロセスを理解するため) - Goの
buildscriptに関する情報 (Goのクロスコンパイルやビルド環境のセットアップを理解するため)