Skip to content

GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py#49259

Open
raulcd wants to merge 19 commits intoapache:mainfrom
raulcd:testing-scikit-build-core
Open

GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py#49259
raulcd wants to merge 19 commits intoapache:mainfrom
raulcd:testing-scikit-build-core

Conversation

@raulcd
Copy link
Member

@raulcd raulcd commented Feb 12, 2026

Rationale for this change

Move our PyArrow build backend from setuptools and a custom setup.py to scikit-build-core which is just build backend for CMake related projects.

What changes are included in this PR?

Move from setuptools to scikit-build-core and remove PyArrow setup.py. Update some of the build requirements and minor fixes.
A custom build backend has been also been created in order to wrap scikit-build-core in order to fix problems on License files for monorepos.
pyproject.toml metadata validation expects license files to exist before exercising the build backend that's why we create symlinks. Our thin build backend will just make those symlinks hard-links in order for license and notice files to contain the contents and be added as part of the sdist.

Remove flags that are not used anymore (were only part of setup.py) and documented and validated how the same flags have to be used now.

Are these changes tested?

Yes all Python CI tests, wheels and sdist are successful.

Are there any user-facing changes?

Yes, users building PyArrow will now require the new build dependencies to exercise the build and depending on the flags used they might require to use the new documented way of using those flags.

@raulcd raulcd requested review from AlenkaF and rok as code owners February 12, 2026 14:43
@raulcd raulcd marked this pull request as draft February 12, 2026 14:43
@github-actions

This comment was marked as off-topic.

@raulcd
Copy link
Member Author

raulcd commented Feb 12, 2026

@github-actions crossbow submit -g python

@github-actions

This comment was marked as outdated.

@raulcd
Copy link
Member Author

raulcd commented Feb 12, 2026

@github-actions crossbow submit wheel-*-cp313-cp313-amd64

@github-actions

This comment was marked as outdated.

@raulcd
Copy link
Member Author

raulcd commented Feb 13, 2026

@github-actions crossbow submit wheel-windows-cp313-cp313-amd64

@github-actions
Copy link

Revision: 166ff63

Submitted crossbow builds: ursacomputing/crossbow @ actions-f1bbdf4eaa

Task Status
wheel-windows-cp313-cp313-amd64 GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 13, 2026

@github-actions crossbow submit wheel-windows-cp313-cp313-amd64

@github-actions
Copy link

Revision: 36fefd4

Submitted crossbow builds: ursacomputing/crossbow @ actions-bd811d95ea

Task Status
wheel-windows-cp313-cp313-amd64 GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 16, 2026

@github-actions crossbow submit -g python -g wheel

@github-actions

This comment was marked as outdated.

@raulcd
Copy link
Member Author

raulcd commented Feb 16, 2026

@github-actions crossbow submit python-sdist

@github-actions
Copy link

Revision: c518c90

Submitted crossbow builds: ursacomputing/crossbow @ actions-ea249e92ce

Task Status
python-sdist GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 17, 2026

@github-actions crossbow submit python-sdist

@github-actions
Copy link

Revision: 131e2c0

Submitted crossbow builds: ursacomputing/crossbow @ actions-1c58e78aff

Task Status
python-sdist GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 17, 2026

@github-actions crossbow submit python-sdist

@github-actions
Copy link

Revision: 30e04be

Submitted crossbow builds: ursacomputing/crossbow @ actions-3179f97956

Task Status
python-sdist GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 17, 2026

@github-actions crossbow submit -g python -g wheel

@github-actions

This comment was marked as outdated.

@raulcd raulcd changed the title POC: [Python] Testing scikit-build-core as build backend for PyArrow GH-36411: [Python] Use scikit-build-core as build backend for PyArrow and get rid of setup.py Feb 17, 2026
@raulcd
Copy link
Member Author

raulcd commented Feb 17, 2026

@github-actions crossbow submit wheel-windows-cp313-cp313-amd64

@github-actions
Copy link

Revision: 5606749

Submitted crossbow builds: ursacomputing/crossbow @ actions-3c4293e220

Task Status
wheel-windows-cp313-cp313-amd64 GitHub Actions

@raulcd raulcd force-pushed the testing-scikit-build-core branch from cdd7629 to 1110dbe Compare February 18, 2026 13:21
@raulcd
Copy link
Member Author

raulcd commented Feb 18, 2026

@github-actions crossbow submit -g python -g wheel

@github-actions

This comment was marked as outdated.

@raulcd
Copy link
Member Author

raulcd commented Feb 18, 2026

@github-actions crossbow submit wheel-cp313

@github-actions
Copy link

Revision: 75d2f7f

