classification
Title: Clean up OS X framework and universal bin directories
Type: Stage: resolved
Components: Build, macOS Versions: Python 3.4
process
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: ned.deily Nosy List: ned.deily, python-dev, ronaldoussoren
Priority: normal Keywords: patch

Created on 2013-11-19 07:44 by ned.deily, last changed 2013-11-22 07:44 by ned.deily. This issue is now closed.

Files
File name Uploaded Description Edit
issue19649_bin_install_targets.patch ned.deily, 2013-11-19 07:50 review
Messages (2)
msg203342 - (view) Author: Ned Deily (ned.deily) * (Python committer) Date: 2013-11-19 07:44
There are currently various differences in the files installed by "make altinstall" and "make install" for OS X framework (./configure --enable-framework) and/or OS X universal (--with-universal-archs) configurations.  Some of the differences are cosmetic; some are just wrong (e.g. broken symlinks).  This issue proposes to fix the differences such that the same set of file names will be installed to the $exec_prefix/bin directory for non-framework ("unix" or "shared") configures, and to the framework bin and unixtools directories for framework configurations.  The current standard altinstall and install non-framework configurations are the baselines.

For framework configurations:

- "make altinstall" creates a complete set of symlinks in the unixtools directory ($prefix/bin, default /usr/local/bin) to each file/link installed to the framework bin directory. (fixed)

- "make install" creates symlinks to the additional (unversioned) files/links created in the framework bin directory. (fixed)

- The obsolete and undocumented pythonw* symlinks will no longer be installed anywhere.  Currently, these are all linked to or copies of their python* counterparts; there is no difference in behavior between them on OS X and hasn't been for many years and releases.  (Note, these are not to be confused with the unchanged "pythonw.c" executable which is what is executed to "boostrap" from the command line into the Python app bundle within a framework install.)

- pythonX.Ym will be fixed to be replaced by a link to "python.c" executable; currently it is a copy of the python interpreter. (bug)

For OS X universal non-framework build configurations with a combination of 32-bit and 64-bit architectures, "make altinstall" will now additionally install a 32-bit-only Python executable as pythonX.Y-32, like the universal framework configurations currently do (new).  (Actually, the framework build installs a 32-bit-only "pythonw.c" bootstrap executable ... but that's not important now).  This ensures that users have a consistent and reliable way to invoke universal 64-/32-bit Pythons in 32-bit mode.

FTR, using "arch -i386 python3" is not reliable in that any subprocesses created by the interpreter will revert to the system's default mode which is 64-bit (where possible) for 10.6+.  With "python3-32", 32-bit mode is maintained in subprocesses if sys.executable is used to supply the interpreter name for the subprocess, as of Python 3.3+.

For reference, here are current 3.3 bin layouts: left side is the baseline, right side indicates variances from the baseline with "X.Y" and "X" referring to the Python version ("3.4" and "3"), "(..)" indicating a missing file, directory, or Makefile target, and "m" referring to the PEP 3149 ABI identifier:

=================   =========================
install             framework install
    altinstall          framework altinstall
=================   =========================
2to3
    2to3-X.Y

idleX
    idleX.Y

pydocX
    pydocX.Y

pythonX             pythonwX
    pythonX.Y           pythonX,pythonwX.Y
    pythonX.Ym

pythonX-config
pythonX.Y-config
    pythonX.Ym-config

pyvenv
    pyvenv-X.Y
-----------------   -------------------------
(for universal builds)
                    pythonX.Y-32,pythonX-32,
                    pythonwX.Y-32,pythonwX-32
=================   =========================


=================   =========================
install             (framework unixtools)
    altinstall          framework altunixtools
=================   =========================
2to3
    2to3-X.Y

idleX
    idleX.Y

pydocX
    pydocX.Y

pythonX             pythonwX
    pythonX.Y           pythonwX.Y
    pythonX.Ym          (pythonX.Ym)

pythonX-config
pythonX.Y-config
    pythonX.Ym-config   (pythonX.Ym-config)

pyvenv
    pyvenv-X.Y
-----------------   -------------------------
(for universal builds)
                    pythonX.Y-32,pythonX-32,
                    pythonwX.Y-32,pythonwX-32
=================   =========================



Proposed for 3.4 - for non-framework, framework bin, and framework unixtools directories:

=================
install          
    altinstall   
=================
2to3
    2to3-X.Y

idleX
    idleX.Y

pydocX
    pydocX.Y

pythonX
    pythonX.Y
    pythonX.Ym

pythonX-config
pythonX.Y-config
    pythonX.Ym-config

pyvenv
    pyvenv-X.Y
-----------------
(for universal builds) 
pythonX-32
    pythonX.Y-32
=================
msg203724 - (view) Author: Roundup Robot (python-dev) Date: 2013-11-22 07:03
New changeset 44d1ac9245cf by Ned Deily in branch 'default':
Issue #19649: On OS X, the same set of file names are now installed
http://hg.python.org/cpython/rev/44d1ac9245cf
History
Date User Action Args
2013-11-22 07:44:33ned.deilysetstatus: open -> closed
resolution: fixed
stage: patch review -> resolved
2013-11-22 07:03:14python-devsetnosy: + python-dev
messages: + msg203724
2013-11-19 07:50:33ned.deilysetfiles: + issue19649_bin_install_targets.patch
keywords: + patch
2013-11-19 07:44:40ned.deilycreate