1
0
mirror of https://github.com/golang/go synced 2024-11-23 22:50:05 -07:00

cmd/go: fix the DefaultCC check if CC is an absolute file missing an extension on Windows

This undoes the code (but not test) change from CL 451219, which turns
out to be slightly harmful on Windows (because it doesn't resolve the
file extension for an absolute CC path) and unnecessary elsewhere
(because calling LookPath on a fully-resolved executable path already
stats¹ that path before returning it).

¹https://cs.opensource.google/go/go/+/refs/tags/go1.19.3:src/os/exec/lp_unix.go;l=46;drc=027855e8d86f461b50946b006ea032d4b4a7d817

Change-Id: If8c5ba59cbcc9fc289e9325afb9ccdadf374b102
Reviewed-on: https://go-review.googlesource.com/c/go/+/452777
Reviewed-by: Michael Matloob <matloob@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Run-TryBot: Bryan Mills <bcmills@google.com>
Auto-Submit: Bryan Mills <bcmills@google.com>
This commit is contained in:
Bryan C. Mills 2022-11-22 15:31:06 -05:00 committed by Gopher Robot
parent bb917bd1b2
commit 1fbfc2f6eb
2 changed files with 2 additions and 9 deletions

View File

@ -159,14 +159,7 @@ func defaultContext() build.Context {
if ctxt.CgoEnabled { if ctxt.CgoEnabled {
if os.Getenv("CC") == "" { if os.Getenv("CC") == "" {
cc := DefaultCC(ctxt.GOOS, ctxt.GOARCH) cc := DefaultCC(ctxt.GOOS, ctxt.GOARCH)
if filepath.IsAbs(cc) { if _, err := exec.LookPath(cc); err != nil {
if _, err := os.Stat(cc); os.IsNotExist(err) {
// The default CC is an absolute path that doesn't exist.
// (Perhaps make.bash was run on a system with a C compiler
// installed, and the current system doesn't have it there.)
ctxt.CgoEnabled = false
}
} else if _, err := exec.LookPath(cc); err != nil {
ctxt.CgoEnabled = false ctxt.CgoEnabled = false
} }
} }

View File

@ -62,7 +62,7 @@ func defaultCCIsAbsolute(s *script.State) (bool, error) {
GOARCH, _ := s.LookupEnv("GOARCH") GOARCH, _ := s.LookupEnv("GOARCH")
defaultCC := cfg.DefaultCC(GOOS, GOARCH) defaultCC := cfg.DefaultCC(GOOS, GOARCH)
if filepath.IsAbs(defaultCC) { if filepath.IsAbs(defaultCC) {
if _, err := os.Stat(defaultCC); err == nil { if _, err := exec.LookPath(defaultCC); err == nil {
return true, nil return true, nil
} }
} }