mirror of
https://github.com/golang/go
synced 2024-11-08 12:36:13 -07:00
cmd/go: make sure CC and CXX are absolute
Add check in cmd/go/internal/work.BuildInit and cmd/go/internal/envcmd.checkEnvWrite. Fixes #38372 Change-Id: I196ea93a0469e4667ef785f7c1dc4574bdf7ff78 Reviewed-on: https://go-review.googlesource.com/c/go/+/228517 Run-TryBot: Jay Conrod <jayconrod@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Jay Conrod <jayconrod@google.com> Trust: Jay Conrod <jayconrod@google.com> Trust: Michael Matloob <matloob@golang.org>
This commit is contained in:
parent
8cd75f3da0
commit
aa161e799d
@ -424,6 +424,11 @@ func checkEnvWrite(key, val string) error {
|
||||
if !filepath.IsAbs(val) && val != "" {
|
||||
return fmt.Errorf("GOPATH entry is relative; must be absolute path: %q", val)
|
||||
}
|
||||
// Make sure CC and CXX are absolute paths
|
||||
case "CC", "CXX":
|
||||
if !filepath.IsAbs(val) && val != "" && val != filepath.Base(val) {
|
||||
return fmt.Errorf("%s entry is relative; must be absolute path: %q", key, val)
|
||||
}
|
||||
}
|
||||
|
||||
if !utf8.ValidString(val) {
|
||||
|
@ -41,6 +41,13 @@ func BuildInit() {
|
||||
cfg.BuildPkgdir = p
|
||||
}
|
||||
|
||||
// Make sure CC and CXX are absolute paths
|
||||
for _, key := range []string{"CC", "CXX"} {
|
||||
if path := cfg.Getenv(key); !filepath.IsAbs(path) && path != "" && path != filepath.Base(path) {
|
||||
base.Fatalf("go %s: %s environment variable is relative; must be absolute path: %s\n", flag.Args()[0], key, path)
|
||||
}
|
||||
}
|
||||
|
||||
// For each experiment that has been enabled in the toolchain, define a
|
||||
// build tag with the same name but prefixed by "goexperiment." which can be
|
||||
// used for compiling alternative files for the experiment. This allows
|
||||
|
24
src/cmd/go/testdata/script/env_write.txt
vendored
24
src/cmd/go/testdata/script/env_write.txt
vendored
@ -123,6 +123,30 @@ go env -w GOTMPDIR=
|
||||
go env GOTMPDIR
|
||||
stdout ^$
|
||||
|
||||
# go env -w rejects relative CC values
|
||||
[!windows] go env -w CC=/usr/bin/clang
|
||||
go env -w CC=clang
|
||||
[!windows] ! go env -w CC=./clang
|
||||
[!windows] ! go env -w CC=bin/clang
|
||||
[!windows] stderr 'go env -w: CC entry is relative; must be absolute path'
|
||||
|
||||
[windows] go env -w CC=$WORK\bin\clang
|
||||
[windows] ! go env -w CC=.\clang
|
||||
[windows] ! go env -w CC=bin\clang
|
||||
[windows] stderr 'go env -w: CC entry is relative; must be absolute path'
|
||||
|
||||
# go env -w rejects relative CXX values
|
||||
[!windows] go env -w CC=/usr/bin/cpp
|
||||
go env -w CXX=cpp
|
||||
[!windows] ! go env -w CXX=./cpp
|
||||
[!windows] ! go env -w CXX=bin/cpp
|
||||
[!windows] stderr 'go env -w: CXX entry is relative; must be absolute path'
|
||||
|
||||
[windows] go env -w CXX=$WORK\bin\cpp
|
||||
[windows] ! go env -w CXX=.\cpp
|
||||
[windows] ! go env -w CXX=bin\cpp
|
||||
[windows] stderr 'go env -w: CXX entry is relative; must be absolute path'
|
||||
|
||||
# go env -w/-u checks validity of GOOS/ARCH combinations
|
||||
env GOOS=
|
||||
env GOARCH=
|
||||
|
Loading…
Reference in New Issue
Block a user