Commit eca28cc4 authored by Russ Cox's avatar Russ Cox

cmd/go: do not use cache when -a is specified

Clearly -a means don't use the cache.
An oversight that it did.

Fixes #22586.

Change-Id: I250b351439bd3fb5f8d6efc235b614f0a75ca64c
Reviewed-on: https://go-review.googlesource.com/76016
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
parent f3c46355
......@@ -4728,6 +4728,9 @@ func TestBuildCache(t *testing.T) {
tg.run("build", "-x", "complex/w")
tg.grepStderrNot(`[\\/]compile|gccgo`, "ran compiler incorrectly")
tg.run("build", "-a", "-x", "complex/w")
tg.grepStderr(`[\\/]compile|gccgo`, "did not run compiler with -a")
// complex is a non-trivial main package.
// the link step should not be cached.
tg.run("build", "-o", os.DevNull, "-x", "complex")
......
......@@ -355,17 +355,19 @@ func (b *Builder) useCache(a *Action, p *load.Package, actionHash cache.ActionID
// We treat hits in this cache as being "stale" for the purposes of go list
// (in effect, "stale" means whether p.Target is up-to-date),
// but we're still happy to use results from the build artifact cache.
if c := cache.Default(); c != nil {
outputID, size, err := c.Get(actionHash)
if err == nil {
file := c.OutputFile(outputID)
info, err1 := os.Stat(file)
buildID, err2 := buildid.ReadFile(file)
if err1 == nil && err2 == nil && info.Size() == size {
a.built = file
a.Target = "DO NOT USE - using cache"
a.buildID = buildID
return true
if !cfg.BuildA {
if c := cache.Default(); c != nil {
outputID, size, err := c.Get(actionHash)
if err == nil {
file := c.OutputFile(outputID)
info, err1 := os.Stat(file)
buildID, err2 := buildid.ReadFile(file)
if err1 == nil && err2 == nil && info.Size() == size {
a.built = file
a.Target = "DO NOT USE - using cache"
a.buildID = buildID
return true
}
}
}
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment