Skip to content

Commit 1931e64

Browse files
authoredJun 25, 2020
Forward port macOS installer updates from 3.7/3.8/3.9 (pythonGH-21132)
1 parent 55939b1 commit 1931e64

File tree

6 files changed

+139
-260
lines changed

6 files changed

+139
-260
lines changed
 

‎Mac/BuildScript/README.rst

Lines changed: 55 additions & 187 deletions
Original file line numberDiff line numberDiff line change
@@ -7,216 +7,84 @@ framework-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-framework 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}.framework/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-framework 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}.framework/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.framework/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-

‎Mac/BuildScript/build-installer.py

Lines changed: 68 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@
22
"""
33
This script is used to build "official" universal installers on macOS.
44
5+
NEW for 3.9.0 and backports:
6+
- 2.7 end-of-life issues:
7+
- Python 3 installs now update the Current version link
8+
in /Library/Frameworks/Python.framework/Versions
9+
- fully support running under Python 3 as well as 2.7
10+
- support building on newer macOS systems with SIP
11+
- fully support building on macOS 10.9+
12+
- support 10.6+ on best effort
13+
- support bypassing docs build by supplying a prebuilt
14+
docs html tarball in the third-party source library,
15+
in the format and filename conventional of those
16+
downloadable from python.org:
17+
python-3.x.y-docs-html.tar.bz2
18+
519
NEW for 3.7.0:
620
- support Intel 64-bit-only () and 32-bit-only installer builds
721
- build and use internal Tcl/Tk 8.6 for 10.6+ builds
@@ -14,28 +28,7 @@
1428
- use generic "gcc" as compiler (CC env var) rather than "gcc-4.2"
1529
1630
TODO:
17-
- support SDKROOT and DEVELOPER_DIR xcrun env variables
18-
- test with 10.5 and 10.4 and determine support status
19-
20-
Please ensure that this script keeps working with Python 2.5, to avoid
21-
bootstrap issues (/usr/bin/python is Python 2.5 on OSX 10.5). Doc builds
22-
use current versions of Sphinx and require a reasonably current python3.
23-
Sphinx and dependencies are installed into a venv using the python3's pip
24-
so will fetch them from PyPI if necessary. Since python3 is now used for
25-
Sphinx, build-installer.py should also be converted to use python3!
26-
27-
For 3.7.0, when building for a 10.6 or higher deployment target,
28-
build-installer builds and links with its own copy of Tcl/Tk 8.6.
29-
Otherwise, it requires an installed third-party version of
30-
Tcl/Tk 8.4 (for OS X 10.4 and 10.5 deployment targets), Tcl/TK 8.5
31-
(for 10.6 or later), or Tcl/TK 8.6 (for 10.9 or later)
32-
installed in /Library/Frameworks. When installed,
33-
the Python built by this script will attempt to dynamically link first to
34-
Tcl and Tk frameworks in /Library/Frameworks if available otherwise fall
35-
back to the ones in /System/Library/Framework. For the build, we recommend
36-
installing the most recent ActiveTcl 8.6. 8.5, or 8.4 version, depending
37-
on the deployment target. The actual version linked to depends on the
38-
path of /Library/Frameworks/{Tcl,Tk}.framework/Versions/Current.
31+
- test building with SDKROOT and DEVELOPER_DIR xcrun env variables
3932
4033
Usage: see USAGE variable in the script.
4134
"""
@@ -56,14 +49,15 @@
5649
INCLUDE_TIMESTAMP = 1
5750
VERBOSE = 1
5851

59-
from plistlib import Plist
52+
RUNNING_ON_PYTHON2 = sys.version_info.major == 2
6053

61-
try:
54+
if RUNNING_ON_PYTHON2:
6255
from plistlib import writePlist
63-
except ImportError:
64-
# We're run using python2.3
65-
def writePlist(plist, path):
66-
plist.write(path)
56+
else:
57+
from plistlib import dump
58+
def writePlist(path, plist):
59+
with open(plist, 'wb') as fp:
60+
dump(path, fp)
6761

