mirror of
https://github.com/golang/go
synced 2024-11-17 00:14:50 -07:00
cmd/dist: consistently use $GOROOT/bin/go instead of just "go"
Also remove existing special cases that transform "go" into gorootBinGo, because they make debugging and code-reviews more difficult: log messages that don't include the full path can mask bugs like #31567, and the reader of the code has to trace through the various call chains to verify that the correct "go" is being used. Instead, we can make the use of the correct "go" command plainly obvious in the code by using one consistent name for it. (Prior to this CL, we had three different names for it: gorootBinGo, "go", and cmdGo. Now we have only one. Updates #31567. Change-Id: Ia9ff27e5e800c79af5a4e9f2803c9ea5ccafbf35 Reviewed-on: https://go-review.googlesource.com/c/go/+/452678 Reviewed-by: Michael Matloob <matloob@golang.org> Reviewed-by: Austin Clements <austin@google.com> TryBot-Result: Gopher Robot <gobot@golang.org> Auto-Submit: Bryan Mills <bcmills@google.com> Run-TryBot: Bryan Mills <bcmills@google.com>
This commit is contained in:
parent
13c70b12d7
commit
a0bebffa33
11
src/cmd/dist/build.go
vendored
11
src/cmd/dist/build.go
vendored
@ -1405,7 +1405,6 @@ func cmdbootstrap() {
|
||||
setNoOpt()
|
||||
goldflags = os.Getenv("GO_LDFLAGS") // we were using $BOOT_GO_LDFLAGS until now
|
||||
goBootstrap := pathf("%s/go_bootstrap", tooldir)
|
||||
cmdGo := pathf("%s/go", gorootBin)
|
||||
if debug {
|
||||
run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
|
||||
copyfile(pathf("%s/compile1", tooldir), pathf("%s/compile", tooldir), writeExec)
|
||||
@ -1488,8 +1487,8 @@ func cmdbootstrap() {
|
||||
goInstall(toolenv, goBootstrap, "cmd")
|
||||
checkNotStale(nil, goBootstrap, "std")
|
||||
checkNotStale(toolenv, goBootstrap, "cmd")
|
||||
checkNotStale(nil, cmdGo, "std")
|
||||
checkNotStale(toolenv, cmdGo, "cmd")
|
||||
checkNotStale(nil, gorootBinGo, "std")
|
||||
checkNotStale(toolenv, gorootBinGo, "cmd")
|
||||
|
||||
timelog("build", "target toolchain")
|
||||
if vflag > 0 {
|
||||
@ -1507,8 +1506,8 @@ func cmdbootstrap() {
|
||||
checkNotStale(toolenv, goBootstrap, append(toolchain, "runtime/internal/sys")...)
|
||||
checkNotStale(nil, goBootstrap, "std")
|
||||
checkNotStale(toolenv, goBootstrap, "cmd")
|
||||
checkNotStale(nil, cmdGo, "std")
|
||||
checkNotStale(toolenv, cmdGo, "cmd")
|
||||
checkNotStale(nil, gorootBinGo, "std")
|
||||
checkNotStale(toolenv, gorootBinGo, "cmd")
|
||||
if debug {
|
||||
run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")
|
||||
checkNotStale(toolenv, goBootstrap, append(toolchain, "runtime/internal/sys")...)
|
||||
@ -1542,7 +1541,7 @@ func cmdbootstrap() {
|
||||
os.Setenv("GOOS", gohostos)
|
||||
os.Setenv("GOARCH", gohostarch)
|
||||
os.Setenv("CC", compilerEnvLookup("CC", defaultcc, gohostos, gohostarch))
|
||||
goCmd(nil, cmdGo, "build", "-o", pathf("%s/go_%s_%s_exec%s", gorootBin, goos, goarch, exe), wrapperPath)
|
||||
goCmd(nil, gorootBinGo, "build", "-o", pathf("%s/go_%s_%s_exec%s", gorootBin, goos, goarch, exe), wrapperPath)
|
||||
// Restore environment.
|
||||
// TODO(elias.naur): support environment variables in goCmd?
|
||||
os.Setenv("GOOS", goos)
|
||||
|
29
src/cmd/dist/test.go
vendored
29
src/cmd/dist/test.go
vendored
@ -149,7 +149,7 @@ func (t *tester) run() {
|
||||
if t.rebuild {
|
||||
t.out("Building packages and commands.")
|
||||
// Force rebuild the whole toolchain.
|
||||
goInstall(toolenv, "go", append([]string{"-a"}, toolchain...)...)
|
||||
goInstall(toolenv, gorootBinGo, append([]string{"-a"}, toolchain...)...)
|
||||
}
|
||||
|
||||
if !t.listMode {
|
||||
@ -166,10 +166,10 @@ func (t *tester) run() {
|
||||
// to break if we don't automatically refresh things here.
|
||||
// Rebuilding is a shortened bootstrap.
|
||||
// See cmdbootstrap for a description of the overall process.
|
||||
goInstall(toolenv, "go", toolchain...)
|
||||
goInstall(toolenv, "go", toolchain...)
|
||||
goInstall(toolenv, "go", "cmd")
|
||||
goInstall(nil, "go", "std")
|
||||
goInstall(toolenv, gorootBinGo, toolchain...)
|
||||
goInstall(toolenv, gorootBinGo, toolchain...)
|
||||
goInstall(toolenv, gorootBinGo, "cmd")
|
||||
goInstall(nil, gorootBinGo, "std")
|
||||
} else {
|
||||
// The Go builder infrastructure should always begin running tests from a
|
||||
// clean, non-stale state, so there is no need to rebuild the world.
|
||||
@ -179,15 +179,15 @@ func (t *tester) run() {
|
||||
// The cache used by dist when building is different from that used when
|
||||
// running dist test, so rebuild (but don't install) std and cmd to make
|
||||
// sure packages without install targets are cached so they are not stale.
|
||||
goCmd(toolenv, "go", "build", "cmd") // make sure dependencies of targets are cached
|
||||
goCmd(nil, "go", "build", "std")
|
||||
checkNotStale(nil, "go", "std")
|
||||
goCmd(toolenv, gorootBinGo, "build", "cmd") // make sure dependencies of targets are cached
|
||||
goCmd(nil, gorootBinGo, "build", "std")
|
||||
checkNotStale(nil, gorootBinGo, "std")
|
||||
if builder != "aix-ppc64" {
|
||||
// The aix-ppc64 builder for some reason does not have deterministic cgo
|
||||
// builds, so "cmd" is stale. Fortunately, most of the tests don't care.
|
||||
// TODO(#56896): remove this special case once the builder supports
|
||||
// determistic cgo builds.
|
||||
checkNotStale(toolenv, "go", "cmd")
|
||||
checkNotStale(toolenv, gorootBinGo, "cmd")
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -300,7 +300,7 @@ func (t *tester) maybeLogMetadata() error {
|
||||
//
|
||||
// TODO(prattmic): If we split dist bootstrap and dist test then this
|
||||
// could be simplified to directly use internal/sysinfo here.
|
||||
return t.dirCmd(filepath.Join(goroot, "src/cmd/internal/metadata"), "go", []string{"run", "main.go"}).Run()
|
||||
return t.dirCmd(filepath.Join(goroot, "src/cmd/internal/metadata"), gorootBinGo, []string{"run", "main.go"}).Run()
|
||||
}
|
||||
|
||||
// goTest represents all options to a "go test" command. The final command will
|
||||
@ -1077,9 +1077,6 @@ func flattenCmdline(cmdline []interface{}) (bin string, args []string) {
|
||||
}
|
||||
|
||||
bin = list[0]
|
||||
if bin == "go" {
|
||||
bin = gorootBinGo
|
||||
}
|
||||
return bin, list[1:]
|
||||
}
|
||||
|
||||
@ -1354,7 +1351,7 @@ func (t *tester) registerCgoTests() {
|
||||
// running in parallel with earlier tests, or if it has some other reason
|
||||
// for needing the earlier tests to be done.
|
||||
func (t *tester) runPending(nextTest *distTest) {
|
||||
checkNotStale(nil, "go", "std")
|
||||
checkNotStale(nil, gorootBinGo, "std")
|
||||
worklist := t.worklist
|
||||
t.worklist = nil
|
||||
for _, w := range worklist {
|
||||
@ -1412,7 +1409,7 @@ func (t *tester) runPending(nextTest *distTest) {
|
||||
log.Printf("Failed: %v", w.err)
|
||||
t.failed = true
|
||||
}
|
||||
checkNotStale(nil, "go", "std")
|
||||
checkNotStale(nil, gorootBinGo, "std")
|
||||
}
|
||||
if t.failed && !t.keepGoing {
|
||||
fatalf("FAILED")
|
||||
@ -1612,7 +1609,7 @@ func (t *tester) testDirTest(dt *distTest, shard, shards int) error {
|
||||
os.Remove(runtest.exe)
|
||||
})
|
||||
|
||||
cmd := t.dirCmd("test", "go", "build", "-o", runtest.exe, "run.go")
|
||||
cmd := t.dirCmd("test", gorootBinGo, "build", "-o", runtest.exe, "run.go")
|
||||
setEnv(cmd, "GOOS", gohostos)
|
||||
setEnv(cmd, "GOARCH", gohostarch)
|
||||
runtest.err = cmd.Run()
|
||||
|
6
src/cmd/dist/util.go
vendored
6
src/cmd/dist/util.go
vendored
@ -75,11 +75,7 @@ func runEnv(dir string, mode int, env []string, cmd ...string) string {
|
||||
errprintf("run: %s\n", strings.Join(cmd, " "))
|
||||
}
|
||||
|
||||
bin := cmd[0]
|
||||
if bin == "go" {
|
||||
bin = gorootBinGo
|
||||
}
|
||||
xcmd := exec.Command(bin, cmd[1:]...)
|
||||
xcmd := exec.Command(cmd[0], cmd[1:]...)
|
||||
if env != nil {
|
||||
xcmd.Env = append(os.Environ(), env...)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user