diff options
Diffstat (limited to 'Lib/distutils/msvc9compiler.py')
| -rw-r--r-- | Lib/distutils/msvc9compiler.py | 23 | 
1 files changed, 23 insertions, 0 deletions
diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py index ef89542..c84fb0b 100644 --- a/Lib/distutils/msvc9compiler.py +++ b/Lib/distutils/msvc9compiler.py @@ -17,6 +17,7 @@ __revision__ = "$Id$"  import os  import subprocess  import sys +import re  from distutils.errors import DistutilsExecError, DistutilsPlatformError, \                               CompileError, LibError, LinkError @@ -645,6 +646,28 @@ class MSVCCompiler(CCompiler) :                  mfid = 1              else:                  mfid = 2 +                try: +                    # Remove references to the Visual C runtime, so they will +                    # fall through to the Visual C dependency of Python.exe. +                    # This way, when installed for a restricted user (e.g. +                    # runtimes are not in WinSxS folder, but in Python's own +                    # folder), the runtimes do not need to be in every folder +                    # with .pyd's. +                    manifest_f = open(temp_manifest, "rb") +                    manifest_buf = manifest_f.read() +                    manifest_f.close() +                    pattern = re.compile( +                        r"""<assemblyIdentity.*?name=("|')Microsoft\."""\ +                        r"""VC\d{2}\.CRT("|').*?(/>|</assemblyIdentity>)""", +                        re.DOTALL) +                    manifest_buf = re.sub(pattern, "", manifest_buf) +                    pattern = "<dependentAssembly>\s*</dependentAssembly>" +                    manifest_buf = re.sub(pattern, "", manifest_buf) +                    manifest_f = open(temp_manifest, "wb") +                    manifest_f.write(manifest_buf) +                    manifest_f.close() +                except IOError: +                    pass              out_arg = '-outputresource:%s;%s' % (output_filename, mfid)              try:                  self.spawn(['mt.exe', '-nologo', '-manifest',  | 
