diff --git a/test.sh b/test.sh index 271f1fc..84b913f 100755 --- a/test.sh +++ b/test.sh @@ -4,13 +4,9 @@ if [ ! -f tools/windowsconstgen.go ]; then fi set -e if [ x$GOOS = xwindows ]; then - # have to build windowsconstgen as the host, otherwise weird things happen - wcg=`mktemp /tmp/windowsconstgenXXXXXXXXXXXX` - GOOS= GOARCH= go build -o $wcg tools/windowsconstgen.go - # but we can run it regardless of $GOOS/$GOARCH - $wcg . 386 "$@" - $wcg . amd64 "$@" - rm $wcg + # have to invoke go run with the host $GOOS/$GOARCH + GOOS= GOARCH= go run tools/windowsconstgen.go . 386 "$@" + GOOS= GOARCH= go run tools/windowsconstgen.go . amd64 "$@" fi cd test go build "$@" diff --git a/tools/windowsconstgen.go b/tools/windowsconstgen.go index 448b549..0617eb1 100644 --- a/tools/windowsconstgen.go +++ b/tools/windowsconstgen.go @@ -182,7 +182,16 @@ func main() { defer f.Close() cmd.Stdout = f cmd.Stderr = os.Stderr - cmd.Env = append(cmd.Env, os.Environ()...) // otherwise $PATH doesn't get carried over and things mysteriously fail + // we need to preserve the environment EXCEPT FOR the variables we're overriding + // thanks to raggi and smw in irc.freenode.net/#go-nuts + for _, ev := range os.Environ() { + if strings.HasPrefix(ev, "GOOS=") || + strings.HasPrefix(ev, "GOARCH=") || + strings.HasPrefix(ev, "CGO_ENABLED=") { + continue + } + cmd.Env = append(cmd.Env, ev) + } cmd.Env = append(cmd.Env, "GOOS=windows", "GOARCH=" + targetarch,