summaryrefslogtreecommitdiff
path: root/Lib/distutils/msvc9compiler.py
diff options
context:
space:
mode:
authorTarek Ziadé <ziade.tarek@gmail.com>2009-12-21 23:18:02 +0000
committerTarek Ziadé <ziade.tarek@gmail.com>2009-12-21 23:18:02 +0000
commitb7e82bb7dd493a9de0931c7bbaeffb4237cf0700 (patch)
tree796bf034ee0613f1ed77de1e05ba4a671727f56f /Lib/distutils/msvc9compiler.py
parent35ce4a07eec9bee579a63893596e2385922ce1cd (diff)
downloadcpython-git-b7e82bb7dd493a9de0931c7bbaeffb4237cf0700.tar.gz
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 ........
Diffstat (limited to 'Lib/distutils/msvc9compiler.py')
-rw-r--r--Lib/distutils/msvc9compiler.py51
1 files changed, 29 insertions, 22 deletions
diff --git a/Lib/distutils/msvc9compiler.py b/Lib/distutils/msvc9compiler.py
index c84fb0b4a6..ad021b5754 100644
--- a/Lib/distutils/msvc9compiler.py
+++ b/Lib/distutils/msvc9compiler.py
@@ -646,28 +646,8 @@ 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
+ # 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 @@ class MSVCCompiler(CCompiler) :
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