aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/go/internal/work/build.go
diff options
context:
space:
mode:
authorDaniel Theophanes <kardianos@gmail.com>2019-04-06 09:50:28 -0700
committerDaniel Theophanes <kardianos@gmail.com>2019-04-08 17:21:02 +0000
commit081bc62d728c0dc47fb62d26936f297d50efc1f4 (patch)
tree90217506545f3bdacc33b81479788152a9135387 /src/cmd/go/internal/work/build.go
parentc46ebec322b4f61a219f73f3f0f590cf001a074d (diff)
downloadgo-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.go5
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" {