diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2014-09-26 15:17:55 -0400 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2014-09-26 15:17:55 -0400 |
commit | 2478914c6ee61f85ccc878fb052bf044b4bca39b (patch) | |
tree | 317c10a357611c19882a4919f5aea6ec30696361 /setuptools/extension.py | |
parent | d6b47e3d00604e7f515bdd92a681972e567bec7c (diff) | |
download | python-setuptools-bitbucket-2478914c6ee61f85ccc878fb052bf044b4bca39b.tar.gz |
Move monkey patch to a separate module
Diffstat (limited to 'setuptools/extension.py')
-rw-r--r-- | setuptools/extension.py | 56 |
1 files changed, 3 insertions, 53 deletions
diff --git a/setuptools/extension.py b/setuptools/extension.py index c695976a..8178ed33 100644 --- a/setuptools/extension.py +++ b/setuptools/extension.py @@ -4,63 +4,13 @@ import functools import distutils.core import distutils.errors import distutils.extension -import distutils.msvc9compiler -from setuptools.dist import _get_unpatched +from .dist import _get_unpatched +from . import msvc9_support _Extension = _get_unpatched(distutils.core.Extension) -def _patch_msvc9compiler_find_vcvarsall(): - """ - Looks for the standalone VC for Python before falling back on - distutils's original approach. - """ - VC_BASE = r'Software\%sMicrosoft\DevDiv\VCForPython\%0.1f' - find_vcvarsall = distutils.msvc9compiler.find_vcvarsall - query_vcvarsall = distutils.msvc9compiler.query_vcvarsall - if find_vcvarsall and find_vcvarsall.__module__.startswith('setuptools.'): - # Already patched - return - - def _find_vcvarsall(version): - Reg = distutils.msvc9compiler.Reg - 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 find_vcvarsall(version) - - def _query_vcvarsall(version, *args, **kwargs): - try: - return 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 - - distutils.msvc9compiler.find_vcvarsall = _find_vcvarsall - distutils.msvc9compiler.query_vcvarsall = _query_vcvarsall -_patch_msvc9compiler_find_vcvarsall() +msvc9_support.patch_for_specialized_compiler() def have_pyrex(): """ |