[Numpy-svn] r6196 - trunk/numpy/distutils

numpy-svn at scipy.org numpy-svn at scipy.org
Fri Dec 26 07:36:25 EST 2008


Author: cdavid
Date: 2008-12-26 06:36:19 -0600 (Fri, 26 Dec 2008)
New Revision: 6196

Modified:
   trunk/numpy/distutils/mingw32ccompiler.py
Log:
Do not import msvcrt globally in mingw32compiler module, since the module is imported on all platforms.

Modified: trunk/numpy/distutils/mingw32ccompiler.py
===================================================================
--- trunk/numpy/distutils/mingw32ccompiler.py	2008-12-26 12:16:45 UTC (rev 6195)
+++ trunk/numpy/distutils/mingw32ccompiler.py	2008-12-26 12:36:19 UTC (rev 6196)
@@ -241,26 +241,31 @@
 # directory, but this requires the manifest for this to work. This is a big
 # mess, thanks MS for a wonderful system.
 
-# XXX: ideally, we should use exactly the same version as used by python, but I
-# have no idea how to obtain the exact version from python. We could use the
-# strings utility on python.exe, maybe ?
-try:
-    import msvcrt
-    if hasattr(msvcrt, "CRT_ASSEMBLY_VERSION"):
-        _MSVCRVER_TO_FULLVER = {'90': msvcrt.CRT_ASSEMBLY_VERSION}
-    else:
-        _MSVCRVER_TO_FULLVER = {'90': "9.0.21022.8"}
-except ImportError:
-    # If we are here, means python was not built with MSVC. Not sure what to do
-    # in that case: manifest building will fail, but it should not be used in
-    # that case anyway
-    log.warn('Cannot import msvcrt: using manifest will not be possible')
+# XXX: ideally, we should use exactly the same version as used by python. I
+# submitted a patch to get this version, but it was only included for python
+# 2.6.1 and above. So for versions below, we use a "best guess".
+_MSVCRVER_TO_FULLVER = {'90': None}
 
+def msvcrt_version(num):
+    k = _MSVCRVER_TO_FULLVER[num]
+    if not k:
+        try:
+            import msvcrt
+            if hasattr(msvcrt, "CRT_ASSEMBLY_VERSION"):
+                _MSVCRVER_TO_FULLVER = {'90': msvcrt.CRT_ASSEMBLY_VERSION}
+            else:
+                _MSVCRVER_TO_FULLVER = {'90': "9.0.21022.8"}
+        except ImportError:
+            # If we are here, means python was not built with MSVC. Not sure what to do
+            # in that case: manifest building will fail, but it should not be used in
+            # that case anyway
+            log.warn('Cannot import msvcrt: using manifest will not be possible')
+
 def msvc_manifest_xml(maj, min):
     """Given a major and minor version of the MSVCR, returns the
     corresponding XML file."""
     try:
-        fullver = _MSVCRVER_TO_FULLVER[str(maj * 10 + min)]
+        fullver = msvcrt_version[str(maj * 10 + min)]
     except KeyError:
         raise ValueError("Version %d,%d of MSVCRT not supported yet" \
                          % (maj, min))




More information about the Numpy-svn mailing list