Don't use runtime.Version() to find the current go version
That will be the go version at compile time. So read $GOROOT/VERSION, or fall back to executing `$GOROOT/bin/go version` to find the go version currently in GOROOT. Test: Ensure everything rebuilds when switching between go1.8rc2 and go1.8 Change-Id: I8738a7aa249a088b1e0668af260fa3974844dab7
This commit is contained in:
@@ -67,8 +67,22 @@ var (
|
||||
verbose = false
|
||||
|
||||
goToolDir = filepath.Join(runtime.GOROOT(), "pkg", "tool", runtime.GOOS+"_"+runtime.GOARCH)
|
||||
goVersion = findGoVersion()
|
||||
)
|
||||
|
||||
func findGoVersion() string {
|
||||
if version, err := ioutil.ReadFile(filepath.Join(runtime.GOROOT(), "VERSION")); err == nil {
|
||||
return string(version)
|
||||
}
|
||||
|
||||
cmd := exec.Command(filepath.Join(runtime.GOROOT(), "bin", "go"), "version")
|
||||
if version, err := cmd.Output(); err == nil {
|
||||
return string(version)
|
||||
} else {
|
||||
panic(fmt.Sprintf("Unable to discover go version: %v", err))
|
||||
}
|
||||
}
|
||||
|
||||
type GoPackage struct {
|
||||
Name string
|
||||
|
||||
@@ -218,7 +232,7 @@ func (p *GoPackage) Compile(outDir, trimPath string) error {
|
||||
shaFile := p.output + ".hash"
|
||||
|
||||
hash := sha1.New()
|
||||
fmt.Fprintln(hash, runtime.GOOS, runtime.GOARCH, runtime.Version())
|
||||
fmt.Fprintln(hash, runtime.GOOS, runtime.GOARCH, goVersion)
|
||||
|
||||
cmd := exec.Command(filepath.Join(goToolDir, "compile"),
|
||||
"-o", p.output,
|
||||
|
@@ -53,7 +53,7 @@ function run_go
|
||||
{
|
||||
# Increment when microfactory changes enough that it cannot rebuild itself.
|
||||
# For example, if we use a new command line argument that doesn't work on older versions.
|
||||
local mf_version=1
|
||||
local mf_version=2
|
||||
|
||||
local mf_src="${TOP}/build/soong/cmd/microfactory"
|
||||
|
||||
|
Reference in New Issue
Block a user