summaryrefslogtreecommitdiffstats
path: root/modules/mono/mono_reg_utils.py
diff options
context:
space:
mode:
authorIgnacio Etcheverry <ignalfonsore@gmail.com>2019-03-01 21:51:20 +0100
committerIgnacio Etcheverry <ignalfonsore@gmail.com>2019-04-07 19:03:09 +0200
commit6bb29eb8470052d5fd11eb0a81cf496f99df2f67 (patch)
tree9b9870f9ba46e597e113c0419a3043a70ba033c3 /modules/mono/mono_reg_utils.py
parent01c2071d047909a1b98793d2a3f08a3c220d96fd (diff)
downloadredot-engine-6bb29eb8470052d5fd11eb0a81cf496f99df2f67.tar.gz
Mono: Reorganize build scripts
All build scripts, other than config.py and SCSub, are now located in the build_scripts subdirectory.
Diffstat (limited to 'modules/mono/mono_reg_utils.py')
-rw-r--r--modules/mono/mono_reg_utils.py120
1 files changed, 0 insertions, 120 deletions
diff --git a/modules/mono/mono_reg_utils.py b/modules/mono/mono_reg_utils.py
deleted file mode 100644
index 583708bf07..0000000000
--- a/modules/mono/mono_reg_utils.py
+++ /dev/null
@@ -1,120 +0,0 @@
-import os
-import platform
-
-from compat import decode_utf8
-
-if os.name == 'nt':
- import sys
- if sys.version_info < (3,):
- import _winreg as winreg
- else:
- import winreg
-
-
-def _reg_open_key(key, subkey):
- try:
- return winreg.OpenKey(key, subkey)
- except (WindowsError, OSError):
- if platform.architecture()[0] == '32bit':
- bitness_sam = winreg.KEY_WOW64_64KEY
- else:
- bitness_sam = winreg.KEY_WOW64_32KEY
- return winreg.OpenKey(key, subkey, 0, winreg.KEY_READ | bitness_sam)
-
-
-def _reg_open_key_bits(key, subkey, bits):
- sam = winreg.KEY_READ
-
- if platform.architecture()[0] == '32bit':
- if bits == '64':
- # Force 32bit process to search in 64bit registry
- sam |= winreg.KEY_WOW64_64KEY
- else:
- if bits == '32':
- # Force 64bit process to search in 32bit registry
- sam |= winreg.KEY_WOW64_32KEY
-
- return winreg.OpenKey(key, subkey, 0, sam)
-
-
-def _find_mono_in_reg(subkey, bits):
- try:
- with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
- value = winreg.QueryValueEx(hKey, 'SdkInstallRoot')[0]
- return value
- except (WindowsError, OSError):
- return None
-
-
-def _find_mono_in_reg_old(subkey, bits):
- try:
- with _reg_open_key_bits(winreg.HKEY_LOCAL_MACHINE, subkey, bits) as hKey:
- default_clr = winreg.QueryValueEx(hKey, 'DefaultCLR')[0]
- if default_clr:
- return _find_mono_in_reg(subkey + '\\' + default_clr, bits)
- return None
- except (WindowsError, EnvironmentError):
- return None
-
-
-def find_mono_root_dir(bits):
- root_dir = _find_mono_in_reg(r'SOFTWARE\Mono', bits)
- if root_dir is not None:
- return str(root_dir)
- root_dir = _find_mono_in_reg_old(r'SOFTWARE\Novell\Mono', bits)
- if root_dir is not None:
- return str(root_dir)
- return ''
-
-
-def find_msbuild_tools_path_reg():
- import subprocess
-
- vswhere = os.getenv('PROGRAMFILES(X86)')
- if not vswhere:
- vswhere = os.getenv('PROGRAMFILES')
- vswhere += r'\Microsoft Visual Studio\Installer\vswhere.exe'
-
- vswhere_args = ['-latest', '-products', '*', '-requires', 'Microsoft.Component.MSBuild']
-
- try:
- lines = subprocess.check_output([vswhere] + vswhere_args).splitlines()
-
- for line in lines:
- parts = decode_utf8(line).split(':', 1)
-
- if len(parts) < 2 or parts[0] != 'installationPath':
- continue
-
- val = parts[1].strip()
-
- if not val:
- raise ValueError('Value of `installationPath` entry is empty')
-
- # Since VS2019, the directory is simply named "Current"
- msbuild_dir = os.path.join(val, 'MSBuild\\Current\\Bin')
- if os.path.isdir(msbuild_dir):
- return msbuild_dir
-
- # Directory name "15.0" is used in VS 2017
- return os.path.join(val, 'MSBuild\\15.0\\Bin')
-
- raise ValueError('Cannot find `installationPath` entry')
- except ValueError as e:
- print('Error reading output from vswhere: ' + e.message)
- except WindowsError:
- pass # Fine, vswhere not found
- except (subprocess.CalledProcessError, OSError):
- pass
-
- # Try to find 14.0 in the Registry
-
- try:
- subkey = r'SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0'
- with _reg_open_key(winreg.HKEY_LOCAL_MACHINE, subkey) as hKey:
- value = winreg.QueryValueEx(hKey, 'MSBuildToolsPath')[0]
- return value
- except (WindowsError, OSError):
- return ''
-
- return ''