[Python-checkins] cpython (2.7): Fix short file name generation in bdist_msi.

martin.v.loewis python-checkins at python.org
Sun Mar 27 10:16:31 CEST 2011


http://hg.python.org/cpython/rev/e51366a05b84
changeset: 68999:e51366a05b84
branch: 2.7
parent: 68996:4f07cacb2c3b
user: Martin v. Löwis <martin at v.loewis.de>
date: Sun Mar 27 10:10:46 2011 +0200
summary:
 Fix short file name generation in bdist_msi.
Patch by Christoph Gohlke.
Closes #7639.
files:
 Lib/msilib/__init__.py | 25 +++++++++++++++++--------
 Misc/NEWS | 2 ++
 2 files changed, 19 insertions(+), 8 deletions(-)
diff --git a/Lib/msilib/__init__.py b/Lib/msilib/__init__.py
--- a/Lib/msilib/__init__.py
+++ b/Lib/msilib/__init__.py
@@ -174,10 +174,10 @@
 
 def make_id(str):
 #str = str.replace(".", "_") # colons are allowed
- str = str.replace(" ", "_")
- str = str.replace("-", "_")
- if str[0] in string.digits:
- str = "_"+str
+ for c in " -+~;":
+ str = str.replace(c, "_")
+ if str[0] in (string.digits + "."):
+ str = "_" + str
 assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
 return str
 
@@ -285,19 +285,28 @@
 [(feature.id, component)])
 
 def make_short(self, file):
+ oldfile = file
+ file = file.replace('+', '_')
+ file = ''.join(c for c in file if not c in ' "/\[]:;=,')
 parts = file.split(".")
- if len(parts)>1:
+ if len(parts) > 1:
+ prefix = "".join(parts[:-1]).upper()
 suffix = parts[-1].upper()
+ if not prefix:
+ prefix = suffix
+ suffix = None
 else:
+ prefix = file.upper()
 suffix = None
- prefix = parts[0].upper()
- if len(prefix) <= 8 and (not suffix or len(suffix)<=3):
+ if len(parts) < 3 and len(prefix) <= 8 and file == oldfile and (
+ not suffix or len(suffix) <= 3):
 if suffix:
 file = prefix+"."+suffix
 else:
 file = prefix
- assert file not in self.short_names
 else:
+ file = None
+ if file is None or file in self.short_names:
 prefix = prefix[:6]
 if suffix:
 suffix = suffix[:3]
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -51,6 +51,8 @@
 Library
 -------
 
+- Issue #7639: Fix short file name generation in bdist_msi.
+
 - Issue #11666: let help() display named tuple attributes and methods
 that start with a leading underscore.
 
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /