A fast, distributed, high performance gradient boosting (GBT, GBDT, GBRT, GBM or MART) framework based on decision tree algorithms, used for ranking, classification and many other machine learning tasks.
Why let scikit-build-core choose the platform target?
should be less error-prone than doing it manually with mv
decouples "what macOS versions does this support" from "what version of macOS was it built on?
This would result in supporting a wider range of macOS versions with lightgbm's wheels than the last release (v4.4.0) did. For example, in 4.4.40 lightgbm has this:
scikit-build-core determines the range of macOS versions by inspecting the MACOSX_DEPLOYMENT_TARGET environment variable where available, and otherwise falling back to platform.mac_ver().
Using this mechanism instead of manual renaming allows building wheels that target macOS versions older than whatever version the CI build is running on, to continue to support users on older systems. This is how xgboost, for example, is able to continue producing wheels that support macOS 10.X (Catalina).
Description
Follow-up to #5328
Proposes some changes to macOS packaging:
scikit-build-core
automatically determine themNotes for Reviewers
Why drop Big Sur testing?
Azure DevOps is dropping support for macOS Big Sur (11.x). See these warnings at the top of all the recent Azure DevOps builds here:
(example build link)
According to https://endoflife.date/macos, Big Sur support ended in September 2023
List of supported Microsoft-hosted Azure DevOps images: https://learn.microsoft.com/en-us/azure/devops/pipelines/agents/hosted?view=azure-devops&tabs=yaml#use-a-microsoft-hosted-agent
Why let
scikit-build-core
choose the platform target?mv
This would result in supporting a wider range of macOS versions with
lightgbm
's wheels than the last release (v4.4.0) did. For example, in 4.4.40lightgbm
has this:ref: https://pypi.org/project/lightgbm/4.4.0/#files
As of this PR,
lightgbm
would support:CI logs:
How does automatic determination of the tag work?
scikit-build-core
determines the range of macOS versions by inspecting theMACOSX_DEPLOYMENT_TARGET
environment variable where available, and otherwise falling back toplatform.mac_ver()
.https://github.com/scikit-build/scikit-build-core/blob/acb7d0346e4a05bcb47a4ea3939c705ab71e3145/src/scikit_build_core/builder/macos.py#L36
Using this mechanism instead of manual renaming allows building wheels that target macOS versions older than whatever version the CI build is running on, to continue to support users on older systems. This is how
xgboost
, for example, is able to continue producing wheels that support macOS 10.X (Catalina).https://github.com/dmlc/xgboost/blob/6c83c8c2efdb522472c1d23349ab64320d455443/tests/ci_build/build_python_wheels.sh#L38
https://pypi.org/project/xgboost/2.0.3/#files
It should also be less error-prone than manually setting tags by renaming files.