Submitted crossbow builds: ursacomputing/crossbow @ actions-fda9c59efb

Task Status
wheel-macos-monterey-cp313-cp313-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313-arm64 GitHub Actions
wheel-macos-monterey-cp313-cp313t-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313t-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313t-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313t-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313t-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313t-arm64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions
wheel-windows-cp313-cp313t-amd64 GitHub Actions

@raulcd
Copy link
Member Author

raulcd commented Feb 18, 2026

@github-actions crossbow submit -g python -g wheel

@github-actions
Copy link

Revision: 75d2f7f

Submitted crossbow builds: ursacomputing/crossbow @ actions-62c2fce38f

Task Status
example-python-minimal-build-fedora-conda GitHub Actions
example-python-minimal-build-ubuntu-venv GitHub Actions
python-sdist GitHub Actions
test-conda-python-3.10 GitHub Actions
test-conda-python-3.10-hdfs-2.9.2 GitHub Actions
test-conda-python-3.10-hdfs-3.2.1 GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2 GitHub Actions
test-conda-python-3.11 GitHub Actions
test-conda-python-3.11-dask-latest GitHub Actions
test-conda-python-3.11-dask-upstream_devel GitHub Actions
test-conda-python-3.11-hypothesis GitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latest GitHub Actions
test-conda-python-3.11-spark-master GitHub Actions
test-conda-python-3.12 GitHub Actions
test-conda-python-3.12-cpython-debug GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26 GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latest GitHub Actions
test-conda-python-3.13 GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightly GitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightly GitHub Actions
test-conda-python-3.14 GitHub Actions
test-conda-python-emscripten GitHub Actions
test-debian-13-python-3-amd64 GitHub Actions
test-debian-13-python-3-i386 GitHub Actions
test-fedora-42-python-3 GitHub Actions
test-ubuntu-22.04-python-3 GitHub Actions
test-ubuntu-22.04-python-313-freethreading GitHub Actions
test-ubuntu-24.04-python-3 GitHub Actions
wheel-macos-monterey-cp310-cp310-amd64 GitHub Actions
wheel-macos-monterey-cp310-cp310-arm64 GitHub Actions
wheel-macos-monterey-cp311-cp311-amd64 GitHub Actions
wheel-macos-monterey-cp311-cp311-arm64 GitHub Actions
wheel-macos-monterey-cp312-cp312-amd64 GitHub Actions
wheel-macos-monterey-cp312-cp312-arm64 GitHub Actions
wheel-macos-monterey-cp313-cp313-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313-arm64 GitHub Actions
wheel-macos-monterey-cp313-cp313t-amd64 GitHub Actions
wheel-macos-monterey-cp313-cp313t-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314-arm64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-amd64 GitHub Actions
wheel-macos-monterey-cp314-cp314t-arm64 GitHub Actions
wheel-manylinux-2-28-cp310-cp310-amd64 GitHub Actions
wheel-manylinux-2-28-cp310-cp310-arm64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-amd64 GitHub Actions
wheel-manylinux-2-28-cp311-cp311-arm64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-amd64 GitHub Actions
wheel-manylinux-2-28-cp312-cp312-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313-arm64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313t-amd64 GitHub Actions
wheel-manylinux-2-28-cp313-cp313t-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314-arm64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-amd64 GitHub Actions
wheel-manylinux-2-28-cp314-cp314t-arm64 GitHub Actions
wheel-musllinux-1-2-cp310-cp310-amd64 GitHub Actions
wheel-musllinux-1-2-cp310-cp310-arm64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-amd64 GitHub Actions
wheel-musllinux-1-2-cp311-cp311-arm64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-amd64 GitHub Actions
wheel-musllinux-1-2-cp312-cp312-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313-arm64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313t-amd64 GitHub Actions
wheel-musllinux-1-2-cp313-cp313t-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314-arm64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-amd64 GitHub Actions
wheel-musllinux-1-2-cp314-cp314t-arm64 GitHub Actions
wheel-windows-cp310-cp310-amd64 GitHub Actions
wheel-windows-cp311-cp311-amd64 GitHub Actions
wheel-windows-cp312-cp312-amd64 GitHub Actions
wheel-windows-cp313-cp313-amd64 GitHub Actions
wheel-windows-cp313-cp313t-amd64 GitHub Actions
wheel-windows-cp314-cp314-amd64 GitHub Actions
wheel-windows-cp314-cp314t-amd64 GitHub Actions

@raulcd raulcd marked this pull request as ready for review February 19, 2026 08:47
@raulcd
Copy link
Member Author

raulcd commented Feb 19, 2026

@pitrou @WillAyd I think this is ready for a first round of reviews! All tests are green now.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments