mirror of
https://github.com/golang/go
synced 2024-11-02 08:01:26 +00:00
cmd/dist: force non-devel version for cross-build buildlets
If the compiler has a non-devel version it will report that version to the go command for use as the "compiler ID" instead of using the content ID of the binary. This in turn allows the go command to see the compiled-for-amd64 arm compiler and the compiled-for-arm arm compiler as having the same ID, so that packages cross-compiled from amd64 look up-to-date when copied to the arm system during the linux-arm buildlets and trybots. Change-Id: I76cbf129303941f8e31bdb100e263478159ddaa5 Reviewed-on: https://go-review.googlesource.com/74360 Run-TryBot: Russ Cox <rsc@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
b97688d112
commit
b09e2de735
1 changed files with 20 additions and 0 deletions
20
src/cmd/dist/build.go
vendored
20
src/cmd/dist/build.go
vendored
|
@ -288,6 +288,26 @@ func findgoversion() string {
|
|||
// its content if available, which is empty at this point.
|
||||
// Only use the VERSION file if it is non-empty.
|
||||
if b != "" {
|
||||
// Some builders cross-compile the toolchain on linux-amd64
|
||||
// and then copy the toolchain to the target builder (say, linux-arm)
|
||||
// for use there. But on non-release (devel) branches, the compiler
|
||||
// used on linux-amd64 will be an amd64 binary, and the compiler
|
||||
// shipped to linux-arm will be an arm binary, so they will have different
|
||||
// content IDs (they are binaries for different architectures) and so the
|
||||
// packages compiled by the running-on-amd64 compiler will appear
|
||||
// stale relative to the running-on-arm compiler. Avoid this by setting
|
||||
// the version string to something that doesn't begin with devel.
|
||||
// Then the version string will be used in place of the content ID,
|
||||
// and the packages will look up-to-date.
|
||||
// TODO(rsc): Really the builders could be writing out a better VERSION file instead,
|
||||
// but it is easier to change cmd/dist than to try to make changes to
|
||||
// the builder while Brad is away.
|
||||
if strings.HasPrefix(b, "devel") {
|
||||
if hostType := os.Getenv("META_BUILDLET_HOST_TYPE"); strings.Contains(hostType, "-cross") {
|
||||
fmt.Fprintf(os.Stderr, "warning: changing VERSION from %q to %q\n", b, "builder "+hostType)
|
||||
b = "builder " + hostType
|
||||
}
|
||||
}
|
||||
return b
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue