in providers/darwin/arch_darwin.go [45:73]
func NativeArchitecture() (string, error) {
processArch, err := Architecture()
if err != nil {
return "", err
}
// https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment
translated, err := unix.SysctlUint32(procTranslated)
if err != nil {
// macos without Rosetta installed doesn't have sysctl.proc_translated
if os.IsNotExist(err) {
return processArch, nil
}
return "", fmt.Errorf("failed to read sysctl.proc_translated: %w", err)
}
var nativeArch string
switch translated {
case 0:
nativeArch = processArch
case 1:
// Rosetta 2 is supported only on Apple silicon
nativeArch = archApple
}
return nativeArch, nil
}