[Python-checkins] cpython (2.7): #22398 Tools/msi enhancements for 2.7

steve.dower python-checkins at python.org
Fri Sep 12 22:19:01 CEST 2014


http://hg.python.org/cpython/rev/5c55a7bfec0c
changeset:   92411:5c55a7bfec0c
branch:      2.7
parent:      92406:97f1ee2264bb
user:        Steve Dower <steve.dower at microsoft.com>
date:        Fri Sep 12 11:48:13 2014 -0700
summary:
  #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.

files:
  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
--- a/PCbuild/build_tkinter.py
+++ b/PCbuild/build_tkinter.py
@@ -23,7 +23,7 @@
     '%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
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -13,7 +13,7 @@
 # 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 @@
 # 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 @@
     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 @@
     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
--- a/Tools/msi/msilib.py
+++ b/Tools/msi/msilib.py
@@ -484,12 +484,7 @@
 
     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

-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list