classification
Title: Implement PEP 394: The "python" Command on Unix-Like Systems
Type: enhancement Stage: resolved
Components: Installation Versions: Python 3.3, Python 2.7
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ned.deily Nosy List: Kerrick.Staley, benjamin.peterson, eric.araujo, jbicha, loewis, meador.inge, ncoghlan, ned.deily, petri.lehtinen, python-dev
Priority: normal Keywords: patch

Created on 2011-07-24 02:31 by Kerrick.Staley, last changed 2012-02-19 02:03 by ned.deily. This issue is now closed.

Files
File name Uploaded Description Edit
pep394_python27_symlinks.diff ncoghlan, 2012-02-16 12:29 Patch adding python2 as a symlink review
Messages (11)
msg141034 - (view) Author: Kerrick Staley (Kerrick.Staley) Date: 2011-07-24 02:31
This issue was opened to track the implementation of PEP 394, which governs the way the python command and commands like python2 and python3 work on Unix-like systems.
msg141035 - (view) Author: Kerrick Staley (Kerrick.Staley) Date: 2011-07-24 02:39
Here is a patch that will update the Makefile.pre.in file for 2.7, causing it to install python2 and python2-config when run with "make install" (or just "make bininstall"). This does not update any documentation. Also, it appears that Idle and PyDoc are not installed by the 2.7 Makefile, so I didn't do anything about those, even though the PEP mentions them.
msg141036 - (view) Author: Kerrick Staley (Kerrick.Staley) Date: 2011-07-24 02:42
This updates the links created by "make install" or "make bininstall" in Python 3 so that they're in agreement with the recommendations of PEP 394; it's the equivalent of version27_links.patch but is for Python 3.
msg141046 - (view) Author: Éric Araujo (eric.araujo) * (Python committer) Date: 2011-07-24 15:09
Some scripts are installed by setup.py

I’ll find time to read the latest version of the PEP in the coming days.
msg153303 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-02-13 21:06
The 2.7 patch needs to remove an existing python2 link before creating it.
msg153477 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-02-16 12:10
I removed the 3.3 patch, since all the previous version did was change symbolic links to hard links, and the latest round of discussions favoured retaining the symlinks since they're much easier to introspect.

However, it turns out there is still one change needed for 3.3 - updating the current python3 hardlink to make it a symlink instead.
msg153478 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-02-16 12:17
Actually, the Python 3 Makefile.pre.in is currently broken if $(EXE) is ever non-empty - in a few places it uses "$(PYTHON)$(VERSION)$(EXE)" and "$(PYTHON)3$(EXE)".

Those are wrong, because the definition of $(PYTHON) at the top of the file is "python$(EXE)"

Instead, they need to be written as "python$(VERSION)$(EXE)" and "python3$(EXE)"
msg153479 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-02-16 12:29
New patch that aims to create the appropriate symlinks in "make bininstall". I don't currently have a sacrificial VM set up to test it in though.
msg153543 - (view) Author: Nick Coghlan (ncoghlan) * (Python committer) Date: 2012-02-17 13:20
No automatic link, since I neglected to mention the issue number in the checkin messages:

2.7: http://hg.python.org/cpython/rev/a65a71aa9436
3.3: http://hg.python.org/cpython/rev/dc721f28f168

I deliberately *didn't* make the change in 3.2. As the choice of symlink vs hardlink is really more cosmetic than consequential, it didn't feel like an appropriate change to make in a maintenance release without a compelling reason (introducing a *new* link meant we had such a reason for 2.7, but that's not applicable to 3.2).

Handing the issue over to Ned to confirm the OS X framework builds align with the PEP.
msg153664 - (view) Author: Roundup Robot (python-dev) Date: 2012-02-19 01:21
New changeset 499796937b7a by Ned Deily in branch '2.7':
Issue #12627: Implement PEP 394 for OS X framework builds.
http://hg.python.org/cpython/rev/499796937b7a
msg153665 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2012-02-19 02:03
Changeset 499796937b7a implements PEP 394 for OS X framework builds on Python 2.7.  OS X framework builds already created versioned symlinks for all executables and scripts installed in the framework bin directory, of the general form ${cmd} - ${cmd}2.7.  This is all accomplished in some additional targets in Mac/Makefile which are automatically added by configure for framework builds and supersede the standard processing in the main Makefile bininstall and altbininstall targets.  The changes here add the additional hierarchy of ${cmd} -> ${cmd}2 -> ${cmd}2.7.  Per previous practice, all of the links are created in the framework bin directory for both the install and altinstall targets.  This is consistent with the long-standing recommendation to manage multiple framework versions by adding and ordering framework bin directories on $PATH.  Also, per past practice, symlinks to all framework bin entries are created in $prefix/bin (by default, /usr/local/bin) for the install target and only versioned links are created for altinstall, although the use of these links is not recommended for framework builds and their installation is optional with the standard OS X installers.

No changes are needed for 3.2 or 3.3 at this time.  Although the Mac/Makefile targets don't quite create all of the versioned links in $prefix/bin, the installer build script does the right thing by creating symlinks to everything in the fw bin directory.

In many respects, the current situation for framework builds is less than ideal, with duplicated code, vestigial links, and, more importantly, a clumsy and non-transparent method for managing multiple versions.  I intend to revisit this area prior to Python 3.3 feature code cutoff as a separate issue.
History
Date User Action Args
2012-02-19 02:03:17ned.deilysetstatus: open -> closed
resolution: fixed
messages: + msg153665

stage: needs patch -> resolved
2012-02-19 01:21:00python-devsetnosy: + python-dev
messages: + msg153664
2012-02-17 13:20:26ncoghlansetassignee: ned.deily
messages: + msg153543
stage: patch review -> needs patch
2012-02-16 12:29:45ncoghlansetfiles: - version27_links.patch
2012-02-16 12:29:13ncoghlansetfiles: + pep394_python27_symlinks.diff

messages: + msg153479
2012-02-16 12:17:37ncoghlansetmessages: + msg153478
2012-02-16 12:10:31ncoghlansetmessages: + msg153477
2012-02-16 11:54:50ncoghlansetfiles: - version33_links.patch
2012-02-13 21:06:36loewissetnosy: + loewis
messages: + msg153303
2012-02-12 08:51:47ncoghlansetnosy: + benjamin.peterson
2011-11-28 01:38:15meador.ingesetnosy: + meador.inge
2011-11-17 01:42:00ncoghlansetnosy: + ncoghlan
2011-08-03 11:06:33jbichasetnosy: + jbicha
2011-07-24 17:43:34petri.lehtinensetnosy: + petri.lehtinen
2011-07-24 15:09:19eric.araujosetnosy: + eric.araujo
messages: + msg141046
2011-07-24 02:43:18ned.deilysetnosy: + ned.deily

stage: patch review
2011-07-24 02:42:02Kerrick.Staleysetfiles: + version33_links.patch

messages: + msg141036
2011-07-24 02:39:47Kerrick.Staleysetfiles: + version27_links.patch
keywords: + patch
messages: + msg141035
2011-07-24 02:31:35Kerrick.Staleycreate