Skip to content

Commit a7e15f6

Browse files
Czakifxcoudert
andauthored
Fixed error on Big Sur when deployment target = 11 (pypa/wheel#386)
Fixes pypa/wheel#385. Co-authored-by: FX Coudert <[email protected]>
1 parent ebf3190 commit a7e15f6

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

setuptools/command/_macosx_libfile.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -350,15 +350,16 @@ def calculate_macosx_platform_tag(archive_root, platform_tag):
350350
"""
351351
prefix, base_version, suffix = platform_tag.split('-')
352352
base_version = tuple([int(x) for x in base_version.split(".")])
353-
if len(base_version) >= 2:
354-
base_version = base_version[0:2]
355-
353+
base_version = base_version[:2]
354+
if base_version[0] > 10:
355+
base_version = (base_version[0], 0)
356356
assert len(base_version) == 2
357357
if "MACOSX_DEPLOYMENT_TARGET" in os.environ:
358358
deploy_target = tuple([int(x) for x in os.environ[
359359
"MACOSX_DEPLOYMENT_TARGET"].split(".")])
360-
if len(deploy_target) >= 2:
361-
deploy_target = deploy_target[0:2]
360+
deploy_target = deploy_target[:2]
361+
if deploy_target[0] > 10:
362+
deploy_target = (deploy_target[0], 0)
362363
if deploy_target < base_version:
363364
sys.stderr.write(
364365
"[WARNING] MACOSX_DEPLOYMENT_TARGET is set to a lower value ({}) than the "
@@ -378,7 +379,10 @@ def calculate_macosx_platform_tag(archive_root, platform_tag):
378379
lib_path = os.path.join(dirpath, filename)
379380
min_ver = extract_macosx_min_system_version(lib_path)
380381
if min_ver is not None:
381-
versions_dict[lib_path] = min_ver[0:2]
382+
min_ver = min_ver[0:2]
383+
if min_ver[0] > 10:
384+
min_ver = (min_ver[0], 0)
385+
versions_dict[lib_path] = min_ver
382386

383387
if len(versions_dict) > 0:
384388
base_version = max(base_version, max(versions_dict.values()))

setuptools/tests/macosx_libfile/test_macosx_libfile.py

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ def test_read_from_dylib():
2121
("test_lib_10_10_386.dylib", "10.10.0"),
2222
("test_lib_10_14_386.dylib", "10.14.0"),
2323
("test_lib_multiple_fat.dylib", "10.14.0"),
24-
("test_lib_10_10_10.dylib", "10.10.10")
24+
("test_lib_10_10_10.dylib", "10.10.10"),
25+
("test_lib_11.dylib", "11.0.0"),
2526
]
2627
for file_name, ver in versions:
2728
extracted = extract_macosx_min_system_version(
@@ -48,14 +49,14 @@ class TestGetPlatformMacosx:
4849
def test_simple(self, monkeypatch):
4950
dirname = os.path.dirname(__file__)
5051
dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version")
51-
monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.14-x86_64"))
52-
assert get_platform(dylib_dir) == "macosx_10_14_x86_64"
52+
monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-11.0-x86_64"))
53+
assert get_platform(dylib_dir) == "macosx_11_0_x86_64"
5354

5455
def test_version_bump(self, monkeypatch, capsys):
5556
dirname = os.path.dirname(__file__)
5657
dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version")
5758
monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.9-x86_64"))
58-
assert get_platform(dylib_dir) == "macosx_10_14_x86_64"
59+
assert get_platform(dylib_dir) == "macosx_11_0_x86_64"
5960
captured = capsys.readouterr()
6061
assert "[WARNING] This wheel needs a higher macOS version than" in captured.err
6162

@@ -127,6 +128,25 @@ def test_warning_on_to_low_env_variable(self, monkeypatch, capsys):
127128
captured = capsys.readouterr()
128129
assert "MACOSX_DEPLOYMENT_TARGET is set to a lower value (10.8) than the" in captured.err
129130

131+
def test_get_platform_bigsur_env(self, monkeypatch):
132+
dirname = os.path.dirname(__file__)
133+
dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version")
134+
monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.9-x86_64"))
135+
monkeypatch.setenv("MACOSX_DEPLOYMENT_TARGET", "11")
136+
monkeypatch.setattr(os, "walk", return_factory(
137+
[(dylib_dir, [], ["test_lib_10_6.dylib", "test_lib_10_10_fat.dylib"])]
138+
))
139+
assert get_platform(dylib_dir) == "macosx_11_0_x86_64"
140+
141+
def test_get_platform_bigsur_platform(self, monkeypatch):
142+
dirname = os.path.dirname(__file__)
143+
dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version")
144+
monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-11-x86_64"))
145+
monkeypatch.setattr(os, "walk", return_factory(
146+
[(dylib_dir, [], ["test_lib_10_6.dylib", "test_lib_10_10_fat.dylib"])]
147+
))
148+
assert get_platform(dylib_dir) == "macosx_11_0_x86_64"
149+
130150

131151
def test_get_platform_linux(monkeypatch):
132152
monkeypatch.setattr(distutils.util, "get_platform", return_factory("linux_x86_64"))

0 commit comments

Comments
 (0)