From a5c1b1c43389df3cb108e333a4198c81f15b1140 Mon Sep 17 00:00:00 2001 From: Conrad Irwin Date: Wed, 20 Nov 2024 15:19:12 -0700 Subject: [PATCH] cmd/go: cache executables for tools defined in go.mod 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 Reviewed-by: Sam Thanawalla Reviewed-by: Michael Matloob --- src/cmd/go/internal/tool/tool.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/cmd/go/internal/tool/tool.go b/src/cmd/go/internal/tool/tool.go index 7cba3596a4..f07bdf5087 100644 --- a/src/cmd/go/internal/tool/tool.go +++ b/src/cmd/go/internal/tool/tool.go @@ -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, " ")) -- 2.48.1