]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: teach the build cache about -trimpath
authorCaleb Spare <cespare@gmail.com>
Thu, 9 May 2019 01:57:00 +0000 (18:57 -0700)
committerBryan C. Mills <bcmills@google.com>
Tue, 21 May 2019 16:00:24 +0000 (16:00 +0000)
Fixes #31896

Change-Id: I228a809568cd37c599987f9f1e99df5c229e6c9b
Reviewed-on: https://go-review.googlesource.com/c/go/+/176112
Run-TryBot: Caleb Spare <cespare@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
src/cmd/go/internal/work/exec.go
src/cmd/go/testdata/script/build_cache_trimpath.txt [new file with mode: 0644]

index 35e70ddb1e042550ca56c402f439d62cec7a0fcf..6f2d319bc22f006001471bbad14dbf076f677346 100644 (file)
@@ -211,6 +211,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 cfg.BuildTrimpath {
+               fmt.Fprintln(h, "trimpath")
+       }
        if p.Internal.ForceLibrary {
                fmt.Fprintf(h, "forcelibrary\n")
        }
@@ -1116,6 +1119,9 @@ func (b *Builder) linkActionID(a *Action) cache.ActionID {
        fmt.Fprintf(h, "buildmode %s goos %s goarch %s\n", cfg.BuildBuildmode, 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 cfg.BuildTrimpath {
+               fmt.Fprintln(h, "trimpath")
+       }
 
        // Toolchain-dependent configuration, shared with b.linkSharedActionID.
        b.printLinkerConfig(h, p)
diff --git a/src/cmd/go/testdata/script/build_cache_trimpath.txt b/src/cmd/go/testdata/script/build_cache_trimpath.txt
new file mode 100644 (file)
index 0000000..39367ae
--- /dev/null
@@ -0,0 +1,20 @@
+env GO111MODULE=on
+
+# Set up fresh GOCACHE.
+env GOCACHE=$WORK/gocache
+mkdir $GOCACHE
+
+cd $WORK
+go build -o a.out
+
+# Varying -trimpath should cause a rebuild.
+go build -x -o a.out -trimpath
+stderr '(compile|gccgo)( |\.exe)'
+stderr 'link( |\.exe)'
+
+-- $WORK/hello.go --
+package main
+func main() { println("hello") }
+
+-- $WORK/go.mod --
+module m