]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix generated file name for installer builds on macOS 11+. (GH-25661) (GH-25664)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 27 Apr 2021 18:20:41 +0000 (11:20 -0700)
committerGitHub <noreply@github.com>
Tue, 27 Apr 2021 18:20:41 +0000 (14:20 -0400)
(cherry picked from commit 8a37463989410a79f6d1131d08dc0165bcaa0f9d)

Co-authored-by: Ned Deily <nad@python.org>
Mac/BuildScript/build-installer.py

index d7f4103766e7825374f4aac52ac920e3578af3a3..b07def17476acd80be53f5ac1400418785194fc8 100755 (executable)
@@ -1615,13 +1615,35 @@ def buildDMG():
     # installer file name. With the introduction of weaklinked installer
     # variants, we may have two variants with the same file name, i.e.
     # both ending in '10.9'.  To avoid this, we now use the major/minor
-    # version numbers of the macOS version we are building on, i.e.
-    # '10.9' as before for 10.9+ variant, '11.0' for universal2 11.0-.
-    # it's not ideal but should cause the least disruption to packaging
-    # workflows.
-    build_system_version = '.'.join(platform.mac_ver()[0].split('.')[0:2])
+    # version numbers of the macOS version we are building on.
+    # Also, as of macOS 11, operating system version numbering has
+    # changed from three components to two, i.e.
+    #   10.14.1, 10.14.2, ...
+    #   10.15.1, 10.15.2, ...
+    #   11.1, 11.2, ...
+    #   12.1, 12.2, ...
+    # (A further twist is that, when running on macOS 11, binaries built
+    # on older systems may be shown an operating system version of 10.16
+    # instead of 11.  We should not run into that situation here.)
+    # Also we should use "macos" instead of "macosx" going forward.
+    #
+    # To maintain compability for legacy variants, the file name for
+    # builds on macOS 10.15 and earlier remains:
+    #   python-3.x.y-macosx10.z.{dmg->pkg}
+    #   e.g. python-3.9.4-macosx10.9.{dmg->pkg}
+    # and for builds on macOS 11+:
+    #   python-3.x.y-macosz.{dmg->pkg}
+    #   e.g. python-3.9.4-macos11.{dmg->pkg}
+
+    build_tuple = getBuildTuple()
+    if build_tuple[0] < 11:
+        os_name = 'macosx'
+        build_system_version = '%s.%s' % build_tuple
+    else:
+        os_name = 'macos'
+        build_system_version = str(build_tuple[0])
     imagepath = os.path.join(outdir,
-                    'python-%s-macosx%s'%(getFullVersion(),build_system_version))
+                    'python-%s-%s%s'%(getFullVersion(),os_name,build_system_version))
     if INCLUDE_TIMESTAMP:
         imagepath = imagepath + '-%04d-%02d-%02d'%(time.localtime()[:3])
     imagepath = imagepath + '.dmg'