From 91511ece555b01397194715b3aa953125826a91d Mon Sep 17 00:00:00 2001 From: Grzegorz Bokota Date: Thu, 3 Dec 2020 20:15:32 +0100 Subject: [PATCH 1/4] fix for bigsur --- src/wheel/macosx_libfile.py | 5 ++++- tests/test_macosx_libfile.py | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/wheel/macosx_libfile.py b/src/wheel/macosx_libfile.py index 9141f269..2c2fd625 100644 --- a/src/wheel/macosx_libfile.py +++ b/src/wheel/macosx_libfile.py @@ -352,13 +352,16 @@ def calculate_macosx_platform_tag(archive_root, platform_tag): base_version = tuple([int(x) for x in base_version.split(".")]) if len(base_version) >= 2: base_version = base_version[0:2] - + if base_version[0] > 10: + base_version = (base_version[0], 0) assert len(base_version) == 2 if "MACOSX_DEPLOYMENT_TARGET" in os.environ: deploy_target = tuple([int(x) for x in os.environ[ "MACOSX_DEPLOYMENT_TARGET"].split(".")]) if len(deploy_target) >= 2: deploy_target = deploy_target[0:2] + if deploy_target[0] > 10: + deploy_target = (deploy_target[0], 0) if deploy_target < base_version: sys.stderr.write( "[WARNING] MACOSX_DEPLOYMENT_TARGET is set to a lower value ({}) than the " diff --git a/tests/test_macosx_libfile.py b/tests/test_macosx_libfile.py index 35cff83b..356db239 100644 --- a/tests/test_macosx_libfile.py +++ b/tests/test_macosx_libfile.py @@ -127,6 +127,25 @@ def test_warning_on_to_low_env_variable(self, monkeypatch, capsys): captured = capsys.readouterr() assert "MACOSX_DEPLOYMENT_TARGET is set to a lower value (10.8) than the" in captured.err + def test_get_platform_bigsur_env(self, monkeypatch): + dirname = os.path.dirname(__file__) + dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version") + monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.9-x86_64")) + monkeypatch.setenv("MACOSX_DEPLOYMENT_TARGET", "11") + monkeypatch.setattr(os, "walk", return_factory( + [(dylib_dir, [], ["test_lib_10_6.dylib", "test_lib_10_10_fat.dylib"])] + )) + assert get_platform(dylib_dir) == "macosx_11_0_x86_64" + + def test_get_platform_bigsur_platform(self, monkeypatch): + dirname = os.path.dirname(__file__) + dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version") + monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-11-x86_64")) + monkeypatch.setattr(os, "walk", return_factory( + [(dylib_dir, [], ["test_lib_10_6.dylib", "test_lib_10_10_fat.dylib"])] + )) + assert get_platform(dylib_dir) == "macosx_11_0_x86_64" + def test_get_platform_linux(monkeypatch): monkeypatch.setattr(distutils.util, "get_platform", return_factory("linux_x86_64")) From ee6c77a9f31c7ed3ad3e9b908384aaa519d50d1c Mon Sep 17 00:00:00 2001 From: Grzegorz Bokota Date: Thu, 3 Dec 2020 20:40:23 +0100 Subject: [PATCH 2/4] Apply suggestions from code review Co-authored-by: FX Coudert --- src/wheel/macosx_libfile.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/wheel/macosx_libfile.py b/src/wheel/macosx_libfile.py index 2c2fd625..050dec65 100644 --- a/src/wheel/macosx_libfile.py +++ b/src/wheel/macosx_libfile.py @@ -350,16 +350,14 @@ def calculate_macosx_platform_tag(archive_root, platform_tag): """ prefix, base_version, suffix = platform_tag.split('-') base_version = tuple([int(x) for x in base_version.split(".")]) - if len(base_version) >= 2: - base_version = base_version[0:2] + base_version = base_version[:2] if base_version[0] > 10: base_version = (base_version[0], 0) assert len(base_version) == 2 if "MACOSX_DEPLOYMENT_TARGET" in os.environ: deploy_target = tuple([int(x) for x in os.environ[ "MACOSX_DEPLOYMENT_TARGET"].split(".")]) - if len(deploy_target) >= 2: - deploy_target = deploy_target[0:2] + deploy_target = deploy_target[:2] if deploy_target[0] > 10: deploy_target = (deploy_target[0], 0) if deploy_target < base_version: From 3b664ce220b98d3925591ecc5b9cf6275c48fd7f Mon Sep 17 00:00:00 2001 From: Grzegorz Bokota Date: Thu, 3 Dec 2020 20:51:25 +0100 Subject: [PATCH 3/4] add protection for read version from file --- src/wheel/macosx_libfile.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/wheel/macosx_libfile.py b/src/wheel/macosx_libfile.py index 050dec65..f8ad3cab 100644 --- a/src/wheel/macosx_libfile.py +++ b/src/wheel/macosx_libfile.py @@ -379,7 +379,10 @@ def calculate_macosx_platform_tag(archive_root, platform_tag): lib_path = os.path.join(dirpath, filename) min_ver = extract_macosx_min_system_version(lib_path) if min_ver is not None: - versions_dict[lib_path] = min_ver[0:2] + min_ver = min_ver[0:2] + if min_ver[0] > 10: + min_ver = (min_ver[0], 0) + versions_dict[lib_path] = min_ver if len(versions_dict) > 0: base_version = max(base_version, max(versions_dict.values())) From 9be4cb1e9bb4259070bc10d5ca87fe12b646eb50 Mon Sep 17 00:00:00 2001 From: Grzegorz Bokota Date: Thu, 3 Dec 2020 20:55:56 +0100 Subject: [PATCH 4/4] add test file for macos bigsur --- tests/test_macosx_libfile.py | 9 +++++---- .../test_lib_11.dylib | Bin 0 -> 16464 bytes 2 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 tests/testdata/macosx_minimal_system_version/test_lib_11.dylib diff --git a/tests/test_macosx_libfile.py b/tests/test_macosx_libfile.py index 356db239..337f0e30 100644 --- a/tests/test_macosx_libfile.py +++ b/tests/test_macosx_libfile.py @@ -21,7 +21,8 @@ def test_read_from_dylib(): ("test_lib_10_10_386.dylib", "10.10.0"), ("test_lib_10_14_386.dylib", "10.14.0"), ("test_lib_multiple_fat.dylib", "10.14.0"), - ("test_lib_10_10_10.dylib", "10.10.10") + ("test_lib_10_10_10.dylib", "10.10.10"), + ("test_lib_11.dylib", "11.0.0"), ] for file_name, ver in versions: extracted = extract_macosx_min_system_version( @@ -48,14 +49,14 @@ class TestGetPlatformMacosx: def test_simple(self, monkeypatch): dirname = os.path.dirname(__file__) dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version") - monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.14-x86_64")) - assert get_platform(dylib_dir) == "macosx_10_14_x86_64" + monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-11.0-x86_64")) + assert get_platform(dylib_dir) == "macosx_11_0_x86_64" def test_version_bump(self, monkeypatch, capsys): dirname = os.path.dirname(__file__) dylib_dir = os.path.join(dirname, "testdata", "macosx_minimal_system_version") monkeypatch.setattr(distutils.util, "get_platform", return_factory("macosx-10.9-x86_64")) - assert get_platform(dylib_dir) == "macosx_10_14_x86_64" + assert get_platform(dylib_dir) == "macosx_11_0_x86_64" captured = capsys.readouterr() assert "[WARNING] This wheel needs a higher macOS version than" in captured.err diff --git a/tests/testdata/macosx_minimal_system_version/test_lib_11.dylib b/tests/testdata/macosx_minimal_system_version/test_lib_11.dylib new file mode 100644 index 0000000000000000000000000000000000000000..80202c11ba026146f7596191a1043216590fa9f2 GIT binary patch literal 16464 zcmeI4y-EW?6ov2l4=PEcC|Zb!s6`@Tk@+b@&bZ| z&mfk958wk>ieTdlh=}Lz&gv2bOPe!ra(`y#?(DbI-aNj)eRhjD?IO|z^+C-xk#mW| z6B&kHA!9bP+nbtc8R_5SPNY>RwD^2V^){fRzjnPDKk5aH&OV5i8u7e}VdaarS z0@cP*%`5IF7Qdlj)g+{K;%Si{*l8Q7@56xy%`>;pt!J<}st+jW49#(a0 z`{32rUhO{gV8?A2H$q1ov*)_f(=OL1i0yCCvmL`j!oGa`M}Y1M+P~qCiN6o+>;+Tv M>Uon#Gk&ouU-!LLLjV8( literal 0 HcmV?d00001