tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

detect_host_arch.py (1558B)


      1 #!/usr/bin/env python3
      2 # Copyright 2014 The Chromium Authors
      3 # Use of this source code is governed by a BSD-style license that can be
      4 # found in the LICENSE file.
      5 
      6 """Outputs host CPU architecture in format recognized by gyp."""
      7 
      8 
      9 import platform
     10 import re
     11 import sys
     12 
     13 
     14 def HostArch():
     15  """Returns the host architecture with a predictable string."""
     16  host_arch = platform.machine()
     17 
     18  # Convert machine type to format recognized by gyp.
     19  if re.match(r'i.86', host_arch) or host_arch == 'i86pc':
     20    host_arch = 'ia32'
     21  elif host_arch in ['x86_64', 'amd64']:
     22    host_arch = 'x64'
     23  elif host_arch.startswith('arm'):
     24    host_arch = 'arm'
     25  elif host_arch.startswith('aarch64'):
     26    host_arch = 'arm64'
     27  elif host_arch.startswith('mips64'):
     28    host_arch = 'mips64'
     29  elif host_arch.startswith('mips'):
     30    host_arch = 'mips'
     31  elif host_arch.startswith('ppc'):
     32    host_arch = 'ppc'
     33  elif host_arch.startswith('s390'):
     34    host_arch = 's390'
     35 
     36 
     37  # platform.machine is based on running kernel. It's possible to use 64-bit
     38  # kernel with 32-bit userland, e.g. to give linker slightly more memory.
     39  # Distinguish between different userland bitness by querying
     40  # the python binary.
     41  if host_arch == 'x64' and platform.architecture()[0] == '32bit':
     42    host_arch = 'ia32'
     43  if host_arch == 'arm64' and platform.architecture()[0] == '32bit':
     44    host_arch = 'arm'
     45 
     46  return host_arch
     47 
     48 def DoMain(_):
     49  """Hook to be called from gyp without starting a separate python
     50  interpreter."""
     51  return HostArch()
     52 
     53 if __name__ == '__main__':
     54  print(DoMain([]))