Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Modernize Python bindings build system #2025

Merged
merged 3 commits into from
Jun 7, 2023
Merged

Conversation

amadio
Copy link
Member

@amadio amadio commented Jun 5, 2023

This is a rewrite of the build system of the Python bindings, to solve some of the open tickets we have.

@henryiii Could you please review these changes? I'd appreciate your input.

@adriansev Could you also have a look to check that it would work for your use cases? Some of the open tickets this solves were filed by you. Thank you!

@matthewfeickert Since you've filed #1844, maybe you also want to review these changes.

@amadio amadio self-assigned this Jun 5, 2023
@amadio amadio added this to the 5.6 milestone Jun 5, 2023
@amadio amadio requested a review from esindril June 5, 2023 16:26
Copy link
Contributor

@matthewfeickert matthewfeickert left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome @amadio! I just scanned this now, so this isn't really a review, but just some things that hit me right away.

bindings/python/project.toml Outdated Show resolved Hide resolved
project.toml Outdated Show resolved Hide resolved
@henryiii
Copy link
Contributor

henryiii commented Jun 5, 2023

If you really don't want to use scikit-build(-core), I'd recommend looking at https://github.com/pybind/cmake_example/blob/master/setup.py, which still handles more situations than this does, like macOS ARM/Universal support. Though no editable installs and other features.

@amadio
Copy link
Member Author

amadio commented Jun 5, 2023

If you really don't want to use scikit-build(-core), I'd recommend looking at https://github.com/pybind/cmake_example/blob/master/setup.py, which still handles more situations than this does, like macOS ARM/Universal support. Though no editable installs and other features.

At least for 5.x, I'd like to not add new dependencies, as @abh is rightly a fan of keeping dependencies to a minimum. For 6.0, we can look into moving to scikit-build, if the platforms we support have it readily available (i.e. via package manager). Indeed, I'm sure scikit-build covers more than what I did here, as I'm kind of new to the Python packaging ecosystem. This just covers the OSs we already support and what I identified and tested on my own machine and macOS.

This is a rewrite of the packaging of the Python bindings. The new
packaging supports building the Python bindings both as part of a
standard CMake build, as well as against a previously installed version
of XRootD without the Python bindings. A new setup.py at the top level
has been created to replace the old one from packaging/wheel. It can
be used to drive the main CMake build using pip to create source and
binary distributions of XRootD.

Closes: xrootd#1768, xrootd#1807 xrootd#1833, xrootd#1844, xrootd#2001, xrootd#2002.
This reverts commit eeb85d2.
This should not be necessary anymore now that the build system has
been updated.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants