]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go: cache executables for tools defined in go.mod
authorConrad Irwin <conrad.irwin@gmail.com>
Wed, 20 Nov 2024 22:19:12 +0000 (15:19 -0700)
committerMichael Matloob <matloob@golang.org>
Thu, 21 Nov 2024 15:44:19 +0000 (15:44 +0000)
This allows for executables created by `go tool` to be re-used from the
cache.

Change-Id: I382672239244beb3cf6e227182f550c049de102b
Reviewed-on: https://go-review.googlesource.com/c/go/+/630339
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Sam Thanawalla <samthanawalla@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
src/cmd/go/internal/tool/tool.go

index 7cba3596a4c1371b4ef8b3a36b80f2a5a23b528d..f07bdf508734613cad779f103f430ca43eb35e59 100644 (file)
@@ -288,13 +288,14 @@ func buildAndRunModtool(ctx context.Context, tool string, args []string) {
        p := load.PackagesAndErrors(ctx, pkgOpts, []string{tool})[0]
        p.Internal.OmitDebug = true
 
-       a1 := b.LinkAction(work.ModeInstall, work.ModeBuild, p)
+       a1 := b.LinkAction(work.ModeBuild, work.ModeBuild, p)
+       a1.CacheExecutable = true
        a := &work.Action{Mode: "go tool", Actor: work.ActorFunc(runBuiltTool), Args: args, Deps: []*work.Action{a1}}
        b.Do(ctx, a)
 }
 
 func runBuiltTool(b *work.Builder, ctx context.Context, a *work.Action) error {
-       cmdline := str.StringList(work.FindExecCmd(), a.Deps[0].Target, a.Args)
+       cmdline := str.StringList(work.FindExecCmd(), a.Deps[0].BuiltTarget(), a.Args)
 
        if toolN {
                fmt.Println(strings.Join(cmdline, " "))