cmd/dist: only install necessary tools when doing local test

Instead of installing all of cmd, install only the tools that cmd/dist
would normally install.

Also, remove the addition of the buildid tool to the list of commands in
the toolchain in debug mode. The uses of buildid were removed in CL 451360.

For #71867

Change-Id: I062909d23c18294aa23ea43b9f7eeb69bfa80c8c
Reviewed-on: https://go-review.googlesource.com/c/go/+/680475
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
Reviewed-by: Michael Matloob <matloob@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Auto-Submit: Michael Matloob <matloob@google.com>
This commit is contained in:
Michael Matloob 2025-06-10 11:12:10 -04:00 committed by Michael Matloob
parent a189516d3a
commit a35701b352
2 changed files with 16 additions and 19 deletions

33
src/cmd/dist/build.go vendored
View file

@ -1390,7 +1390,21 @@ func toolenv() []string {
return env return env
} }
var toolchain = []string{"cmd/asm", "cmd/cgo", "cmd/compile", "cmd/link", "cmd/preprofile"} var (
toolchain = []string{"cmd/asm", "cmd/cgo", "cmd/compile", "cmd/link", "cmd/preprofile"}
// Keep in sync with binExes in cmd/distpack/pack.go.
binExesIncludedInDistpack = []string{"cmd/go", "cmd/gofmt"}
// Keep in sync with the filter in cmd/distpack/pack.go.
toolsIncludedInDistpack = []string{"cmd/asm", "cmd/cgo", "cmd/compile", "cmd/cover", "cmd/link", "cmd/preprofile", "cmd/vet"}
// We could install all tools in "cmd", but is unnecessary because we will
// remove them in distpack, so instead install the tools that will actually
// be included in distpack, which is a superset of toolchain. Not installing
// the tools will help us test what happens when the tools aren't present.
toolsToInstall = slices.Concat(binExesIncludedInDistpack, toolsIncludedInDistpack)
)
// The bootstrap command runs a build from scratch, // The bootstrap command runs a build from scratch,
// stopping at having installed the go_bootstrap command. // stopping at having installed the go_bootstrap command.
@ -1456,11 +1470,6 @@ func cmdbootstrap() {
// GOEXPERIMENT. // GOEXPERIMENT.
os.Setenv("GOEXPERIMENT", "none") os.Setenv("GOEXPERIMENT", "none")
if debug {
// cmd/buildid is used in debug mode.
toolchain = append(toolchain, "cmd/buildid")
}
if isdir(pathf("%s/src/pkg", goroot)) { if isdir(pathf("%s/src/pkg", goroot)) {
fatalf("\n\n"+ fatalf("\n\n"+
"The Go package sources have moved to $GOROOT/src.\n"+ "The Go package sources have moved to $GOROOT/src.\n"+
@ -1589,18 +1598,6 @@ func cmdbootstrap() {
os.Setenv("GOCACHE", oldgocache) os.Setenv("GOCACHE", oldgocache)
} }
// Keep in sync with binExes in cmd/distpack/pack.go.
binExesIncludedInDistpack := []string{"cmd/go", "cmd/gofmt"}
// Keep in sync with the filter in cmd/distpack/pack.go.
toolsIncludedInDistpack := []string{"cmd/asm", "cmd/cgo", "cmd/compile", "cmd/cover", "cmd/link", "cmd/preprofile", "cmd/vet"}
// We could install all tools in "cmd", but is unnecessary because we will
// remove them in distpack, so instead install the tools that will actually
// be included in distpack, which is a superset of toolchain. Not installing
// the tools will help us test what happens when the tools aren't present.
toolsToInstall := slices.Concat(binExesIncludedInDistpack, toolsIncludedInDistpack)
if goos == oldgoos && goarch == oldgoarch { if goos == oldgoos && goarch == oldgoarch {
// Common case - not setting up for cross-compilation. // Common case - not setting up for cross-compilation.
timelog("build", "toolchain") timelog("build", "toolchain")

View file

@ -178,7 +178,7 @@ func (t *tester) run() {
// otherwise relevant to the actual set of packages under test. // otherwise relevant to the actual set of packages under test.
goInstall(toolenv(), gorootBinGo, toolchain...) goInstall(toolenv(), gorootBinGo, toolchain...)
goInstall(toolenv(), gorootBinGo, toolchain...) goInstall(toolenv(), gorootBinGo, toolchain...)
goInstall(toolenv(), gorootBinGo, "cmd") goInstall(toolenv(), gorootBinGo, toolsToInstall...)
} }
} }