From 5d65579003f9fd38ad956048e35a9e8f51467152 Mon Sep 17 00:00:00 2001 From: Rebecca Stambler Date: Tue, 29 Dec 2020 18:12:30 -0500 Subject: [PATCH] go/packages: remove -mod, -modfile flags from build flags for go version Use provided build flags may include -mod or -modfile, and these should be removed before any go command calls that don't accept them. Fixes golang/go#43418 Change-Id: Ie96626bced5093c67fc1890533f1f8cc03d42c80 Reviewed-on: https://go-review.googlesource.com/c/tools/+/280694 Trust: Rebecca Stambler Run-TryBot: Rebecca Stambler gopls-CI: kokoro TryBot-Result: Go Bot Reviewed-by: Michael Matloob --- internal/gocommand/version.go | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/internal/gocommand/version.go b/internal/gocommand/version.go index 60d45ac0e6..0cebac6e66 100644 --- a/internal/gocommand/version.go +++ b/internal/gocommand/version.go @@ -16,9 +16,20 @@ func GoVersion(ctx context.Context, inv Invocation, r *Runner) (int, error) { inv.Verb = "list" inv.Args = []string{"-e", "-f", `{{context.ReleaseTags}}`} inv.Env = append(append([]string{}, inv.Env...), "GO111MODULE=off") - // Unset any unneeded flags. + // Unset any unneeded flags, and remove them from BuildFlags, if they're + // present. inv.ModFile = "" inv.ModFlag = "" + var buildFlags []string + for _, flag := range inv.BuildFlags { + // Flags can be prefixed by one or two dashes. + f := strings.TrimPrefix(strings.TrimPrefix(flag, "-"), "-") + if strings.HasPrefix(f, "mod=") || strings.HasPrefix(f, "modfile=") { + continue + } + buildFlags = append(buildFlags, flag) + } + inv.BuildFlags = buildFlags stdoutBytes, err := r.Run(ctx, inv) if err != nil { return 0, err