1
0
mirror of https://github.com/golang/go synced 2024-11-19 16:44:43 -07:00

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: David Crawshaw <crawshaw@golang.org>
This commit is contained in:
Russ Cox 2017-11-05 16:25:00 -05:00
parent f3c46355d7
commit eca28cc4f3
2 changed files with 16 additions and 11 deletions

View File

@ -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")

View File

@ -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
}
}
}
}