func NativeArchitecture()

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
}