From bbc6a43658dc045a8cafb894bb721ad8bb02f0cf Mon Sep 17 00:00:00 2001 From: Lin Zhihao <59785146+LinZhihao-723@users.noreply.github.com> Date: Sun, 17 Mar 2024 21:44:45 +0800 Subject: [PATCH] Make macOS deployment target check robust against float precision errors. (#52) --- .github/workflows/build_wheels.yml | 1 - setup.py | 17 ++++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_wheels.yml b/.github/workflows/build_wheels.yml index 4018ff03..af3ff1fc 100644 --- a/.github/workflows/build_wheels.yml +++ b/.github/workflows/build_wheels.yml @@ -86,7 +86,6 @@ jobs: uses: pypa/cibuildwheel@v2.16.2 env: CIBW_ARCHS_LINUX: auto aarch64 - MACOSX_DEPLOYMENT_TARGET: 10.15 - uses: actions/upload-artifact@v3 with: diff --git a/setup.py b/setup.py index 57edf165..3eaf0f87 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ import platform import sys from setuptools import setup, Extension -from typing import List, Optional +from typing import List, Optional, Tuple ir_native: Extension = Extension( name="clp_ffi_py.ir.native", @@ -44,15 +44,22 @@ if "__main__" == __name__: try: if "Darwin" == platform.system(): - target: Optional[str] = os.environ.get("MACOSX_DEPLOYMENT_TARGET") - if None is target or float(target) < 10.15: - os.environ["MACOSX_DEPLOYMENT_TARGET"] = "10.15" + target_env_var_name: str = "MACOSX_DEPLOYMENT_TARGET" + min_target_version: Tuple[int, int] = (10, 15) + + target_str: Optional[str] = os.environ.get(target_env_var_name) + target: Tuple[int, ...] = () + if target_str is not None: + target = tuple(int(part) for part in target_str.split(".")) + if target < min_target_version: + target = min_target_version + os.environ[target_env_var_name] = ".".join(str(part) for part in target) project_name: str = "clp_ffi_py" description: str = "CLP FFI Python Interface" extension_modules: List[Extension] = [ir_native] if (3, 7) > sys.version_info: - sys.exit(f"The minimum Python version required is Python3.7") + sys.exit("The minimum Python version required is Python3.7") else: setup( name=project_name,