From 45588a0fd12b119502133e36e643748fe7142c83 Mon Sep 17 00:00:00 2001 From: Lawrence D'Anna Date: Thu, 9 Jul 2020 15:46:30 -0700 Subject: [PATCH] add support for macos 11., arm64, universal2 --- packaging/tags.py | 19 +++++++++++++++++-- tests/test_tags.py | 27 ++++++++++++++++++++++++--- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/packaging/tags.py b/packaging/tags.py index 289ed5c18..ad48428c1 100644 --- a/packaging/tags.py +++ b/packaging/tags.py @@ -389,7 +389,7 @@ def _mac_binary_formats(version, cpu_arch): if cpu_arch == "x86_64": if version < (10, 4): return [] - formats.extend(["intel", "fat64", "fat32"]) + formats.extend(["intel", "fat64", "fat32", "universal2"]) elif cpu_arch == "i386": if version < (10, 4): @@ -407,7 +407,12 @@ def _mac_binary_formats(version, cpu_arch): return [] formats.extend(["fat32", "fat"]) - formats.append("universal") + elif cpu_arch == "arm64": + formats.append("universal2") + + if cpu_arch != "arm64": + formats.append("universal") + return formats @@ -439,6 +444,16 @@ def mac_platforms(version=None, arch=None): minor=compat_version[1], binary_format=binary_format, ) + if version >= (11, 0) and arch == "x86_64": + for minor_version in range(15, 3, -1): + compat_version = 10, minor_version + binary_formats = _mac_binary_formats(compat_version, arch) + for binary_format in binary_formats: + yield "macosx_{major}_{minor}_{binary_format}".format( + major=compat_version[0], + minor=compat_version[1], + binary_format=binary_format, + ) # From PEP 513, PEP 600 diff --git a/tests/test_tags.py b/tests/test_tags.py index dbffa9b45..913c97b73 100644 --- a/tests/test_tags.py +++ b/tests/test_tags.py @@ -225,8 +225,16 @@ def test_architectures(self, arch, is_32bit, expected): @pytest.mark.parametrize( "version,arch,expected", [ - ((10, 17), "x86_64", ["x86_64", "intel", "fat64", "fat32", "universal"]), - ((10, 4), "x86_64", ["x86_64", "intel", "fat64", "fat32", "universal"]), + ( + (10, 17), + "x86_64", + ["x86_64", "intel", "fat64", "fat32", "universal2", "universal"], + ), + ( + (10, 4), + "x86_64", + ["x86_64", "intel", "fat64", "fat32", "universal2", "universal"], + ), ((10, 3), "x86_64", []), ((10, 17), "i386", ["i386", "intel", "fat32", "fat", "universal"]), ((10, 4), "i386", ["i386", "intel", "fat32", "fat", "universal"]), @@ -271,18 +279,31 @@ def test_mac_platforms(self): "macosx_10_5_intel", "macosx_10_5_fat64", "macosx_10_5_fat32", + "macosx_10_5_universal2", "macosx_10_5_universal", "macosx_10_4_x86_64", "macosx_10_4_intel", "macosx_10_4_fat64", "macosx_10_4_fat32", + "macosx_10_4_universal2", "macosx_10_4_universal", ] - assert len(list(tags.mac_platforms((10, 17), "x86_64"))) == 14 * 5 + assert len(list(tags.mac_platforms((10, 17), "x86_64"))) == 14 * 6 assert not list(tags.mac_platforms((10, 0), "x86_64")) + def test_macos_11(self): + platforms = list(tags.mac_platforms((11, 0), "x86_64")) + assert "macosx_10_15_x86_64" in platforms + assert "macosx_10_4_x86_64" in platforms + assert "macosx_10_3_x86_64" not in platforms + + platforms = list(tags.mac_platforms((11, 0), "arm64")) + assert "macosx_10_15_x86_64" not in platforms + assert "macosx_10_4_x86_64" not in platforms + assert "macosx_10_3_x86_64" not in platforms + class TestManylinuxPlatform: def teardown_method(self):