• Daniel Martí's avatar
    cmd/go: move GOOS/GOARCH and tags checks to Init · 48ec5122
    Daniel Martí authored
    They were in Do, which is the method that actually starts the build.
    However, we can already run these checks in Init, since we already have
    all the information necessary to do the checks.
    
    More importantly, some work happens between Init and Do, namely package
    loading. That may exit with an error, meaning that in some cases the
    user gets a confusing error instead of the correct one.
    
    For example, using a GOOS typo, before showed:
    
    	$ GOOS=windwos go build
    	can't load package: package p: build constraints exclude all Go files in ...
    
    And now:
    
    	$ GOOS=windwos go build
    	cmd/go: unsupported GOOS/GOARCH pair windwos/amd64
    
    Also had to tweak TestGoEnv to modify GOOS as well as GOARCH. Otherwise,
    on windows this would result in the invalid GOOS/GOARCH pair
    windows/arm, which would error given that we now check that in non-build
    commands such as "go env".
    
    Fixes #21999.
    
    Change-Id: Iff9890dea472bff0179a9d703d6f698a0e3187c1
    Reviewed-on: https://go-review.googlesource.com/65656
    Run-TryBot: Daniel Martí <mvdan@mvdan.cc>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarDavid Crawshaw <crawshaw@golang.org>
    48ec5122
go_test.go 137 KB