From fde85346800d5a02be773b18c018c87127272ebf Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Wed, 22 Feb 2017 22:03:04 -0800 Subject: [PATCH] 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 --- cmd/microfactory/microfactory.go | 16 +++++++++++++++- soong_ui.bash | 2 +- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/cmd/microfactory/microfactory.go b/cmd/microfactory/microfactory.go index 3ed5a2c39..d0febe775 100644 --- a/cmd/microfactory/microfactory.go +++ b/cmd/microfactory/microfactory.go @@ -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, diff --git a/soong_ui.bash b/soong_ui.bash index 724d9c54e..e1af359f4 100755 --- a/soong_ui.bash +++ b/soong_ui.bash @@ -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"