From: Russ Cox Date: Sun, 16 Jan 2022 17:58:45 +0000 (-0500) Subject: cmd/dist: avoid lapsing into x86 builds on ARM64 Macs X-Git-Tag: go1.18beta2~86 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=5b3ebc8b72f496a5c6892d76fdeee3d9029b55cc;p=gostls13.git cmd/dist: avoid lapsing into x86 builds on ARM64 Macs We use uname -m to decide the GOHOSTARCH default, and on my ARM64 Mac laptop, uname -m prints x86_64. uname -a prints: Darwin p1.local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:01 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T6000 x86_64 (Note the x86_64 at the end, consistent with uname -m.) The effect of this is that make.bash builds an x86 toolchain even when I start with an ARM64 bootstrap toolchain! Avoid being tricked by looking for RELEASE_ARM64 instead. Fixes #50643. Change-Id: I76eded84bde8009d29419d5982bf964a0bf1c8fd Reviewed-on: https://go-review.googlesource.com/c/go/+/378894 Trust: Russ Cox Reviewed-by: Ian Lance Taylor --- diff --git a/src/cmd/dist/main.go b/src/cmd/dist/main.go index 37de1acc31..212d5cbe45 100644 --- a/src/cmd/dist/main.go +++ b/src/cmd/dist/main.go @@ -94,7 +94,15 @@ func main() { if gohostarch == "" { // Default Unix system. out := run("", CheckExit, "uname", "-m") + outAll := run("", CheckExit, "uname", "-a") switch { + case strings.Contains(outAll, "RELEASE_ARM64"): + // MacOS prints + // Darwin p1.local 21.1.0 Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:01 PDT 2021; root:xnu-8019.41.5~1/RELEASE_ARM64_T6000 x86_64 + // on ARM64 laptops when there is an x86 parent in the + // process tree. Look for the RELEASE_ARM64 to avoid being + // confused into building an x86 toolchain. + gohostarch = "arm64" case strings.Contains(out, "x86_64"), strings.Contains(out, "amd64"): gohostarch = "amd64" case strings.Contains(out, "86"):