diff options
author | Daniel Theophanes <kardianos@gmail.com> | 2019-04-06 09:50:28 -0700 |
---|---|---|
committer | Daniel Theophanes <kardianos@gmail.com> | 2019-04-08 17:21:02 +0000 |
commit | 081bc62d728c0dc47fb62d26936f297d50efc1f4 (patch) | |
tree | 90217506545f3bdacc33b81479788152a9135387 /src/cmd/go/internal/work/build.go | |
parent | c46ebec322b4f61a219f73f3f0f590cf001a074d (diff) | |
download | go-081bc62d728c0dc47fb62d26936f297d50efc1f4.tar.gz go-081bc62d728c0dc47fb62d26936f297d50efc1f4.zip |
cmd/go: do not write output when -o is not specified, but folder with same name exists
Fixes #31296
Change-Id: Ib8850fe22749ca0bf268614ba045ffe3fc68f5cc
Reviewed-on: https://go-review.googlesource.com/c/go/+/171057
Run-TryBot: Daniel Theophanes <kardianos@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
Diffstat (limited to 'src/cmd/go/internal/work/build.go')
-rw-r--r-- | src/cmd/go/internal/work/build.go | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go index 96b3744444..15faf578f8 100644 --- a/src/cmd/go/internal/work/build.go +++ b/src/cmd/go/internal/work/build.go @@ -283,6 +283,8 @@ func runBuild(cmd *base.Command, args []string) { pkgs := load.PackagesForBuild(args) + explicitO := len(cfg.BuildO) > 0 + if len(pkgs) == 1 && pkgs[0].Name == "main" && cfg.BuildO == "" { cfg.BuildO = load.DefaultExecName(pkgs[0].ImportPath) cfg.BuildO += cfg.ExeSuffix @@ -320,6 +322,9 @@ func runBuild(cmd *base.Command, args []string) { // write all main packages to that directory. // Otherwise require only a single package be built. if fi, err := os.Stat(cfg.BuildO); err == nil && fi.IsDir() { + if !explicitO { + base.Fatalf("go build: build output %q already exists and is a directory", cfg.BuildO) + } a := &Action{Mode: "go build"} for _, p := range pkgs { if p.Name != "main" { |