]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: add ForceLibrary to build hash
authorIan Lance Taylor <iant@golang.org>
Mon, 2 Jul 2018 23:48:29 +0000 (16:48 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Tue, 3 Jul 2018 15:12:48 +0000 (15:12 +0000)
When a command has a test that is not in package main, the main
package is built as a library, with ForceLibrary set. It can of course
also be built as an ordinary main package. If we don't record that fact
in the hash, then both variants of the command will use the same hash,
which causes a GODEBUG=gocacheverify=1 failure. It also seems unsafe
although it's not clear to me whether it can cause an actual failure.

Along with CL 121941,
Fixes #25666

Change-Id: I115ad249012f30fbe45cd0c41da86adc295fe4b2
Reviewed-on: https://go-review.googlesource.com/121942
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/go/internal/work/exec.go

index 5c4dc88821b52ba0629ba7425dbc0299f5c00615..9a5a0dfc8eed785fb6a13c285c5d794768d3dc94 100644 (file)
@@ -203,6 +203,9 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {
        fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
        fmt.Fprintf(h, "import %q\n", p.ImportPath)
        fmt.Fprintf(h, "omitdebug %v standard %v local %v prefix %q\n", p.Internal.OmitDebug, p.Standard, p.Internal.Local, p.Internal.LocalPrefix)
+       if p.Internal.ForceLibrary {
+               fmt.Fprintf(h, "forcelibrary\n")
+       }
        if len(p.CgoFiles)+len(p.SwigFiles) > 0 {
                fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
                cppflags, cflags, cxxflags, fflags, _, _ := b.CFlags(p)