-
Notifications
You must be signed in to change notification settings - Fork 67
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
Build manylinux_2_24
compliant wheels
#844
Build manylinux_2_24
compliant wheels
#844
Conversation
.github/workflows/python.yml
Outdated
strategy: | ||
fail-fast: false | ||
matrix: | ||
python-version: | ||
- 3.8 | ||
# - 3.9 | ||
os: | ||
- ubuntu-latest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we stick to ubuntu-20.04
? Mostly for reproducibility, even if cibuildwheel
provide some abstraction better to be conservative.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just to understand, this still uses the assimp/ipopt from apt, so it is only compatible with Ubuntu 20.04 (or any distro that by chance have assimp/ipopt with the same ABI), right? |
No, The new standard basically allows distributing wheels for most of the modern Linux distribution, allowing to compile the C++ project with a modern enough compiler that does not mess up C++ >= 11. This means that the CMake project included in the wheel could get imported by downstream libraries. |
Ah cool, so everything will work until some other wheel uses assimp, ipopt or libxml2 . Good to know. |
Can you elaborate on this? If I understood, it's about the case where an application imports the new A good thing is that these external shared libraries that are shipped in the wheel remain shared libraries. The result is similar to a static compilation. I think, though, that a static compilation would create even more problems, so this seems a good trade-off. |
dfec3d3
to
b7d1296
Compare
Yes, I meant exactly what you are referring to, I think we are aligned. Static compilation could be better by proper dealing with symbols (i.e. making sure that ipopt/libxml2/assimp symbol visibility is local, or even better renaming the symbols after linking), but I don't think that tools to do that in a clean way exist, so this PR is already a huge improvement and probably the best option at the moment. |
Good point on the symbols visibility. It could be possible obtaining such setup if also the static version of all the dependencies is found in the system. However, this is not the case. |
Yes, if you need static version of the library vcpkg may be more indicated. |
This is take 2, after #774, #776 and #777.
Finally, all the tooling necessary to build
manylinux_2_24
is ready 🎉 It requires a modernpip>=21.0
version.In theory, this PR could also enable the macOS and windows support, but let's do things progressively.