Skip to content

refactor: build wheels and conda packages using Python limited API#43

Merged
rapids-bot[bot] merged 2 commits intorapidsai:mainfrom
gforsyth:limited_api
Feb 12, 2026
Merged

refactor: build wheels and conda packages using Python limited API#43
rapids-bot[bot] merged 2 commits intorapidsai:mainfrom
gforsyth:limited_api

Conversation

@gforsyth
Copy link
Copy Markdown
Contributor

Building cuforest using the limited API as part of rapidsai/build-planning#42

Ops-Bot-Merge-Barrier: true

@copy-pr-bot
Copy link
Copy Markdown

copy-pr-bot Bot commented Feb 10, 2026

Auto-sync is disabled for draft pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@github-actions github-actions Bot added conda Relates to conda packaging ci labels Feb 10, 2026
@gforsyth
Copy link
Copy Markdown
Contributor Author

/ok to test

@gforsyth gforsyth added improvement Improves an existing functionality non-breaking Introduces a non-breaking change labels Feb 10, 2026
@gforsyth gforsyth marked this pull request as ready for review February 10, 2026 22:30
@gforsyth gforsyth requested review from a team as code owners February 10, 2026 22:30
@gforsyth gforsyth requested a review from bdice February 10, 2026 22:30
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Feb 10, 2026

📝 Walkthrough

Summary by CodeRabbit

  • Chores
    • Added stable ABI (abi3) support so single wheels can target multiple Python versions.
    • Introduced matrix-filtered builds to produce artifacts per CUDA/architecture/Python subset.
    • Improved CI build and publish flow with dynamic package naming, targeted wheel publishing, and more consistent wheel/conda resolution for installs and tests.

Walkthrough

Adds Python stable-ABI (abi3) build support: introduces matrix filters in GitHub workflows, propagates RAPIDS_PY_API and RAPIDS_PACKAGE_NAME through CI scripts, changes wheel build to support --stable, updates auditwheel repair invocation, and refactors conda recipe and test/download steps to use ABI3/version-independent packaging.

Changes

Cohort / File(s) Summary
Workflow matrix changes
.github/workflows/build.yaml, .github/workflows/pr.yaml
Added matrix_filter entries to limit build matrices per CUDA x ARCH x minimum Python and added publish-wheel-search-key: cuforest_wheel_python_abi3 to wheel publish job.
Top-level build script
build.sh
Introduced PYTHON_ARGS_FOR_INSTALL array, default pip/skbuild config entries, and conditional addition of skbuild.wheel.py-api=${RAPIDS_PY_API} when RAPIDS_PY_VERSION is set; replaced inline pip args with array expansion.
CI wheel build scripts
ci/build_wheel.sh, ci/build_wheel_cuforest.sh
ci/build_wheel.sh: added --stable flag parsing and conditional injection of --config-settings="skbuild.wheel.py-api=${RAPIDS_PY_API}" into RAPIDS_PIP_WHEEL_ARGS. ci/build_wheel_cuforest.sh: invoke ./ci/build_wheel.sh with --stable, compute/export RAPIDS_PY_API and RAPIDS_PACKAGE_NAME, pass EXCLUDE_ARGS and output dir to auditwheel repair.
CI python build/test scripts
ci/build_python.sh, ci/test_python.sh, ci/test_wheel.sh
ci/build_python.sh: export RAPIDS_PACKAGE_NAME computed via rapids-package-name ... --stable --cuda. ci/test_python.sh and ci/test_wheel.sh: switch artifact/wheel download calls to use rapids-download-from-github with package name resolved by rapids-package-name ... --stable --cuda.
Conda recipe: ABI3 and version-independence
conda/recipes/cuforest/recipe.yaml
Replaced py_version/py_buildstring flow with py_abi_min, derived py_buildstring, added py_runtime_latest, set python.version_independent: true, updated build string to cp${{ py_buildstring }}_abi3_…, require python =${{ py_abi_min }} and python-abi3 ${{ py_abi_min }}.*, and added a runtime test using py_runtime_latest.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Tip

Issue Planner is now in beta. Read the docs and try it out! Share your feedback on Discord.


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@gforsyth
Copy link
Copy Markdown
Contributor Author

/merge

@rapids-bot rapids-bot Bot merged commit 1e0b2a7 into rapidsai:main Feb 12, 2026
58 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci conda Relates to conda packaging improvement Improves an existing functionality non-breaking Introduces a non-breaking change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants