From: Conrad Irwin Date: Wed, 20 Nov 2024 22:19:12 +0000 (-0700) Subject: cmd/go: cache executables for tools defined in go.mod X-Git-Tag: go1.24rc1~152 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a5c1b1c43389df3cb108e333a4198c81f15b1140;p=gostls13.git 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 --- 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, " "))