Commit 3bf7fb70 authored by Martin v. Löwis's avatar Martin v. Löwis

Fix short file name generation in bdist_msi.

Patch by Christoph Gohlke.
Closes #7639.
parent 908f4ff2
...@@ -174,10 +174,10 @@ def add_tables(db, module): ...@@ -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: ...@@ -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]
......
...@@ -48,6 +48,8 @@ Core and Builtins ...@@ -48,6 +48,8 @@ Core and Builtins
Library Library
------- -------
- Issue #7639: Fix short file name generation in bdist_msi.
- Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459. - Issue #11659: Fix ResourceWarning in test_subprocess introduced by #11459.
Patch by Ben Hayden. Patch by Ben Hayden.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment