Home | History | Annotate | only in /external/python/cpython2/Mac/BuildScript
Up to higher level directory
NameDateSize
build-installer.py21-Aug-201860.2K
issue19373_tk_8_5_15_source.patch21-Aug-2018548
openssl_sdk_makedepend.patch21-Aug-20184.9K
README.txt21-Aug-20187.7K
resources/21-Aug-2018
scripts/21-Aug-2018
seticon.m21-Aug-2018598

README.txt

      1 Building a Python Mac OS X distribution
      2 =======================================
      3 
      4 The ``build-install.py`` script creates Python distributions, including
      5 certain third-party libraries as necessary.  It builds a complete 
      6 framework-based Python out-of-tree, installs it in a funny place with 
      7 $DESTROOT, massages that installation to remove .pyc files and such, creates 
      8 an Installer package from the installation plus other files in ``resources`` 
      9 and ``scripts`` and placed that on a ``.dmg`` disk image.
     10 
     11 This installers built by this script are legacy bundle installers that have
     12 been supported from the early days of OS X.  In particular, they are supported
     13 on OS X 10.3.9, the earliest supported release for builds from this script.
     14 
     15 Beginning with Python 2.7.9, PSF practice is to build two installer variants
     16 using the newer flat package format, supported on 10.5+, and signed with the
     17 builder's Apple developer key, allowing downloaded packages to satisfy Apple's
     18 default Gatekeeper policy (e.g. starting with 10.8, Apple store downloads and
     19 Apple developer ID signed apps and installer packages).  The process for
     20 transforming the output build artifacts into signed flat packages is not
     21 yet integrated into ``build-installer.py``.
     22 
     23 1.  32-bit-only, i386 and PPC universal, capable on running on all machines
     24     supported by Mac OS X 10.5 through (at least) 10.10::
     25 
     26         /usr/bin/python  build-installer.py \
     27             --sdk-path=/Developer/SDKs/MacOSX10.5.sdk \
     28             --universal-archs=32-bit \
     29             --dep-target=10.5
     30 
     31     - builds the following third-party libraries
     32 
     33         * libcrypto and libssl from OpenSSL 1.0.1
     34         * NCurses 5.9
     35         * SQLite 3.7.13
     36         * Oracle Sleepycat DB 4.8 (Python 2.x only)
     37 
     38     - uses system-supplied versions of third-party libraries
     39 
     40         * readline module links with Apple BSD editline (libedit)
     41 
     42     - requires ActiveState ``Tcl/Tk 8.4`` (currently 8.4.20) to be installed for building
     43 
     44     - recommended build environment:
     45 
     46         * Mac OS X 10.5.8 Intel or PPC
     47         * Xcode 3.1.4
     48         * ``MacOSX10.5`` SDK
     49         * ``MACOSX_DEPLOYMENT_TARGET=10.5``
     50         * Apple ``gcc-4.2``
     51         * bootstrap non-framework Python 2.7 for documentation build with
     52           Sphinx (as of 2.7.9)
     53 
     54     - alternate build environments:
     55 
     56         * Mac OS X 10.6.8 with Xcode 3.2.6
     57             - need to change ``/System/Library/Frameworks/{Tcl,Tk}.framework/Version/Current`` to ``8.4``
     58         * Note Xcode 4.* does not support building for PPC so cannot be used for this build
     59 
     60 2.  64-bit / 32-bit, x86_64 and i386 universal, for OS X 10.6 (and later)::
     61 
     62         /usr/bin/python build-installer.py \
     63             --sdk-path=/Developer/SDKs/MacOSX10.6.sdk \
     64             --universal-archs=intel \
     65             --dep-target=10.6
     66 
     67     - builds the following third-party libraries
     68 
     69         * NCurses 5.9 (http://bugs.python.org/issue15037)
     70         * SQLite 3.7.13
     71         * Oracle Sleepycat DB 4.8 (Python 2.x only)
     72 
     73     - uses system-supplied versions of third-party libraries
     74 
     75         * libcrypto and libssl from Apple OpenSSL 0.9.8
     76         * readline module links with Apple BSD editline (libedit)
     77 
     78     - requires ActiveState Tcl/Tk 8.5.15 (or later) to be installed for building
     79 
     80     - recommended build environment:
     81 
     82         * Mac OS X 10.6.8 (or later)
     83         * Xcode 3.2.6
     84         * ``MacOSX10.6`` SDK
     85         * ``MACOSX_DEPLOYMENT_TARGET=10.6``
     86         * Apple ``gcc-4.2``
     87         * bootstrap non-framework Python 2.7 for documentation build with
     88           Sphinx (as of 2.7.9)
     89 
     90     - alternate build environments:
     91 
     92         * none.  Xcode 4.x currently supplies two C compilers.
     93           ``llvm-gcc-4.2.1`` has been found to miscompile Python 3.3.x and
     94           produce a non-functional Python executable.  As it appears to be
     95           considered a migration aid by Apple and is not likely to be fixed,
     96           its use should be avoided.  The other compiler, ``clang``, has been
     97           undergoing rapid development.  While it appears to have become
     98           production-ready in the most recent Xcode 5 releases, the versions
     99           available on the deprecated Xcode 4.x for 10.6 were early releases
    100           and did not receive the level of exposure in production environments
    101           that the Xcode 3 gcc-4.2 compiler has had.
    102 
    103 
    104 General Prerequisites
    105 ---------------------
    106 
    107 * No Fink (in ``/sw``) or MacPorts (in ``/opt/local``) or other local
    108   libraries or utilities (in ``/usr/local``) as they could
    109   interfere with the build.
    110 
    111 * The documentation for the release is built using Sphinx
    112   because it is included in the installer.  For 2.7.x up to and including
    113   2.7.8, the ``Doc/Makefile`` used ``svn`` to download repos of
    114   ``Sphinx`` and its dependencies.  Beginning with 2.7.9, the ``Doc/Makefile``
    115   assumes there is an externally-provided ``sphinx-build`` and requires at
    116   least Python 2.6 to run.  Because of this, it is no longer possible to
    117   build a 2.7.9 or later installer on OS X 10.5 using the Apple-supplied
    118   Python 2.5.
    119 
    120 * It is safest to start each variant build with an empty source directory
    121   populated with a fresh copy of the untarred source.
    122 
    123 * It is recommended that you remove any existing installed version of the
    124   Python being built::
    125 
    126       sudo rm -rf /Library/Frameworks/Python.framework/Versions/n.n
    127 
    128 
    129 The Recipe
    130 ----------
    131 
    132 Here are the steps you need to follow to build a Python installer:
    133 
    134 * Run ``build-installer.py``. Optionally you can pass a number of arguments
    135   to specify locations of various files. Please see the top of
    136   ``build-installer.py`` for its usage.
    137 
    138   Running this script takes some time, it will not only build Python itself
    139   but also some 3rd-party libraries that are needed for extensions.
    140 
    141 * When done the script will tell you where the DMG image is (by default
    142   somewhere in ``/tmp/_py``).
    143 
    144 Building other universal installers
    145 ...................................
    146 
    147 It is also possible to build a 4-way universal installer that runs on 
    148 OS X 10.5 Leopard or later::
    149 
    150     /usr/bin/python /build-installer.py \
    151         --dep-target=10.5
    152         --universal-archs=all
    153         --sdk-path=/Developer/SDKs/MacOSX10.5.sdk
    154 
    155 This requires that the deployment target is 10.5, and hence
    156 also that you are building on at least OS X 10.5.  4-way includes
    157 ``i386``, ``x86_64``, ``ppc``, and ``ppc64`` (G5).  ``ppc64`` executable
    158 variants can only be run on G5 machines running 10.5.  Note that,
    159 while OS X 10.6 is only supported on Intel-based machines, it is possible
    160 to run ``ppc`` (32-bit) executables unmodified thanks to the Rosetta ppc
    161 emulation in OS X 10.5 and 10.6.  The 4-way installer variant must be
    162 built with Xcode 3.  It is not regularly built or tested.
    163 
    164 Other ``--universal-archs`` options are ``64-bit`` (``x86_64``, ``ppc64``),
    165 and ``3-way`` (``ppc``, ``i386``, ``x86_64``).  None of these options
    166 are regularly exercised; use at your own risk.
    167 
    168 
    169 Testing
    170 -------
    171 
    172 Ideally, the resulting binaries should be installed and the test suite run
    173 on all supported OS X releases and architectures.  As a practical matter,
    174 that is generally not possible.  At a minimum, variant 1 should be run on
    175 a PPC G4 system with OS X 10.5 and at least one Intel system running OS X
    176 10.8, 10.7, 10.6, or 10.5.  Variant 2 should be run on 10.8, 10.7, and 10.6
    177 systems in both 32-bit and 64-bit modes.::
    178 
    179     /usr/local/bin/pythonn.n -m test -w -u all,-largefile
    180     /usr/local/bin/pythonn.n-32 -m test -w -u all
    181     
    182 Certain tests will be skipped and some cause the interpreter to fail
    183 which will likely generate ``Python quit unexpectedly`` alert messages
    184 to be generated at several points during a test run.  These are normal
    185 during testing and can be ignored.
    186 
    187 It is also recommend to launch IDLE and verify that it is at least
    188 functional.  Double-click on the IDLE app icon in ``/Applications/Pythonn.n``.
    189 It should also be tested from the command line::
    190 
    191     /usr/local/bin/idlen.n
    192 
    193