diff options
author | Ian Lance Taylor <iant@golang.org> | 2017-06-01 17:38:34 -0700 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2017-06-13 14:45:39 +0000 |
commit | 8f9893173b70d7c2520321ff128f659e497914f4 (patch) | |
tree | 23f94606f00b6dbce4bd6bd79076e5972fb5188b | |
parent | a38c8dfa44f32eb464b826c7f7a50e51f73506e0 (diff) | |
download | go-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.go | 14 | ||||
-rw-r--r-- | src/cmd/go/internal/get/get.go | 3 | ||||
-rw-r--r-- | src/cmd/go/internal/work/build.go | 4 |
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 { |