| Index: recipe_engine/third_party/setuptools/msvc9_support.py
|
| diff --git a/recipe_engine/third_party/setuptools/msvc9_support.py b/recipe_engine/third_party/setuptools/msvc9_support.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d0be70e2a9b98031224872907e5dc7275f6d06c9
|
| --- /dev/null
|
| +++ b/recipe_engine/third_party/setuptools/msvc9_support.py
|
| @@ -0,0 +1,64 @@
|
| +import sys
|
| +
|
| +try:
|
| + import distutils.msvc9compiler
|
| +except ImportError:
|
| + pass
|
| +
|
| +unpatched = dict()
|
| +
|
| +def patch_for_specialized_compiler():
|
| + """
|
| + Patch functions in distutils.msvc9compiler to use the standalone compiler
|
| + build for Python (Windows only). Fall back to original behavior when the
|
| + standalone compiler is not available.
|
| + """
|
| + if 'distutils' not in globals():
|
| + # The module isn't available to be patched
|
| + return
|
| +
|
| + if unpatched:
|
| + # Already patched
|
| + return
|
| +
|
| + unpatched.update(vars(distutils.msvc9compiler))
|
| +
|
| + distutils.msvc9compiler.find_vcvarsall = find_vcvarsall
|
| + distutils.msvc9compiler.query_vcvarsall = query_vcvarsall
|
| +
|
| +def find_vcvarsall(version):
|
| + Reg = distutils.msvc9compiler.Reg
|
| + VC_BASE = r'Software\%sMicrosoft\DevDiv\VCForPython\%0.1f'
|
| + try:
|
| + # Per-user installs register the compiler path here
|
| + productdir = Reg.get_value(VC_BASE % ('', version), "installdir")
|
| + except KeyError:
|
| + try:
|
| + # All-user installs on a 64-bit system register here
|
| + productdir = Reg.get_value(VC_BASE % ('Wow6432Node\\', version), "installdir")
|
| + except KeyError:
|
| + productdir = None
|
| +
|
| + if productdir:
|
| + import os
|
| + vcvarsall = os.path.join(productdir, "vcvarsall.bat")
|
| + if os.path.isfile(vcvarsall):
|
| + return vcvarsall
|
| +
|
| + return unpatched['find_vcvarsall'](version)
|
| +
|
| +def query_vcvarsall(version, *args, **kwargs):
|
| + try:
|
| + return unpatched['query_vcvarsall'](version, *args, **kwargs)
|
| + except distutils.errors.DistutilsPlatformError:
|
| + exc = sys.exc_info()[1]
|
| + if exc and "vcvarsall.bat" in exc.args[0]:
|
| + message = 'Microsoft Visual C++ %0.1f is required (%s).' % (version, exc.args[0])
|
| + if int(version) == 9:
|
| + # This redirection link is maintained by Microsoft.
|
| + # Contact vspython@microsoft.com if it needs updating.
|
| + raise distutils.errors.DistutilsPlatformError(
|
| + message + ' Get it from http://aka.ms/vcpython27'
|
| + )
|
| + raise distutils.errors.DistutilsPlatformError(message)
|
| + raise
|
|
|