[Python-checkins] cpython: Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).

martin.v.loewis python-checkins at python.org
Tue Nov 19 17:03:07 CET 2013


http://hg.python.org/cpython/rev/e0c4a5b2b739
changeset:   87269:e0c4a5b2b739
user:        Martin v. Löwis <martin at v.loewis.de>
date:        Tue Nov 19 17:02:36 2013 +0100
summary:
  Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).

files:
  Misc/NEWS        |   2 ++
  Tools/msi/msi.py |  29 ++++++++++++++++++++++++-----
  2 files changed, 26 insertions(+), 5 deletions(-)


diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -293,6 +293,8 @@
 Build
 -----
 
+- Issue #19550: Implement Windows installer changes of PEP 453 (ensurepip).
+
 - Issue #19520: Fix compiler warning in the _sha3 module on 32bit Windows.
 
 - Issue #19356: Avoid using a C variabled named "_self", it's a reserved
diff --git a/Tools/msi/msi.py b/Tools/msi/msi.py
--- a/Tools/msi/msi.py
+++ b/Tools/msi/msi.py
@@ -420,6 +420,8 @@
 
     compileargs = r'-Wi "[TARGETDIR]Lib\compileall.py" -f -x "bad_coding|badsyntax|site-packages|py2_|lib2to3\\tests|venv\\scripts" "[TARGETDIR]Lib"'
     lib2to3args = r'-c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()"'
+    updatepipargs = r'-m ensurepip -U'
+    removepipargs = r'-m ensurepip -r' # does not yet work
     # See "CustomAction Table"
     add_data(db, "CustomAction", [
         # msidbCustomActionTypeFirstSequence + msidbCustomActionTypeTextData + msidbCustomActionTypeProperty
@@ -436,6 +438,9 @@
         ("CompilePyc", 18, "python.exe", compileargs),
         ("CompilePyo", 18, "python.exe", "-O "+compileargs),
         ("CompileGrammar", 18, "python.exe", lib2to3args),
+        # msidbCustomActionTypeInScript (1024); run during actual installation
+        ("UpdatePip", 18+1024, "python.exe", updatepipargs),
+        #("RemovePip", 18, "python.exe", removepipargs),
         ])
 
     # UI Sequences, see "InstallUISequence Table", "Using a Sequence Table"
@@ -462,7 +467,7 @@
 
     # Prepend TARGETDIR to the system path, and remove it on uninstall.
     add_data(db, "Environment",
-             [("PathAddition", "=-*Path", "[TARGETDIR];[~]", "REGISTRY.path")])
+             [("PathAddition", "=-*Path", "[TARGETDIR];[TARGETDIR]Scripts;[~]", "REGISTRY.path")])
 
     # Execute Sequences
     add_data(db, "InstallExecuteSequence",
@@ -472,6 +477,12 @@
              ("SetLauncherDirToWindows", 'LAUNCHERDIR="" and ' + sys32cond, 753),
              ("SetLauncherDirToTarget", 'LAUNCHERDIR="" and not ' + sys32cond, 754),
              ("UpdateEditIDLE", None, 1050),
+             # run command if install state of pip changes to INSTALLSTATE_LOCAL
+             # run after InstallFiles
+             ("UpdatePip", "&pip=3", 4001),
+             # remove pip when state changes to INSTALLSTATE_ABSENT
+             # run before RemoveFiles
+             #("RemovePip", "&pip=2", 3499),
              ("CompilePyc", "COMPILEALL", 6800),
              ("CompilePyo", "COMPILEALL", 6801),
              ("CompileGrammar", "COMPILEALL", 6802),
@@ -751,7 +762,8 @@
     advanced = PyDialog(db, "AdvancedDlg", x, y, w, h, modal, title,
                         "CompilePyc", "Ok", "Ok")
     advanced.title("Advanced Options for [ProductName]")
-    # A radio group with two options: allusers, justme
+
+    # A checkbox whether to build pyc files
     advanced.checkbox("CompilePyc", 135, 60, 230, 50, 3,
                       "COMPILEALL", "Compile .py files to byte code after installation", "Ok")
 
@@ -848,7 +860,8 @@
     # (i.e. additional Python libraries) need to follow the parent feature.
     # Features that have no advertisement trigger (e.g. the test suite)
     # must not support advertisement
-    global default_feature, tcltk, htmlfiles, tools, testsuite, ext_feature, private_crt, prepend_path
+    global default_feature, tcltk, htmlfiles, tools, testsuite
+    global ext_feature, private_crt, prepend_path, update_pip
     default_feature = Feature(db, "DefaultFeature", "Python",
                               "Python Interpreter and Libraries",
                               1, directory = "TARGETDIR")
@@ -870,8 +883,14 @@
     tools = Feature(db, "Tools", "Utility Scripts",
                     "Python utility scripts (Tools/)", 9,
                     parent = default_feature, attributes=2)
+    # pip installation isn't enabled by default until a clean uninstall procedure
+    # becomes possible
+    update_pip = Feature(db, "pip", "pip",
+                    "Install (or upgrade from an earlier version) pip, "
+                    "a tool for installing and managing Python packages.", 11,
+                    parent = default_feature, attributes=2|8, level=2)
     testsuite = Feature(db, "Testsuite", "Test suite",
-                        "Python test suite (Lib/test/)", 11,
+                        "Python test suite (Lib/test/)", 13,
                         parent = default_feature, attributes=2|8)
     # prepend_path is an additional feature which is to be off by default.
     # Since the default level for the above features is 1, this needs to be
@@ -879,7 +898,7 @@
     prepend_path = Feature(db, "PrependPath", "Add python.exe to Path",
                         "Prepend [TARGETDIR] to the system Path variable. "
                         "This allows you to type 'python' into a command "
-                        "prompt without needing the full path.", 13,
+                        "prompt without needing the full path.", 15,
                         parent = default_feature, attributes=2|8,
                         level=2)
 

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


More information about the Python-checkins mailing list