mirror of
https://github.com/golang/go
synced 2024-11-17 21:44:43 -07:00
cmd/go: don't initialize Builder in envcmd.MkEnv
The Builder isn't needed by MkEnv, and Builder.Init doesn't have side effects that change the environment. Builder.Init does currently call CheckGOOSARCHPair, but that's being moved out in CL 234658. Builder.Init creates the temporary work directory used by the builder. For the builder created in MkEnv, this directory is never used. Creating this directory can cause unnecessary errors for commands that don't use a builder like 'go clean' and 'go list'. Fixes #38395 Updates #24398 Change-Id: Ib93ae55afdf958000470657f4c4ff5bd92700e46 Reviewed-on: https://go-review.googlesource.com/c/go/+/236563 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Michael Matloob <matloob@golang.org> Reviewed-by: Bryan C. Mills <bcmills@google.com>
This commit is contained in:
parent
a20cb4ca5c
commit
5ae198087b
@ -63,9 +63,6 @@ var (
|
||||
)
|
||||
|
||||
func MkEnv() []cfg.EnvVar {
|
||||
var b work.Builder
|
||||
b.Init()
|
||||
|
||||
envFile, _ := cfg.EnvFile()
|
||||
env := []cfg.EnvVar{
|
||||
{Name: "GO111MODULE", Value: cfg.Getenv("GO111MODULE")},
|
||||
|
49
src/cmd/go/testdata/script/build_GOTMPDIR.txt
vendored
49
src/cmd/go/testdata/script/build_GOTMPDIR.txt
vendored
@ -1,15 +1,50 @@
|
||||
env GO111MODULE=off
|
||||
[short] skip
|
||||
|
||||
# Set GOCACHE to a clean directory to ensure that 'go build' has work to report.
|
||||
env GOCACHE=$WORK/gocache
|
||||
[!windows] env GOCACHE=$WORK/gocache
|
||||
[windows] env GOCACHE=$WORK\gocache
|
||||
|
||||
# Build should use GOTMPDIR if set.
|
||||
env GOTMPDIR=$WORK/my-favorite-tmpdir
|
||||
# 'go build' should use GOTMPDIR if set.
|
||||
[!windows] env GOTMPDIR=$WORK/my-favorite-tmpdir
|
||||
[windows] env GOTMPDIR=$WORK\my-favorite-tmpdir
|
||||
mkdir $GOTMPDIR
|
||||
go build -work hello.go
|
||||
go build -x hello.go
|
||||
stderr ^WORK=.*my-favorite-tmpdir
|
||||
|
||||
# Make GOTMPDIR a regular file. This prevents the creation of work directories,
|
||||
# so we can check that certain commands don't create them.
|
||||
# This simulates running on a full disk or a read-only volume.
|
||||
rm $GOTMPDIR
|
||||
cp hello.go $GOTMPDIR # any file will do
|
||||
|
||||
# 'go build' should fail if GOTMPDIR is read-only.
|
||||
! go build -x .
|
||||
stderr '^go: creating work dir: \w+ '$GOTMPDIR
|
||||
|
||||
# 'go list' should only fail if it needs to build something.
|
||||
go list -x .
|
||||
! stderr 'creating work dir'
|
||||
stdout m
|
||||
go list -m all
|
||||
stdout m
|
||||
! go list -x -export .
|
||||
stderr '^go: creating work dir: \w+ '$GOTMPDIR
|
||||
|
||||
# 'go clean -cache' and 'go clean -modcache' should not fail.
|
||||
go clean -x -cache
|
||||
! stderr 'creating work dir'
|
||||
go clean -x -modcache
|
||||
! stderr 'creating work dir'
|
||||
|
||||
# 'go env' should not fail for specific variables.
|
||||
# Without arguments, it needs to initialize a builder to load cgo flags, and
|
||||
# that uses a temporary directory.
|
||||
! go env
|
||||
stderr '^go: creating work dir: \w+ '$GOTMPDIR
|
||||
go env GOROOT
|
||||
|
||||
-- go.mod --
|
||||
module m
|
||||
|
||||
go 1.15
|
||||
-- hello.go --
|
||||
package main
|
||||
func main() { println("hello") }
|
||||
|
Loading…
Reference in New Issue
Block a user