aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2017-06-01 17:38:34 -0700
committerIan Lance Taylor <iant@golang.org>2017-06-13 14:45:39 +0000
commit8f9893173b70d7c2520321ff128f659e497914f4 (patch)
tree23f94606f00b6dbce4bd6bd79076e5972fb5188b
parenta38c8dfa44f32eb464b826c7f7a50e51f73506e0 (diff)
downloadgo-8f9893173b70d7c2520321ff128f659e497914f4.tar.gz
go-8f9893173b70d7c2520321ff128f659e497914f4.zip
cmd/go: initialize in get before loading packages
Otherwise the packages will not pick up the way that -installsuffix is changed by -buildmode and -race. Fixes #20512. Change-Id: Ieca32c958a531beb6331dff30d7e9a4998867dbb Reviewed-on: https://go-review.googlesource.com/44630 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
-rw-r--r--src/cmd/go/go_test.go14
-rw-r--r--src/cmd/go/internal/get/get.go3
-rw-r--r--src/cmd/go/internal/work/build.go4
3 files changed, 19 insertions, 2 deletions
diff --git a/src/cmd/go/go_test.go b/src/cmd/go/go_test.go
index 4a3d4559ed..90a95fd23d 100644
--- a/src/cmd/go/go_test.go
+++ b/src/cmd/go/go_test.go
@@ -3159,6 +3159,20 @@ func TestGoGetUpdate(t *testing.T) {
tg.run("get", "-d", "-u", "github.com/rsc/go-get-issue-9224-cmd")
}
+// Issue #20512.
+func TestGoGetRace(t *testing.T) {
+ testenv.MustHaveExternalNetwork(t)
+ if !canRace {
+ t.Skip("skipping because race detector not supported")
+ }
+
+ tg := testgo(t)
+ defer tg.cleanup()
+ tg.makeTempdir()
+ tg.setenv("GOPATH", tg.path("."))
+ tg.run("get", "-race", "github.com/rsc/go-get-issue-9224-cmd")
+}
+
func TestGoGetDomainRoot(t *testing.T) {
// golang.org/issue/9357.
// go get foo.io (not foo.io/subdir) was not working consistently.
diff --git a/src/cmd/go/internal/get/get.go b/src/cmd/go/internal/get/get.go
index 0181c5f5b7..6291a72fc7 100644
--- a/src/cmd/go/internal/get/get.go
+++ b/src/cmd/go/internal/get/get.go
@@ -90,6 +90,9 @@ func init() {
}
func runGet(cmd *base.Command, args []string) {
+ work.InstrumentInit()
+ work.BuildModeInit()
+
if *getF && !*getU {
base.Fatalf("go get: cannot use -f flag without -u")
}
diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
index 77f9fc3e01..2dfd54171a 100644
--- a/src/cmd/go/internal/work/build.go
+++ b/src/cmd/go/internal/work/build.go
@@ -545,6 +545,8 @@ func libname(args []string, pkgs []*load.Package) (string, error) {
}
func runInstall(cmd *base.Command, args []string) {
+ InstrumentInit()
+ BuildModeInit()
InstallPackages(args, false)
}
@@ -553,8 +555,6 @@ func InstallPackages(args []string, forGet bool) {
base.Fatalf("cannot install, GOBIN must be an absolute path")
}
- InstrumentInit()
- BuildModeInit()
pkgs := pkgsFilter(load.PackagesForBuild(args))
for _, p := range pkgs {