graphic characters and spaces.
</p>
+<p><!-- golang.org/issue/32502, golang.org/issue/30345 -->
+ The <code>go</code> <code>get</code> subcommand no longer accepts
+ the <code>-mod</code> flag. Previously, the flag's setting either
+ <a href="https://golang.org/issue/30345">was ignored</a> or
+ <a href="https://golang.org/issue/32502">caused the build to fail</a>.
+</p>
+
<h2 id="runtime">Runtime</h2>
<p>
// mentioned explicitly in the docs but they
// are part of the build flags.
- work.AddBuildFlags(CmdClean)
+ work.AddBuildFlags(CmdClean, work.DefaultBuildFlags)
}
func runClean(cmd *base.Command, args []string) {
)
func init() {
- work.AddBuildFlags(CmdGenerate)
+ work.AddBuildFlags(CmdGenerate, work.DefaultBuildFlags)
CmdGenerate.Flag.StringVar(&generateRunFlag, "run", "", "")
}
)
func init() {
- work.AddBuildFlags(CmdGet)
+ work.AddBuildFlags(CmdGet, work.OmitModFlag)
CmdGet.Run = runGet // break init loop
CmdGet.Flag.BoolVar(&Insecure, "insecure", Insecure, "")
}
func init() {
CmdList.Run = runList // break init cycle
- work.AddBuildFlags(CmdList)
+ work.AddBuildFlags(CmdList, work.DefaultBuildFlags)
}
var (
import (
"cmd/go/internal/base"
- "cmd/go/internal/cfg"
"cmd/go/internal/get"
"cmd/go/internal/imports"
"cmd/go/internal/load"
func (v *upgradeFlag) String() string { return "" }
func init() {
- work.AddBuildFlags(CmdGet)
+ work.AddBuildFlags(CmdGet, work.OmitModFlag)
CmdGet.Run = runGet // break init loop
CmdGet.Flag.BoolVar(&get.Insecure, "insecure", get.Insecure, "")
CmdGet.Flag.Var(&getU, "u", "")
}
func runGet(cmd *base.Command, args []string) {
- // -mod=readonly has no effect on "go get".
- if cfg.BuildMod == "readonly" {
- cfg.BuildMod = ""
- }
-
switch getU {
case "", "upgrade", "patch":
// ok
}
modload.LoadTests = *getT
- if cfg.BuildMod == "vendor" {
- base.Fatalf("go get: disabled by -mod=%s", cfg.BuildMod)
- }
-
buildList := modload.LoadBuildList()
buildList = buildList[:len(buildList):len(buildList)] // copy on append
versionByPath := make(map[string]string)
func init() {
CmdRun.Run = runRun // break init loop
- work.AddBuildFlags(CmdRun)
+ work.AddBuildFlags(CmdRun, work.DefaultBuildFlags)
CmdRun.Flag.Var((*base.StringsFlag)(&work.ExecCmd), "exec", "")
}
func init() {
cmdflag.AddKnownFlags("test", testFlagDefn)
var cmd base.Command
- work.AddBuildFlags(&cmd)
+ work.AddBuildFlags(&cmd, work.DefaultBuildFlags)
cmd.Flag.VisitAll(func(f *flag.Flag) {
if f.Name == "v" {
// test overrides the build -v flag
// Add build flags to vetFlagDefn.
var cmd base.Command
- work.AddBuildFlags(&cmd)
+ work.AddBuildFlags(&cmd, work.DefaultBuildFlags)
// This flag declaration is a placeholder:
// -vettool is actually parsed by the init function above.
cmd.Flag.StringVar(new(string), "vettool", "", "path to vet tool binary")
CmdInstall.Flag.BoolVar(&cfg.BuildI, "i", false, "")
- AddBuildFlags(CmdBuild)
- AddBuildFlags(CmdInstall)
+ AddBuildFlags(CmdBuild, DefaultBuildFlags)
+ AddBuildFlags(CmdInstall, DefaultBuildFlags)
}
// Note that flags consulted by other parts of the code
}
}
+type BuildFlagMask int
+
+const (
+ DefaultBuildFlags BuildFlagMask = 0
+ OmitModFlag BuildFlagMask = 1 << iota
+)
+
// addBuildFlags adds the flags common to the build, clean, get,
// install, list, run, and test commands.
-func AddBuildFlags(cmd *base.Command) {
+func AddBuildFlags(cmd *base.Command, mask BuildFlagMask) {
cmd.Flag.BoolVar(&cfg.BuildA, "a", false, "")
cmd.Flag.BoolVar(&cfg.BuildN, "n", false, "")
cmd.Flag.IntVar(&cfg.BuildP, "p", cfg.BuildP, "")
cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
cmd.Flag.Var(&load.BuildGcflags, "gcflags", "")
cmd.Flag.Var(&load.BuildGccgoflags, "gccgoflags", "")
- cmd.Flag.StringVar(&cfg.BuildMod, "mod", "", "")
+ if mask&OmitModFlag == 0 {
+ cmd.Flag.StringVar(&cfg.BuildMod, "mod", "", "")
+ }
cmd.Flag.StringVar(&cfg.BuildContext.InstallSuffix, "installsuffix", "", "")
cmd.Flag.Var(&load.BuildLdflags, "ldflags", "")
cmd.Flag.BoolVar(&cfg.BuildLinkshared, "linkshared", false, "")
! go list -mod=vendor -m rsc.io/quote@latest
stderr 'module lookup disabled by -mod=vendor'
! go get -mod=vendor -u
-stderr 'go get: disabled by -mod=vendor'
+stderr 'flag provided but not defined: -mod'
-- go.mod --
module x