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
|
verbose = false
|
||||||
|
|
||||||
goToolDir = filepath.Join(runtime.GOROOT(), "pkg", "tool", runtime.GOOS+"_"+runtime.GOARCH)
|
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 {
|
type GoPackage struct {
|
||||||
Name string
|
Name string
|
||||||
|
|
||||||
@@ -218,7 +232,7 @@ func (p *GoPackage) Compile(outDir, trimPath string) error {
|
|||||||
shaFile := p.output + ".hash"
|
shaFile := p.output + ".hash"
|
||||||
|
|
||||||
hash := sha1.New()
|
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"),
|
cmd := exec.Command(filepath.Join(goToolDir, "compile"),
|
||||||
"-o", p.output,
|
"-o", p.output,
|
||||||
|
@@ -53,7 +53,7 @@ function run_go
|
|||||||
{
|
{
|
||||||
# Increment when microfactory changes enough that it cannot rebuild itself.
|
# 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.
|
# 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"
|
local mf_src="${TOP}/build/soong/cmd/microfactory"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user