-
Russ Cox authored
The whole GOROOT/pkg tree is installed using the GOHOSTOS/GOHOSTARCH toolchain (installed in GOROOT/pkg/tool/GOHOSTOS_GOHOSTARCH). The testgo.exe we run during the cmd/go test will be built for GOOS/GOARCH, which means it will use the GOOS/GOARCH toolchain (installed in GOROOT/pkg/tool/GOOS_GOARCH). If these are not the same toolchain, then the entire standard library will look out of date to testgo.exe (the compilers in those two different tool directories are built for different architectures and have different buid IDs), which will cause many tests to do unnecessary rebuilds and some tests to attempt to overwrite the installed standard library, which will in turn make it look out of date to whatever runs after the cmd/go test exits. Bail out entirely in this case instead of destroying the world. The changes outside TestMain are checks that might have caught this a bit earlier and made it much less confusing to debug. Fixes #22709. Fixes #22965. Change-Id: Ibf28fa19e29a1f1b8f17875f446d3474dd04a924 Reviewed-on: https://go-review.googlesource.com/81516 Run-TryBot: Russ Cox <rsc@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
1b9f6633