all: prepare for GOOS=ios in Go 1.16

Work with either way for now on iOS (darwin/arm64 vs ios/arm64).

In February when Go 1.16 comes out we'll have a universal binary for
darwin/arm64 (macOS) and will drop support for Go 1.15 and its
darwin/amd64 meaning iOS. (it'll mean macOS).

Context:

* https://tip.golang.org/doc/go1.16#darwin
* https://github.com/golang/go/issues/38485
* https://github.com/golang/go/issues/42100
This commit is contained in:
Brad Fitzpatrick
2020-11-11 09:04:34 -08:00
parent 258b680bc5
commit 19b0cfe89e
8 changed files with 29 additions and 13 deletions
+4 -5
View File
@@ -10,17 +10,16 @@ import "runtime"
func IsMobile() bool {
// Good enough heuristic for now, at least until Apple makes
// ARM laptops...
return runtime.GOOS == "android" ||
(runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64"))
return runtime.GOOS == "android" || isIOS
}
// OS returns runtime.GOOS, except instead of returning "darwin" it
// returns "iOS" or "macOS".
func OS() string {
if isIOS {
return "iOS"
}
if runtime.GOOS == "darwin" {
if IsMobile() {
return "iOS"
}
return "macOS"
}
return runtime.GOOS
+9
View File
@@ -0,0 +1,9 @@
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build ios
package version
const isIOS = true
+9
View File
@@ -0,0 +1,9 @@
// Copyright (c) 2020 Tailscale Inc & AUTHORS All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// +build !ios
package version
const isIOS = false