From 144de3152d04a6fab92c1e998d5e6d720fad774a Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Fri, 12 Sep 2014 11:48:13 -0700 Subject: [PATCH] #22398 Tools/msi enhancements for 2.7 Fix build_tkinter.py. Update msi.py to use environment vars and correct tcl/tk paths. Update msilib.py to generate short names for files with multiple dots in the name. --- PCbuild/build_tkinter.py | 2 +- Tools/msi/msi.py | 14 +++++++------- Tools/msi/msilib.py | 7 +------ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/PCbuild/build_tkinter.py b/PCbuild/build_tkinter.py index 2d5797f38dc..1241864ce99 100644 --- a/PCbuild/build_tkinter.py +++ b/PCbuild/build_tkinter.py @@ -23,7 +23,7 @@ NMAKE = ('nmake /nologo /f %s ' '%s %s') def nmake(makefile, command="", **kw): - defines = ' '.join(k+'='+v for k, v in kw.items()) + defines = ' '.join('%s=%s' % i for i in kw.items()) cmd = NMAKE % (makefile, defines, command) print("\n\n"+cmd+"\n") if os.system(cmd) != 0: diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py index fb57a43fcfc..ec6d3a2fe96 100644 --- a/Tools/msi/msi.py +++ b/Tools/msi/msi.py @@ -13,7 +13,7 @@ import tempfile # 0 for official python.org releases # 1 for intermediate releases by anybody, with # a new product code for every package. -snapshot = 1 +snapshot = int(os.environ.get("SNAPSHOT", "1")) # 1 means that file extension is px, not py, # and binaries start with x testpackage = 0 @@ -22,15 +22,15 @@ srcdir = os.path.abspath("../..") # Text to be displayed as the version in dialogs etc. # goes into file name and ProductCode. Defaults to # current_version.day for Snapshot, current_version otherwise -full_current_version = None +full_current_version = os.environ.get("CURRENT_VERSION") # Is Tcl available at all? have_tcl = True # path to PCbuild directory -PCBUILD="PCbuild" +PCBUILD=os.environ.get("PCBUILD", "PCbuild") # msvcrt version MSVCR = "90" # Name of certificate in default store to sign MSI with -certname = None +certname = os.environ.get("CERTNAME", None) # Make a zip file containing the PDB files for this build? pdbzip = True @@ -894,8 +894,8 @@ def generate_license(): for name, pat, file in (("bzip2","bzip2-*", "LICENSE"), ("Berkeley DB", "db-*", "LICENSE"), ("openssl", "openssl-*", "LICENSE"), - ("Tcl", "tcl8*", "license.terms"), - ("Tk", "tk8*", "license.terms"), + ("Tcl", "tcl-8*", "license.terms"), + ("Tk", "tk-8*", "license.terms"), ("Tix", "tix-*", "license.terms")): out.write("\nThis copy of Python includes a copy of %s, which is licensed under the following terms:\n\n" % name) dirs = glob.glob(srcdir+"/../"+pat) @@ -946,7 +946,7 @@ def add_files(db): if not snapshot: # For releases, the Python DLL has the same version as the # installer package. - assert pyversion.split(".")[:3] == current_version.split(".") + assert pyversion.split(".")[:3] == current_version.split("."), "%s != %s" % (pyversion, current_version) dlldir.add_file("%s/python%s%s.dll" % (PCBUILD, major, minor), version=pyversion, language=installer.FileVersion(pydllsrc, 1)) diff --git a/Tools/msi/msilib.py b/Tools/msi/msilib.py index 760471c37b2..223535ff814 100644 --- a/Tools/msi/msilib.py +++ b/Tools/msi/msilib.py @@ -484,12 +484,7 @@ class Directory: def make_short(self, file): file = re.sub(r'[\?|><:/*"+,;=\[\]]', '_', file) # restrictions on short names - parts = file.split(".") - if len(parts)>1: - suffix = parts[-1].upper() - else: - suffix = None - prefix = parts[0].upper() + prefix, _, suffix = file.upper().rpartition(".") if len(prefix) <= 8 and (not suffix or len(suffix)<=3): if suffix: file = prefix+"."+suffix