comparison venv/lib/python2.7/site-packages/setuptools/msvc9_support.py @ 0:d67268158946 draft

planemo upload commit a3f181f5f126803c654b3a66dd4e83a48f7e203b
author bcclaywell
date Mon, 12 Oct 2015 17:43:33 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d67268158946
1 try:
2 import distutils.msvc9compiler
3 except ImportError:
4 pass
5
6 unpatched = dict()
7
8 def patch_for_specialized_compiler():
9 """
10 Patch functions in distutils.msvc9compiler to use the standalone compiler
11 build for Python (Windows only). Fall back to original behavior when the
12 standalone compiler is not available.
13 """
14 if 'distutils' not in globals():
15 # The module isn't available to be patched
16 return
17
18 if unpatched:
19 # Already patched
20 return
21
22 unpatched.update(vars(distutils.msvc9compiler))
23
24 distutils.msvc9compiler.find_vcvarsall = find_vcvarsall
25 distutils.msvc9compiler.query_vcvarsall = query_vcvarsall
26
27 def find_vcvarsall(version):
28 Reg = distutils.msvc9compiler.Reg
29 VC_BASE = r'Software\%sMicrosoft\DevDiv\VCForPython\%0.1f'
30 key = VC_BASE % ('', version)
31 try:
32 # Per-user installs register the compiler path here
33 productdir = Reg.get_value(key, "installdir")
34 except KeyError:
35 try:
36 # All-user installs on a 64-bit system register here
37 key = VC_BASE % ('Wow6432Node\\', version)
38 productdir = Reg.get_value(key, "installdir")
39 except KeyError:
40 productdir = None
41
42 if productdir:
43 import os
44 vcvarsall = os.path.join(productdir, "vcvarsall.bat")
45 if os.path.isfile(vcvarsall):
46 return vcvarsall
47
48 return unpatched['find_vcvarsall'](version)
49
50 def query_vcvarsall(version, *args, **kwargs):
51 try:
52 return unpatched['query_vcvarsall'](version, *args, **kwargs)
53 except distutils.errors.DistutilsPlatformError as exc:
54 if exc and "vcvarsall.bat" in exc.args[0]:
55 message = 'Microsoft Visual C++ %0.1f is required (%s).' % (version, exc.args[0])
56 if int(version) == 9:
57 # This redirection link is maintained by Microsoft.
58 # Contact vspython@microsoft.com if it needs updating.
59 raise distutils.errors.DistutilsPlatformError(
60 message + ' Get it from http://aka.ms/vcpython27'
61 )
62 raise distutils.errors.DistutilsPlatformError(message)
63 raise