Skip to content

Commit

Permalink
cmd/dist: avoid lapsing into x86 builds on ARM64 Macs
Browse files Browse the repository at this point in the history
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 <rsc@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
  • Loading branch information
rsc committed Jan 18, 2022
1 parent 897b3da commit 5b3ebc8
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions src/cmd/dist/main.go
Expand Up @@ -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"):
Expand Down

0 comments on commit 5b3ebc8

Please sign in to comment.