[Python-checkins] r76658 - in python/branches/release31-maint: Lib/distutils/msvc9compiler.py Misc/NEWS

martin.v.loewis python-checkins at python.org
Thu Dec 3 22:14:10 CET 2009


Author: martin.v.loewis
Date: Thu Dec  3 22:14:10 2009
New Revision: 76658

Log:
Merged revisions 76653 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r76653 | martin.v.loewis | 2009-12-03 21:57:49 +0100 (Do, 03 Dez 2009) | 10 lines
  
  Merged revisions 76651 via svnmerge from 
  svn+ssh://pythondev@svn.python.org/python/trunk
  
  ........
    r76651 | martin.v.loewis | 2009-12-03 21:53:51 +0100 (Do, 03 Dez 2009) | 3 lines
    
    Issue #4120: Drop reference to CRT from manifest when building
    extensions with msvc9compiler.
  ........
................


Modified:
   python/branches/release31-maint/   (props changed)
   python/branches/release31-maint/Lib/distutils/msvc9compiler.py
   python/branches/release31-maint/Misc/NEWS

Modified: python/branches/release31-maint/Lib/distutils/msvc9compiler.py
==============================================================================
--- python/branches/release31-maint/Lib/distutils/msvc9compiler.py	(original)
+++ python/branches/release31-maint/Lib/distutils/msvc9compiler.py	Thu Dec  3 22:14:10 2009
@@ -17,6 +17,7 @@
 import os
 import subprocess
 import sys
+import re
 
 from distutils.errors import DistutilsExecError, DistutilsPlatformError, \
                              CompileError, LibError, LinkError
@@ -645,6 +646,28 @@
                 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',

Modified: python/branches/release31-maint/Misc/NEWS
==============================================================================
--- python/branches/release31-maint/Misc/NEWS	(original)
+++ python/branches/release31-maint/Misc/NEWS	Thu Dec  3 22:14:10 2009
@@ -55,6 +55,9 @@
 Library
 -------
 
+- Issue #4120: Drop reference to CRT from manifest when building extensions with
+  msvc9compiler.
+
 - Issue #7410: deepcopy of itertools.count was resetting the count.
 
 - Issue #4486: When an exception has an explicit cause, do not print its


More information about the Python-checkins mailing list