code: def get_darwin_arches(major, minor, machine):
      """Return a list of supported arches (including group arches) for
      the given major, minor and machine architecture of an macOS machine.
      """
      arches = []
  
      def _supports_arch(major, minor, arch):
          # Looking at the application support for macOS versions in the chart
          # provided by https://en.wikipedia.org/wiki/OS_X#Versions it appears
          # our timeline looks roughly like:
          #
          # 10.0 - Introduces ppc support.
          # 10.4 - Introduces ppc64, i386, and x86_64 support, however the ppc64
          #        and x86_64 support is CLI only, and cannot be used for GUI
          #        applications.
          # 10.5 - Extends ppc64 and x86_64 support to cover GUI applications.
          # 10.6 - Drops support for ppc64
          # 10.7 - Drops support for ppc
          #
          # Given that we do not know if we're installing a CLI or a GUI
          # application, we must be conservative and assume it might be a GUI
          # application and behave as if ppc64 and x86_64 support did not occur
          # until 10.5.
          #
          # Note: The above information is taken from the "Application support"
          #       column in the chart not the "Processor support" since I believe
          #       that we care about what instruction sets an application can use
          #       not which processors the OS supports.
          if arch == "ppc":
              return (major, minor) <= (10, 5)
          if arch == "ppc64":
              return (major, minor) == (10, 5)
          if arch == "i386":
              return (major, minor) >= (10, 4)
          if arch == "x86_64":
              return (major, minor) >= (10, 5)
          if arch in groups:
              for garch in groups[arch]:
                  if _supports_arch(major, minor, garch):
                      return True
          return False
  
      groups = OrderedDict(
          [
              ("fat", ("i386", "ppc")),
              ("intel", ("x86_64", "i386")),
              ("fat64", ("x86_64", "ppc64")),
              ("fat32", ("x86_64", "i386", "ppc")),
          ]
      )
  
      if _supports_arch(major, minor, machine):
          arches.append(machine)
  
      for garch in groups:
          if machine in groups[garch] and _supports_arch(
              major, minor, garch
          ):
              arches.append(garch)
  
      arches.append("universal")
  
      return arches
  
imports: from __future__ import absolute_import
  import distutils.util
  from distutils import log
  import platform
  import re
  import sys
  import sysconfig
  import warnings
  from collections import OrderedDict
  import glibc
label_desc: Use image node_id 11 for calling a global function with example usage: get_darwin_arches(major, minor, machine) and returns: arches, False, unknown, unknown, unknown, unknown, True