cmd/dist, runtime: make runtime version available as runtime.buildVersion

So that there is a uniformed way to retrieve Go version from a Go
binary, starting from Go 1.4 (see https://golang.org/cl/117040043)

Updates #13507.

Change-Id: Iaa2b14fca2d8c4d883d3824e2efc82b3e6fe2624
Reviewed-on: https://go-review.googlesource.com/17459
Reviewed-by: Keith Randall <khr@golang.org>
This commit is contained in:
Shenghou Ma 2015-12-06 17:35:12 -05:00 committed by Minux Ma
parent 68c6aad58b
commit 86f1944e86
2 changed files with 6 additions and 6 deletions

View file

@ -16,12 +16,11 @@ import (
// mkzversion writes zversion.go:
//
// package runtime
// package sys
// const DefaultGoroot = <goroot>
// const TheVersion = <version>
// const Goexperiment = <goexperiment>
// const StackGuardMultiplier = <multiplier value>
// const BuildVersion = <build version>
//
func mkzversion(dir, file string) {
out := fmt.Sprintf(
@ -32,8 +31,7 @@ func mkzversion(dir, file string) {
"const DefaultGoroot = `%s`\n"+
"const TheVersion = `%s`\n"+
"const Goexperiment = `%s`\n"+
"const StackGuardMultiplier = %d\n\n"+
"var BuildVersion = TheVersion\n", goroot_final, findgoversion(), os.Getenv("GOEXPERIMENT"), stackGuardMultiplier())
"const StackGuardMultiplier = %d\n\n", goroot_final, findgoversion(), os.Getenv("GOEXPERIMENT"), stackGuardMultiplier())
writefile(out, file, writeSkipSame)
}

View file

@ -10,6 +10,8 @@ import (
"unsafe"
)
var buildVersion = sys.TheVersion
// Goroutine scheduler
// The scheduler's job is to distribute ready-to-run goroutines over worker threads.
//
@ -445,10 +447,10 @@ func schedinit() {
throw("unknown runnable goroutine during bootstrap")
}
if sys.BuildVersion == "" {
if buildVersion == "" {
// Condition should never trigger. This code just serves
// to ensure runtime·buildVersion is kept in the resulting binary.
sys.BuildVersion = "unknown"
buildVersion = "unknown"
}
}