Merged revisions 76993-76994 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r76993 | tarek.ziade | 2009-12-22 00:12:41 +0100 (Tue, 22 Dec 2009) | 1 line

  Fixed #7556: editing the MSVC manifest file with a regexp was throwing an error
........
  r76994 | tarek.ziade | 2009-12-22 00:16:09 +0100 (Tue, 22 Dec 2009) | 1 line

  forgot to add the win32 test in the unittest skip call
........
diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py
index c84fb0b..ad021b5 100644
--- a/Lib/distutils/msvc9compiler.py
+++ b/Lib/distutils/msvc9compiler.py
@@ -646,28 +646,8 @@
                 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
+                # Remove references to the Visual C runtime
+                self._remove_visual_c_ref(temp_manifest)
             out_arg = '-outputresource:%s;%s' % (output_filename, mfid)
             try:
                 self.spawn(['mt.exe', '-nologo', '-manifest',
@@ -677,6 +657,33 @@
         else:
             log.debug("skipping %s (up-to-date)", output_filename)
 
+    def _remove_visual_c_ref(self, manifest_file):
+        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(manifest_file)
+            try:
+                manifest_buf = manifest_f.read()
+            finally:
+                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(manifest_file, 'w')
+            try:
+                manifest_f.write(manifest_buf)
+            finally:
+                manifest_f.close()
+        except IOError:
+            pass
 
     # -- Miscellaneous methods -----------------------------------------
     # These are all used by the 'gen_lib_options() function, in