Fix short file name generation in bdist_msi.

Patch by Christoph Gohlke.
Closes #7639.
This commit is contained in:
Martin v. Löwis 2011-03-27 10:10:46 +02:00
parent 8c05568e06
commit 49b0ce06f0
2 changed files with 19 additions and 8 deletions

View File

@ -174,10 +174,10 @@ def add_tables(db, module):
def make_id(str): def make_id(str):
#str = str.replace(".", "_") # colons are allowed #str = str.replace(".", "_") # colons are allowed
str = str.replace(" ", "_") for c in " -+~;":
str = str.replace("-", "_") str = str.replace(c, "_")
if str[0] in string.digits: if str[0] in (string.digits + "."):
str = "_"+str str = "_" + str
assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str assert re.match("^[A-Za-z_][A-Za-z0-9_.]*$", str), "FILE"+str
return str return str
@ -285,19 +285,28 @@ class Directory:
[(feature.id, component)]) [(feature.id, component)])
def make_short(self, file): def make_short(self, file):
oldfile = file
file = file.replace('+', '_')
file = ''.join(c for c in file if not c in ' "/\[]:;=,')
parts = file.split(".") parts = file.split(".")
if len(parts)>1: if len(parts) > 1:
prefix = "".join(parts[:-1]).upper()
suffix = parts[-1].upper() suffix = parts[-1].upper()
if not prefix:
prefix = suffix
suffix = None
else: else:
prefix = file.upper()
suffix = None suffix = None
prefix = parts[0].upper() if len(parts) < 3 and len(prefix) <= 8 and file == oldfile and (
if len(prefix) <= 8 and (not suffix or len(suffix)<=3): not suffix or len(suffix) <= 3):
if suffix: if suffix:
file = prefix+"."+suffix file = prefix+"."+suffix
else: else:
file = prefix file = prefix
assert file not in self.short_names
else: else:
file = None
if file is None or file in self.short_names:
prefix = prefix[:6] prefix = prefix[:6]
if suffix: if suffix:
suffix = suffix[:3] suffix = suffix[:3]

View File

@ -51,6 +51,8 @@ Core and Builtins
Library Library
------- -------
- Issue #7639: Fix short file name generation in bdist_msi.
- Issue #11666: let help() display named tuple attributes and methods - Issue #11666: let help() display named tuple attributes and methods
that start with a leading underscore. that start with a leading underscore.