From: Ian Lance Taylor Date: Fri, 2 Jun 2017 00:38:34 +0000 (-0700) Subject: cmd/go: initialize in get before loading packages X-Git-Tag: go1.9beta1~38 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=8f9893173b70d7c2520321ff128f659e497914f4;p=gostls13.git 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 TryBot-Result: Gobot Gobot Reviewed-by: Russ Cox --- 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 {