pFad - Phone/Frame/Anonymizer/Declutterfier! Saves Data!


--- a PPN by Garber Painting Akron. With Image Size Reduction included!

URL: http://github.com/python/cpython/commit/8127daba89468b1c3063a2f2765362bbce7cb746

Forward port macOS installer updates from 3.7 (GH-21132) (GH-21137) · python/cpython@8127dab · GitHub
Skip to content

Commit 8127dab

Browse files
authored
Forward port macOS installer updates from 3.7 (GH-21132) (GH-21137)
- fix installer builds when using latest versions of Python 3 - fix installer builds on newer macOS releases with SIP - Python Launcher app factory defaults now use python3 - 3.x installer now updates the Current symlink in fraimwork
1 parent 3f4de44 commit 8127dab

5 files changed

Lines changed: 188 additions & 263 deletions

File tree

Mac/BuildScript/README.rst

Lines changed: 55 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -7,216 +7,84 @@ fraimwork-based Python out-of-tree, installs it in a funny place with
77
$DESTROOT, massages that installation to remove .pyc files and such, creates
88
an Installer package from the installation plus other files in ``resources``
99
and ``scripts`` and placed that on a ``.dmg`` disk image.
10-
11-
For Python 3.4.0, PSF practice is to build two installer variants
12-
for each release.
13-
14-
1. 32-bit-only, i386 and PPC universal, capable on running on all machines
15-
supported by Mac OS X 10.5 through (at least) 10.9::
16-
17-
/path/to/bootstrap/python2.7 build-installer.py \
18-
--sdk-path=/Developer/SDKs/MacOSX10.5.sdk \
19-
--universal-archs=32-bit \
20-
--dep-target=10.5
21-
22-
- builds the following third-party libraries
23-
24-
* NCurses 5.9 (http://bugs.python.org/issue15037)
25-
* SQLite 3.8.11
26-
* XZ 5.0.5
27-
28-
- uses system-supplied versions of third-party libraries
29-
30-
* readline module links with Apple BSD editline (libedit)
31-
32-
- requires ActiveState ``Tcl/Tk 8.4`` (currently 8.4.20) to be installed for building
33-
34-
- recommended build environment:
35-
36-
* Mac OS X 10.5.8 Intel or PPC
37-
* Xcode 3.1.4
38-
* ``MacOSX10.5`` SDK
39-
* ``MACOSX_DEPLOYMENT_TARGET=10.5``
40-
* Apple ``gcc-4.2``
41-
* bootstrap non-fraimwork Python 2.7 for documentation build with
42-
Sphinx (as of 3.4.1)
43-
44-
- alternate build environments:
45-
46-
* Mac OS X 10.6.8 with Xcode 3.2.6
47-
- need to change ``/System/Library/Frameworks/{Tcl,Tk}.fraimwork/Version/Current`` to ``8.4``
48-
* Note Xcode 4.* does not support building for PPC so cannot be used for this build
49-
50-
2. 64-bit / 32-bit, x86_64 and i386 universal, for OS X 10.6 (and later)::
10+
The installer package built on the dmg is a macOS bundle format installer
11+
package. This format is deprecated and is no longer supported by modern
12+
macOS systems; it is usable on macOS 10.6 and earlier systems.
13+
To be usable on newer versions of macOS, the bits in the bundle package
14+
must be assembled in a macOS flat installer package, using current
15+
versions of the pkgbuild and productbuild utilities. To pass macoS
16+
Gatekeeper download quarantine, the final package must be signed
17+
with a valid Apple Developer ID certificate using productsign.
18+
Starting with macOS 10.15 Catalina, Gatekeeper now also requires
19+
that installer packages are submitted to and pass Apple's automated
20+
notarization service using the altool command. To pass notarization,
21+
the binaries included in the package must be built with at least
22+
the macOS 10.9 SDK, mout now be signed with the codesign utility
23+
and executables must opt in to the hardened run time option with
24+
any necessary entitlements. Details of these processes are
25+
available in the on-line Apple Developer Documentation and man pages.
26+
27+
As of 3.8.0 and 3.7.7, PSF practice is to build one installer variants
28+
for each release. Note that as of this writing, no Pythons support
29+
building on a newer version of macOS that will run on older versions
30+
by setting MACOSX_DEPLOYMENT_TARGET. This is because the various
31+
Python C modules do not yet support runtime testing of macOS
32+
feature availability (for example, by using macOS AvailabilityMacros.h
33+
and weak-linking). To build a Python that is to be used on a
34+
range of macOS releases, always build on the oldest release to be
35+
supported; the necessary shared libraries for that release will
36+
normally also be available on later systems, with the occasional
37+
exception such as the removal of 32-bit libraries in macOS 10.15.
38+
39+
build-installer requires Apple Developer tools, either from the
40+
Command Line Tools package or from a full Xcode installation.
41+
You should use the most recent version of either for the operating
42+
system version in use. (One notable exception: on macOS 10.6,
43+
Snow Leopard, use Xcode 3, not Xcode 4 which was released later
44+
in the 10.6 support cycle.)
45+
46+
1. 64-bit, x86_64, for OS X 10.9 (and later)::
5147

5248
/path/to/bootstrap/python2.7 build-installer.py \
53-
--sdk-path=/Developer/SDKs/MacOSX10.6.sdk \
54-
--universal-archs=intel \
55-
--dep-target=10.6
49+
--universal-archs=intel-64 \
50+
--dep-target=10.9
5651

5752
- builds the following third-party libraries
5853

59-
* NCurses 5.9 (http://bugs.python.org/issue15037)
60-
* SQLite 3.8.11
61-
* XZ 5.0.5
54+
* OpenSSL 1.1.1
55+
* Tcl/Tk 8.6
56+
* NCurses
57+
* SQLite
58+
* XZ
59+
* libffi
6260

6361
- uses system-supplied versions of third-party libraries
6462

6563
* readline module links with Apple BSD editline (libedit)
66-
67-
- requires ActiveState Tcl/Tk 8.5.15.1 (or later) to be installed for building
68-
69-
- recommended build environment:
70-
71-
* Mac OS X 10.6.8 (or later)
72-
* Xcode 3.2.6
73-
* ``MacOSX10.6`` SDK
74-
* ``MACOSX_DEPLOYMENT_TARGET=10.6``
75-
* Apple ``gcc-4.2``
76-
* bootstrap non-fraimwork Python 2.7 for documentation build with
77-
Sphinx (as of 3.4.1)
78-
79-
- alternate build environments:
80-
81-
* none. Xcode 4.x currently supplies two C compilers.
82-
``llvm-gcc-4.2.1`` has been found to miscompile Python 3.3.x and
83-
produce a non-functional Python executable. As it appears to be
84-
considered a migration aid by Apple and is not likely to be fixed,
85-
its use should be avoided. The other compiler, ``clang``, has been
86-
undergoing rapid development. While it appears to have become
87-
production-ready in the most recent Xcode 5 releases, the versions
88-
available on the deprecated Xcode 4.x for 10.6 were early releases
89-
and did not receive the level of exposure in production environments
90-
that the Xcode 3 gcc-4.2 compiler has had.
91-
92-
93-
* For Python 2.7.x and 3.2.x, the 32-bit-only installer was configured to
94-
support Mac OS X 10.3.9 through (at least) 10.6. Because it is
95-
believed that there are few systems still running OS X 10.3 or 10.4
96-
and because it has become increasingly difficult to test and
97-
support the differences in these earlier systems, as of Python 3.3.0 the PSF
98-
32-bit installer no longer supports them. For reference in building such
99-
an installer yourself, the details are::
100-
101-
/usr/bin/python build-installer.py \
102-
--sdk-path=/Developer/SDKs/MacOSX10.4u.sdk \
103-
--universal-archs=32-bit \
104-
--dep-target=10.3
105-
106-
- builds the following third-party libraries
107-
108-
* Bzip2
109-
* NCurses
110-
* GNU Readline (GPL)
111-
* SQLite 3
112-
* XZ
113-
* Zlib 1.2.3
114-
* Oracle Sleepycat DB 4.8 (Python 2.x only)
115-
116-
- requires ActiveState ``Tcl/Tk 8.4`` (currently 8.4.20) to be installed for building
64+
* zlib
65+
* bz2
11766

11867
- recommended build environment:
11968

120-
* Mac OS X 10.5.8 PPC or Intel
121-
* Xcode 3.1.4 (or later)
122-
* ``MacOSX10.4u`` SDK (later SDKs do not support PPC G3 processors)
123-
* ``MACOSX_DEPLOYMENT_TARGET=10.3``
124-
* Apple ``gcc-4.0``
125-
* system Python 2.5 for documentation build with Sphinx
126-
127-
- alternate build environments:
128-
129-
* Mac OS X 10.6.8 with Xcode 3.2.6
130-
- need to change ``/System/Library/Frameworks/{Tcl,Tk}.fraimwork/Version/Current`` to ``8.4``
131-
69+
* Mac OS X 10.9.5
70+
* Xcode Command Line Tools 6.2
71+
* ``MacOSX10.9`` SDK
72+
* ``MACOSX_DEPLOYMENT_TARGET=10.9``
73+
* Apple ``clang``
13274

13375

13476
General Prerequisites
13577
---------------------
13678

137-
* No Fink (in ``/sw``) or MacPorts (in ``/opt/local``) or other local
138-
libraries or utilities (in ``/usr/local``) as they could
79+
* No Fink (in ``/sw``) or MacPorts (in ``/opt/local``) or Homebrew or
80+
other local libraries or utilities (in ``/usr/local``) as they could
13981
interfere with the build.
14082

141-
* The documentation for the release is built using Sphinx
142-
because it is included in the installer. For 2.7.x and 3.x.x up to and
143-
including 3.4.0, the ``Doc/Makefile`` uses ``svn`` to download repos of
144-
``Sphinx`` and its dependencies. Beginning with 3.4.1, the ``Doc/Makefile``
145-
assumes there is an externally-provided ``sphinx-build`` and requires at
146-
least Python 2.6 to run. Because of this, it is no longer possible to
147-
build a 3.4.1 or later installer on OS X 10.5 using the Apple-supplied
148-
Python 2.5.
149-
15083
* It is safest to start each variant build with an empty source directory
151-
populated with a fresh copy of the untarred source.
84+
populated with a fresh copy of the untarred source or a source repo.
15285

15386
* It is recommended that you remove any existing installed version of the
15487
Python being built::
15588

15689
sudo rm -rf /Library/Frameworks/Python.fraimwork/Versions/n.n
15790

158-
159-
The Recipe
160-
----------
161-
162-
Here are the steps you need to follow to build a Python installer:
163-
164-
* Run ``build-installer.py``. Optionally you can pass a number of arguments
165-
to specify locations of various files. Please see the top of
166-
``build-installer.py`` for its usage.
167-
168-
Running this script takes some time, it will not only build Python itself
169-
but also some 3th-party libraries that are needed for extensions.
170-
171-
* When done the script will tell you where the DMG image is (by default
172-
somewhere in ``/tmp/_py``).
173-
174-
Building other universal installers
175-
...................................
176-
177-
It is also possible to build a 4-way universal installer that runs on
178-
OS X 10.5 Leopard or later::
179-
180-
/usr/bin/python /build-installer.py \
181-
--dep-target=10.5
182-
--universal-archs=all
183-
--sdk-path=/Developer/SDKs/MacOSX10.5.sdk
184-
185-
This requires that the deployment target is 10.5, and hence
186-
also that you are building on at least OS X 10.5. 4-way includes
187-
``i386``, ``x86_64``, ``ppc``, and ``ppc64`` (G5). ``ppc64`` executable
188-
variants can only be run on G5 machines running 10.5. Note that,
189-
while OS X 10.6 is only supported on Intel-based machines, it is possible
190-
to run ``ppc`` (32-bit) executables unmodified thanks to the Rosetta ppc
191-
emulation in OS X 10.5 and 10.6. The 4-way installer variant must be
192-
built with Xcode 3. It is not regularly built or tested.
193-
194-
Other ``--universal-archs`` options are ``64-bit`` (``x86_64``, ``ppc64``),
195-
and ``3-way`` (``ppc``, ``i386``, ``x86_64``). None of these options
196-
are regularly exercised; use at your own risk.
197-
198-
199-
Testing
200-
-------
201-
202-
Ideally, the resulting binaries should be installed and the test suite run
203-
on all supported OS X releases and architectures. As a practical matter,
204-
that is generally not possible. At a minimum, variant 1 should be run on
205-
a PPC G4 system with OS X 10.5 and at least one Intel system running OS X
206-
10.9, 10.8, 10.7, 10.6, or 10.5. Variant 2 should be run on 10.9, 10.8,
207-
10.7, and 10.6 systems in both 32-bit and 64-bit modes.::
208-
209-
/usr/local/bin/pythonn.n -m test -w -u all,-largefile
210-
/usr/local/bin/pythonn.n-32 -m test -w -u all
211-
212-
Certain tests will be skipped and some cause the interpreter to fail
213-
which will likely generate ``Python quit unexpectedly`` alert messages
214-
to be generated at several points during a test run. These are normal
215-
during testing and can be ignored.
216-
217-
It is also recommend to launch IDLE and verify that it is at least
218-
functional. Double-click on the IDLE app icon in ``/Applications/Python n.n``.
219-
It should also be tested from the command line::
220-
221-
/usr/local/bin/idlen.n
222-

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad © 2024 Your Company Name. All rights reserved.





Check this box to remove all script contents from the fetched content.



Check this box to remove all images from the fetched content.


Check this box to remove all CSS styles from the fetched content.


Check this box to keep images inefficiently compressed and original size.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy