[Python-checkins] r54644 - in python/trunk: Lib/distutils/msvccompiler.py Misc/NEWS
neal.norwitz
python-checkins at python.org
Sun Apr 1 20:24:24 CEST 2007
Author: neal.norwitz
Date: Sun Apr 1 20:24:22 2007
New Revision: 54644
Modified:
python/trunk/Lib/distutils/msvccompiler.py
python/trunk/Misc/NEWS
Log:
SF #1685563, MSVCCompiler creates redundant and long PATH strings
If MSVCCompiler.initialize() was called multiple times, the path
would get duplicated. On Windows, this is a problem because the
path is limited to 4k. There's no benefit in adding a path multiple
times, so prevent that from occuring. We also normalize the path
before checking for duplicates so things like /a and /a/ won't both
be stored.
Will backport.
Modified: python/trunk/Lib/distutils/msvccompiler.py
==============================================================================
--- python/trunk/Lib/distutils/msvccompiler.py (original)
+++ python/trunk/Lib/distutils/msvccompiler.py Sun Apr 1 20:24:22 2007
@@ -187,6 +187,19 @@
j = string.find(sys.version, ")", i)
return sys.version[i+len(prefix):j]
+def normalize_and_reduce_paths(paths):
+ """Return a list of normalized paths with duplicates removed.
+
+ The current order of paths is maintained.
+ """
+ # Paths are normalized so things like: /a and /a/ aren't both preserved.
+ reduced_paths = []
+ for p in paths:
+ np = os.path.normpath(p)
+ # XXX(nnorwitz): O(n**2), if reduced_paths gets long perhaps use a set.
+ if np not in reduced_paths:
+ reduced_paths.append(np)
+ return reduced_paths
class MSVCCompiler (CCompiler) :
@@ -270,6 +283,7 @@
self.__paths.append(p)
except KeyError:
pass
+ self.__paths = normalize_and_reduce_paths(self.__paths)
os.environ['path'] = string.join(self.__paths, ';')
self.preprocess_options = None
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS (original)
+++ python/trunk/Misc/NEWS Sun Apr 1 20:24:22 2007
@@ -1,4 +1,4 @@
-__init+++++++++++
++++++++++++
Python News
+++++++++++
@@ -200,6 +200,8 @@
Library
-------
+- Patch #1685563: remove (don't add) duplicate paths in distutils.MSVCCompiler.
+
- Added a timeout parameter to the constructor of other protocols
(telnetlib, ftplib, smtplib and poplib). This is second part of the
work started with create_connection() and timeout in httplib, and
More information about the Python-checkins
mailing list