From 3bba45614315521542f59606bf362dcebcdb99f7 Mon Sep 17 00:00:00 2001 From: Ian Cottrell Date: Mon, 15 Oct 2018 18:09:00 -0400 Subject: [PATCH] go/packages: don't use os.LookupEnv Get the value of GOARCH from the config instead. It should have been set to the same as the one from the environment by default, but may have been overidden by the caller. Change-Id: If9a6c0ae998c1c72ad2a68fe83c8bb9f5614a189 Reviewed-on: https://go-review.googlesource.com/c/142361 Run-TryBot: Ian Cottrell Run-TryBot: Michael Matloob TryBot-Result: Gobot Gobot Reviewed-by: Michael Matloob --- go/packages/packages.go | 8 ++++++-- go/packages/packages_test.go | 6 +----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/go/packages/packages.go b/go/packages/packages.go index f40720d0..84a3dbb1 100644 --- a/go/packages/packages.go +++ b/go/packages/packages.go @@ -20,6 +20,7 @@ import ( "os" "path/filepath" "runtime" + "strings" "sync" "golang.org/x/tools/go/gcexportdata" @@ -685,8 +686,11 @@ func (ld *loader) loadPackage(lpkg *loaderPackage) { // This is only an approximation. // TODO(adonovan): derive Sizes from the underlying build system. goarch := runtime.GOARCH - if x, ok := os.LookupEnv("GOARCH"); ok { - goarch = x + const goarchPrefix = "GOARCH=" + for _, e := range ld.Config.Env { + if strings.HasPrefix(e, goarchPrefix) { + goarch = e[len(goarchPrefix):] + } } sizes := types.SizesFor("gc", goarch) diff --git a/go/packages/packages_test.go b/go/packages/packages_test.go index 4da9bb8b..fedf6faf 100644 --- a/go/packages/packages_test.go +++ b/go/packages/packages_test.go @@ -1052,15 +1052,11 @@ func TestSizes(t *testing.T) { }) defer cleanup() - savedGOARCH := os.Getenv("GOARCH") - defer os.Setenv("GOARCH", savedGOARCH) - for arch, wantWordSize := range map[string]int64{"386": 32, "amd64": 64} { - os.Setenv("GOARCH", arch) cfg := &packages.Config{ Mode: packages.LoadSyntax, Dir: tmp, - Env: append(os.Environ(), "GOPATH="+tmp, "GO111MODULE=off"), + Env: append(os.Environ(), "GOARCH="+arch, "GOPATH="+tmp, "GO111MODULE=off"), } initial, err := packages.Load(cfg, "a") if err != nil {