"bytes"
"fmt"
"go/build"
+ "internal/cfg"
"io/ioutil"
"os"
"path/filepath"
// CanGetenv reports whether key is a valid go/env configuration key.
func CanGetenv(key string) bool {
- return strings.Contains(knownEnv, "\t"+key+"\n")
+ return strings.Contains(cfg.KnownEnv, "\t"+key+"\n")
}
-var knownEnv = `
- AR
- CC
- CGO_CFLAGS
- CGO_CFLAGS_ALLOW
- CGO_CFLAGS_DISALLOW
- CGO_CPPFLAGS
- CGO_CPPFLAGS_ALLOW
- CGO_CPPFLAGS_DISALLOW
- CGO_CXXFLAGS
- CGO_CXXFLAGS_ALLOW
- CGO_CXXFLAGS_DISALLOW
- CGO_ENABLED
- CGO_FFLAGS
- CGO_FFLAGS_ALLOW
- CGO_FFLAGS_DISALLOW
- CGO_LDFLAGS
- CGO_LDFLAGS_ALLOW
- CGO_LDFLAGS_DISALLOW
- CXX
- FC
- GCCGO
- GO111MODULE
- GO386
- GOARCH
- GOARM
- GOBIN
- GOCACHE
- GOENV
- GOEXE
- GOFLAGS
- GOGCCFLAGS
- GOHOSTARCH
- GOHOSTOS
- GOMIPS
- GOMIPS64
- GONOPROXY
- GONOSUMDB
- GOOS
- GOPATH
- GOPPC64
- GOPRIVATE
- GOPROXY
- GOROOT
- GOSUMDB
- GOTMPDIR
- GOTOOLDIR
- GOWASM
- GO_EXTLINK_ENABLED
- PKG_CONFIG
-`
-
var (
GOROOT = BuildContext.GOROOT
GOBIN = Getenv("GOBIN")
"syscall/js",
},
+ "internal/cfg": {"L0"},
"internal/poll": {"L0", "internal/oserror", "internal/race", "syscall", "time", "unicode/utf16", "unicode/utf8", "internal/syscall/windows"},
"internal/testlog": {"L0"},
"os": {"L1", "os", "syscall", "time", "internal/oserror", "internal/poll", "internal/syscall/windows", "internal/syscall/unix", "internal/testlog"},
"testing": {"L2", "flag", "fmt", "internal/race", "os", "runtime/debug", "runtime/pprof", "runtime/trace", "time"},
"testing/iotest": {"L2", "log"},
"testing/quick": {"L2", "flag", "fmt", "reflect", "time"},
- "internal/testenv": {"L2", "OS", "flag", "testing", "syscall"},
+ "internal/testenv": {"L2", "OS", "flag", "testing", "syscall", "internal/cfg"},
"internal/lazyregexp": {"L2", "OS", "regexp"},
"internal/lazytemplate": {"L2", "OS", "text/template"},
--- /dev/null
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package cfg holds configuration shared by the Go command and internal/testenv.
+// Definitions that don't need to be exposed outside of cmd/go should be in
+// cmd/go/internal/cfg instead of this package.
+package cfg
+
+// KnownEnv is a list of environment variables that affect the operation
+// of the Go command.
+const KnownEnv = `
+ AR
+ CC
+ CGO_CFLAGS
+ CGO_CFLAGS_ALLOW
+ CGO_CFLAGS_DISALLOW
+ CGO_CPPFLAGS
+ CGO_CPPFLAGS_ALLOW
+ CGO_CPPFLAGS_DISALLOW
+ CGO_CXXFLAGS
+ CGO_CXXFLAGS_ALLOW
+ CGO_CXXFLAGS_DISALLOW
+ CGO_ENABLED
+ CGO_FFLAGS
+ CGO_FFLAGS_ALLOW
+ CGO_FFLAGS_DISALLOW
+ CGO_LDFLAGS
+ CGO_LDFLAGS_ALLOW
+ CGO_LDFLAGS_DISALLOW
+ CXX
+ FC
+ GCCGO
+ GO111MODULE
+ GO386
+ GOARCH
+ GOARM
+ GOBIN
+ GOCACHE
+ GOENV
+ GOEXE
+ GOFLAGS
+ GOGCCFLAGS
+ GOHOSTARCH
+ GOHOSTOS
+ GOMIPS
+ GOMIPS64
+ GONOPROXY
+ GONOSUMDB
+ GOOS
+ GOPATH
+ GOPPC64
+ GOPRIVATE
+ GOPROXY
+ GOROOT
+ GOSUMDB
+ GOTMPDIR
+ GOTOOLDIR
+ GOWASM
+ GO_EXTLINK_ENABLED
+ PKG_CONFIG
+`