Skip to content

Commit 8405a84

Browse files
committed
tags: accept mac tags without minor versions
Signed-off-by: Filipe Laíns <[email protected]>
1 parent 2bd5da3 commit 8405a84

File tree

2 files changed

+46
-6
lines changed

2 files changed

+46
-6
lines changed

packaging/tags.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,16 @@ def mac_platforms(
398398
compat_version = major_version, 0
399399
binary_formats = _mac_binary_formats(compat_version, arch)
400400
for binary_format in binary_formats:
401-
yield "macosx_{major}_{minor}_{binary_format}".format(
402-
major=major_version, minor=0, binary_format=binary_format
401+
yield "macosx_{major}_{binary_format}".format(
402+
major=major_version, binary_format=binary_format
403403
)
404+
# Mac OS 11 and 12 seem to omit the minor version, we will keep
405+
# them for backwards compatibility and avoid generating tags
406+
# with it in the future
407+
if major_version <= 12:
408+
yield "macosx_{major}_{minor}_{binary_format}".format(
409+
major=major_version, minor=0, binary_format=binary_format
410+
)
404411

405412
if version >= (11, 0):
406413
# Mac OS 11 on x86_64 is compatible with binaries from previous releases.

tests/test_tags.py

Lines changed: 37 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,12 +236,11 @@ def test_version_detection(self, monkeypatch):
236236
if (major, minor) == ("10", "16"):
237237
print(platforms, "macosx_11+")
238238
# For 10.16, the real version is at least 11.0.
239-
prefix, major, minor, _ = platforms[0].split("_", maxsplit=3)
239+
prefix, major, _ = platforms[0].split("_", maxsplit=2)
240240
assert prefix == "macosx"
241241
assert int(major) >= 11
242-
assert minor == "0"
243242
else:
244-
expected = f"macosx_{major}_{minor}_"
243+
expected = f"macosx_{major}_"
245244
print(platforms, expected)
246245
assert platforms[0].startswith(expected)
247246

@@ -303,14 +302,20 @@ def test_mac_platforms(self):
303302

304303
assert not list(tags.mac_platforms((10, 0), "x86_64"))
305304

306-
@pytest.mark.parametrize("major,minor", [(11, 0), (11, 3), (12, 0), (12, 3)])
305+
@pytest.mark.parametrize(
306+
"major,minor", [(11, 0), (11, 3), (12, 0), (12, 3), (13, 0)]
307+
)
307308
def test_macos_11(self, major, minor):
308309
platforms = list(tags.mac_platforms((major, minor), "x86_64"))
309310
assert "macosx_11_0_arm64" not in platforms
310311
assert "macosx_11_0_x86_64" in platforms
311312
assert "macosx_11_3_x86_64" not in platforms
312313
assert "macosx_11_0_universal" in platforms
313314
assert "macosx_11_0_universal2" in platforms
315+
assert "macosx_11_arm64" not in platforms
316+
assert "macosx_11_x86_64" in platforms
317+
assert "macosx_11_universal" in platforms
318+
assert "macosx_11_universal2" in platforms
314319
# Mac OS "10.16" is the version number that binaries compiled against an old
315320
# (pre 11.0) SDK will see. It can also be enabled explicitly for a process
316321
# with the environment variable SYSTEM_VERSION_COMPAT=1.
@@ -319,10 +324,22 @@ def test_macos_11(self, major, minor):
319324
assert "macosx_10_15_universal2" in platforms
320325
assert "macosx_10_4_x86_64" in platforms
321326
assert "macosx_10_3_x86_64" not in platforms
327+
assert "macosx_10_x86_64" not in platforms
328+
assert "macosx_10_universal2" not in platforms
322329
if major >= 12:
323330
assert "macosx_12_0_x86_64" in platforms
324331
assert "macosx_12_0_universal" in platforms
325332
assert "macosx_12_0_universal2" in platforms
333+
assert "macosx_12_x86_64" in platforms
334+
assert "macosx_12_universal" in platforms
335+
assert "macosx_12_universal2" in platforms
336+
if major >= 13:
337+
assert "macosx_13_0_x86_64" not in platforms
338+
assert "macosx_13_0_universal" not in platforms
339+
assert "macosx_13_0_universal2" not in platforms
340+
assert "macosx_13_x86_64" in platforms
341+
assert "macosx_13_universal" in platforms
342+
assert "macosx_13_universal2" in platforms
326343

327344
platforms = list(tags.mac_platforms((major, minor), "arm64"))
328345
assert "macosx_11_0_arm64" in platforms
@@ -333,9 +350,21 @@ def test_macos_11(self, major, minor):
333350
assert "macosx_10_15_x86_64" not in platforms
334351
assert "macosx_10_4_x86_64" not in platforms
335352
assert "macosx_10_3_x86_64" not in platforms
353+
assert "macosx_11_arm64" in platforms
354+
assert "macosx_11_universal" not in platforms
355+
assert "macosx_11_universal2" in platforms
356+
assert "macosx_10_universal2" not in platforms
357+
assert "macosx_10_x86_64" not in platforms
336358
if major >= 12:
337359
assert "macosx_12_0_arm64" in platforms
338360
assert "macosx_12_0_universal2" in platforms
361+
assert "macosx_12_arm64" in platforms
362+
assert "macosx_12_universal2" in platforms
363+
if major >= 13:
364+
assert "macosx_13_0_arm64" not in platforms
365+
assert "macosx_13_0_universal2" not in platforms
366+
assert "macosx_13_arm64" in platforms
367+
assert "macosx_13_universal2" in platforms
339368

340369

341370
class TestManylinuxPlatform:
@@ -1041,6 +1070,10 @@ def teardown_method(self):
10411070
# Clear the version cache
10421071
tags._glibc_version = []
10431072

1073+
def test_interpreter_platform(self):
1074+
tag = sysconfig.get_platform().replace("-", "_").replace(".", "_")
1075+
assert tag in list(tags.platform_tags())
1076+
10441077
@pytest.mark.parametrize(
10451078
"name,expected",
10461079
[("CPython", "cp"), ("PyPy", "pp"), ("Jython", "jy"), ("IronPython", "ip")],

0 commit comments

Comments
 (0)