aboutsummaryrefslogtreecommitdiffstats
path: root/setuptools/msvc.py
diff options
context:
space:
mode:
authorJason R. Coombs <jaraco@jaraco.com>2016-08-04 07:05:36 -0400
committerGitHub <noreply@github.com>2016-08-04 07:05:36 -0400
commit859a62a61bd5c24a070500eb103608959c670bff (patch)
treeb3cf811af20f898d6a1097b1c6e9df09a07ddc55 /setuptools/msvc.py
parent07671cdc72f4cf7d729adf5d1321b718c66fb2a7 (diff)
parent3ebd9363b715b4dd1a0aa1d89a596d08e4b41d84 (diff)
downloadexternal_python_setuptools-859a62a61bd5c24a070500eb103608959c670bff.tar.gz
external_python_setuptools-859a62a61bd5c24a070500eb103608959c670bff.tar.bz2
external_python_setuptools-859a62a61bd5c24a070500eb103608959c670bff.zip
Merge pull request #716 from JGoutin/patch-2
#707 MSVC patch and Python 2
Diffstat (limited to 'setuptools/msvc.py')
-rw-r--r--setuptools/msvc.py67
1 files changed, 39 insertions, 28 deletions
diff --git a/setuptools/msvc.py b/setuptools/msvc.py
index da26371c..2700a2b0 100644
--- a/setuptools/msvc.py
+++ b/setuptools/msvc.py
@@ -384,22 +384,11 @@ class RegistryInfo:
self.pi = platform_info
@property
- def microsoft(self):
- """
- Microsoft software registry key.
- """
- return os.path.join(
- 'Software',
- '' if self.pi.current_is_x86() else 'Wow6432Node',
- 'Microsoft',
- )
-
- @property
def visualstudio(self):
"""
Microsoft Visual Studio root registry key.
"""
- return os.path.join(self.microsoft, 'VisualStudio')
+ return 'VisualStudio'
@property
def sxs(self):
@@ -427,15 +416,14 @@ class RegistryInfo:
"""
Microsoft Visual C++ for Python registry key.
"""
- path = r'DevDiv\VCForPython'
- return os.path.join(self.microsoft, path)
+ return r'DevDiv\VCForPython'
@property
def microsoft_sdk(self):
"""
Microsoft SDK registry key.
"""
- return os.path.join(self.microsoft, 'Microsoft SDKs')
+ return 'Microsoft SDKs'
@property
def windows_sdk(self):
@@ -456,11 +444,29 @@ class RegistryInfo:
"""
Microsoft Windows Kits Roots registry key.
"""
- return os.path.join(self.microsoft, r'Windows Kits\Installed Roots')
+ return r'Windows Kits\Installed Roots'
+
+ def microsoft(self, key, x86=False):
+ """
+ Return key in Microsoft software registry.
+
+ Parameters
+ ----------
+ key: str
+ Registry key path where look.
+ x86: str
+ Force x86 software registry.
+
+ Return
+ ------
+ str: value
+ """
+ node64 = '' if self.pi.current_is_x86() or x86 else r'\Wow6432Node'
+ return os.path.join('Software', node64, 'Microsoft', key)
def lookup(self, key, name):
"""
- Look for values in registry.
+ Look for values in registry in Microsoft software registry.
Parameters
----------
@@ -473,18 +479,23 @@ class RegistryInfo:
------
str: value
"""
+ KEY_READ = winreg.KEY_READ
+ openkey = winreg.OpenKey
+ ms = self.microsoft
for hkey in self.HKEYS:
try:
- bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ)
- except OSError:
- continue
- except IOError:
- continue
+ bkey = openkey(hkey, ms(key), 0, KEY_READ)
+ except (OSError, IOError):
+ if not self.pi.current_is_x86():
+ try:
+ bkey = openkey(hkey, ms(key, True), 0, KEY_READ)
+ except (OSError, IOError):
+ continue
+ else:
+ continue
try:
return winreg.QueryValueEx(bkey, name)[0]
- except OSError:
- pass
- except IOError:
+ except (OSError, IOError):
pass
@@ -527,7 +538,7 @@ class SystemInfo:
for key in vckeys:
try:
bkey = winreg.OpenKey(hkey, key, 0, winreg.KEY_READ)
- except IOError:
+ except (OSError, IOError):
continue
subkeys, values, _ = winreg.QueryInfoKey(bkey)
for i in range(values):
@@ -840,7 +851,7 @@ class EnvironmentInfo:
Microsoft Visual C++ & Microsoft Foundation Class Includes
"""
return [os.path.join(self.si.VCInstallDir, 'Include'),
- os.path.join(self.si.VCInstallDir, 'ATLMFC\Include')]
+ os.path.join(self.si.VCInstallDir, r'ATLMFC\Include')]
@property
def VCLibraries(self):
@@ -1226,5 +1237,5 @@ class EnvironmentInfo:
if name:
return '%s\\' % name[0]
return ''
- except IOError:
+ except (OSError, IOError):
return ''