6862
def shellQuote(value):
6963
"""
@@ -1096,7 +1090,7 @@ def buildPythonDocs():
10961090
if not os.path.exists(htmlDir):
10971091
# Create virtual environment for docs builds with blurb and sphinx
10981092
runCommand('make venv')
1099-
runCommand('venv/bin/python3 -m pip install -U Sphinx==2.2.0')
1093+
runCommand('venv/bin/python3 -m pip install -U Sphinx==2.3.1')
11001094
runCommand('make html PYTHON=venv/bin/python')
11011095
os.rename(htmlDir, docdir)
11021096
os.chdir(curDir)
@@ -1125,28 +1119,48 @@ def buildPython():
11251119
# Since the extra libs are not in their installed framework location
11261120
# during the build, augment the library path so that the interpreter
11271121
# will find them during its extension import sanity checks.
1128-
os.environ['DYLD_LIBRARY_PATH'] = os.path.join(WORKDIR,
1129-
'libraries', 'usr', 'local', 'lib')
1122+
11301123
print("Running configure...")
11311124
runCommand("%s -C --enable-framework --enable-universalsdk=/ "
11321125
"--with-universal-archs=%s "
11331126
"%s "
11341127
"%s "
11351128
"%s "
11361129
"%s "
1130+
"%s "
11371131
"LDFLAGS='-g -L%s/libraries/usr/local/lib' "
11381132
"CFLAGS='-g -I%s/libraries/usr/local/include' 2>&1"%(
11391133
shellQuote(os.path.join(SRCDIR, 'configure')),
11401134
UNIVERSALARCHS,
11411135
(' ', '--with-computed-gotos ')[PYTHON_3],
11421136
(' ', '--without-ensurepip ')[PYTHON_3],
1137+
(' ', "--with-openssl='%s/libraries/usr/local'"%(
1138+
shellQuote(WORKDIR)[1:-1],))[PYTHON_3],
11431139
(' ', "--with-tcltk-includes='-I%s/libraries/usr/local/include'"%(
11441140
shellQuote(WORKDIR)[1:-1],))[internalTk()],
11451141
(' ', "--with-tcltk-libs='-L%s/libraries/usr/local/lib -ltcl8.6 -ltk8.6'"%(
11461142
shellQuote(WORKDIR)[1:-1],))[internalTk()],
11471143
shellQuote(WORKDIR)[1:-1],
11481144
shellQuote(WORKDIR)[1:-1]))
11491145

1146+
# As of macOS 10.11 with SYSTEM INTEGRITY PROTECTION, DYLD_*
1147+
# environment variables are no longer automatically inherited
1148+
# by child processes from their parents. We used to just set
1149+
# DYLD_LIBRARY_PATH, pointing to the third-party libs,
1150+
# in build-installer.py's process environment and it was
1151+
# passed through the make utility into the environment of
1152+
# setup.py. Instead, we now append DYLD_LIBRARY_PATH to
1153+
# the existing RUNSHARED configuration value when we call
1154+
# make for extension module builds.
1155+
1156+
runshared_for_make = "".join([
1157+
" RUNSHARED=",
1158+
"'",
1159+
grepValue("Makefile", "RUNSHARED"),
1160+
' DYLD_LIBRARY_PATH=',
1161+
os.path.join(WORKDIR, 'libraries', 'usr', 'local', 'lib'),
1162+
"'" ])
1163+
11501164
# Look for environment value BUILDINSTALLER_BUILDPYTHON_MAKE_EXTRAS
11511165
# and, if defined, append its value to the make command. This allows
11521166
# us to pass in version control tags, like GITTAG, to a build from a
@@ -1161,21 +1175,24 @@ def buildPython():
11611175

11621176
make_extras = os.getenv("BUILDINSTALLER_BUILDPYTHON_MAKE_EXTRAS")
11631177
if make_extras:
1164-
make_cmd = "make " + make_extras
1178+
make_cmd = "make " + make_extras + runshared_for_make
11651179
else:
1166-
make_cmd = "make"
1180+
make_cmd = "make" + runshared_for_make
11671181
print("Running " + make_cmd)
11681182
runCommand(make_cmd)
11691183

1170-
print("Running make install")
1171-
runCommand("make install DESTDIR=%s"%(
1172-
shellQuote(rootDir)))
1184+
make_cmd = "make install DESTDIR=%s %s"%(
1185+
shellQuote(rootDir),
1186+
runshared_for_make)
1187+
print("Running " + make_cmd)
1188+
runCommand(make_cmd)
11731189

1174-
print("Running make frameworkinstallextras")
1175-
runCommand("make frameworkinstallextras DESTDIR=%s"%(
1176-
shellQuote(rootDir)))
1190+
make_cmd = "make frameworkinstallextras DESTDIR=%s %s"%(
1191+
shellQuote(rootDir),
1192+
runshared_for_make)
1193+
print("Running " + make_cmd)
1194+
runCommand(make_cmd)
11771195

1178-
del os.environ['DYLD_LIBRARY_PATH']
11791196
print("Copying required shared libraries")
11801197
if os.path.exists(os.path.join(WORKDIR, 'libraries', 'Library')):
11811198
build_lib_dir = os.path.join(
@@ -1304,7 +1321,13 @@ def buildPython():
13041321
data = fp.read()
13051322
fp.close()
13061323
# create build_time_vars dict
1307-
exec(data)
1324+
if RUNNING_ON_PYTHON2:
1325+
exec(data)
1326+
else:
1327+
g_dict = {}
1328+
l_dict = {}
1329+
exec(data, g_dict, l_dict)
1330+
build_time_vars = l_dict['build_time_vars']
13081331
vars = {}
13091332
for k, v in build_time_vars.items():
13101333
if type(v) == type(''):
@@ -1421,7 +1444,7 @@ def packageFromRecipe(targetDir, recipe):
14211444

14221445
vers = getFullVersion()
14231446
major, minor = getVersionMajorMinor()
1424-
pl = Plist(
1447+
pl = dict(
14251448
CFBundleGetInfoString="Python.%s %s"%(pkgname, vers,),
14261449
CFBundleIdentifier='org.python.Python.%s'%(pkgname,),
14271450
CFBundleName='Python.%s'%(pkgname,),
@@ -1443,7 +1466,7 @@ def packageFromRecipe(targetDir, recipe):
14431466
)
14441467
writePlist(pl, os.path.join(packageContents, 'Info.plist'))
14451468

1446-
pl = Plist(
1469+
pl = dict(
14471470
IFPkgDescriptionDescription=readme,
14481471
IFPkgDescriptionTitle=recipe.get('long_name', "Python.%s"%(pkgname,)),
14491472
IFPkgDescriptionVersion=vers,
@@ -1459,7 +1482,7 @@ def makeMpkgPlist(path):
14591482
vers = getFullVersion()
14601483
major, minor = getVersionMajorMinor()
14611484

1462-
pl = Plist(
1485+
pl = dict(
14631486
CFBundleGetInfoString="Python %s"%(vers,),
14641487
CFBundleIdentifier='org.python.Python',
14651488
CFBundleName='Python',
@@ -1512,7 +1535,7 @@ def buildInstaller():
15121535
os.mkdir(rsrcDir)
15131536

15141537
makeMpkgPlist(os.path.join(pkgroot, 'Info.plist'))
1515-
pl = Plist(
1538+
pl = dict(
15161539
IFPkgDescriptionTitle="Python",
15171540
IFPkgDescriptionVersion=getVersion(),
15181541
)

‎Mac/BuildScript/resources/ReadMe.rtf

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
{\rtf1\ansi\ansicpg1252\cocoartf2511
1+
{\rtf1\ansi\ansicpg1252\cocoartf2513
22
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fswiss\fcharset0 Helvetica-Oblique;
33
\f3\fmodern\fcharset0 CourierNewPSMT;}
44
{\colortbl;\red255\green255\blue255;}
@@ -11,7 +11,7 @@
1111
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\partightenfactor0
1212

1313
\f1\b \cf0 NOTE:
14-
\f0\b0 This is an alpha test preview of Python 3.9.0, the next feature release of Python 3. It is not intended for production use.\
14+
\f0\b0 This is an alpha test preview of Python 3.10.0, the next feature release of Python 3. It is not intended for production use.\
1515
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
1616
\cf0 \
1717
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
@@ -56,12 +56,6 @@ Due to new security checks on macOS 10.15 Catalina, when launching IDLE macOS ma
5656
\f0\b0 button to proceed.\
5757
\
5858

59-
\f1\b \ul macOS 10.15 (Catalina) Gatekeeper Requirements [changed in 3.9.0a4]\
60-
61-
\f0\b0 \ulnone \
62-
As of 2020-02-03, Apple has changed how third-party installer packages, like those provided by python.org, are notarized for verification by Gatekeeper and begun enforcing additional requirements such as code signing and use of the hardened runtime. As of 3.9.0a4, python.org installer packages now meet those additional notarization requirements. The necessary changes in packaging should be transparent to your use of Python but, in the unlikely event that you encounter changes in behavior between 3.9.0a4 and earlier 3.9.0 alphas in areas like ctypes, importlib, or mmap, please check bugs.python.org for existing reports and, if necessary, open a new issue.\
63-
\
64-
6559
\f1\b \ul Other changes\
6660
6761
\f0\b0 \ulnone \

‎Mac/BuildScript/resources/Welcome.rtf

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
{\rtf1\ansi\ansicpg1252\cocoartf1671\cocoasubrtf600
2-
\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fmodern\fcharset0 CourierNewPSMT;
1+
{\rtf1\ansi\ansicpg1252\cocoartf2513
2+
\cocoascreenfonts1\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fswiss\fcharset0 Helvetica-Bold;\f2\fmodern\fcharset0 CourierNewPSMT;
33
}
44
{\colortbl;\red255\green255\blue255;}
55
{\*\expandedcolortbl;;}
@@ -26,5 +26,5 @@ At the end of this install, click on
2626
\
2727

2828
\f1\b NOTE:
29-
\f0\b0 This is an alpha test preview of Python 3.9.0, the next feature release of Python 3. It is not intended for production use.\
29+
\f0\b0 This is an alpha test preview of Python 3.10.0, the next feature release of Python 3. It is not intended for production use.\
3030
}

‎Mac/PythonLauncher/factorySettings.plist

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
<false/>
1111
<key>interpreter_list</key>
1212
<array>
13-
<string>/usr/local/bin/pythonw</string>
14-
<string>/usr/bin/pythonw</string>
15-
<string>/sw/bin/pythonw</string>
13+
<string>/usr/local/bin/python3</string>
14+
<string>/opt/local/bin/python3</string>
15+
<string>/sw/bin/python3</string>
1616
</array>
1717
<key>honourhashbang</key>
1818
<false/>
@@ -35,12 +35,9 @@
3535
<false/>
3636
<key>interpreter_list</key>
3737
<array>
38-
<string>/usr/local/bin/pythonw</string>
39-
<string>/usr/local/bin/python</string>
40-
<string>/usr/bin/pythonw</string>
41-
<string>/usr/bin/python</string>
42-
<string>/sw/bin/pythonw</string>
43-
<string>/sw/bin/python</string>
38+
<string>/usr/local/bin/python3</string>
39+
<string>/opt/local/bin/python3</string>
40+
<string>/sw/bin/python3</string>
4441
</array>
4542
<key>honourhashbang</key>
4643
<false/>
@@ -63,12 +60,9 @@
6360
<false/>
6461
<key>interpreter_list</key>
6562
<array>
66-
<string>/usr/local/bin/pythonw</string>
67-
<string>/usr/local/bin/python</string>
68-
<string>/usr/bin/pythonw</string>
69-
<string>/usr/bin/python</string>
70-
<string>/sw/bin/pythonw</string>
71-
<string>/sw/bin/python</string>
63+
<string>/usr/local/bin/python3</string>
64+
<string>/opt/local/bin/python3</string>
65+
<string>/sw/bin/python3</string>
7266
</array>
7367
<key>honourhashbang</key>
7468
<false/>

‎Mac/Resources/app/Info.plist.in

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<key>CFBundleExecutable</key>
2121
<string>Python</string>
2222
<key>CFBundleGetInfoString</key>
23-
<string>%version%, (c) 2001-2016 Python Software Foundation.</string>
23+
<string>%version%, (c) 2001-2020 Python Software Foundation.</string>
2424
<key>CFBundleHelpBookFolder</key>
2525
<array>
2626
<string>Documentation</string>
@@ -55,7 +55,7 @@
5555
<key>NSAppleScriptEnabled</key>
5656
<true/>
5757
<key>NSHumanReadableCopyright</key>
58-
<string>(c) 2001-2016 Python Software Foundation.</string>
58+
<string>(c) 2001-2020 Python Software Foundation.</string>
5959
<key>NSHighResolutionCapable</key>
6060
<true/>
6161
</dict>

0 commit comments

Comments
 (0)
Please sign in to comment.