-
Notifications
You must be signed in to change notification settings - Fork 27
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
Python and debian packages #203
base: master
Are you sure you want to change the base?
Conversation
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.
Not sure which part to review here since it's mostly yaml. If the packaging works, it's fine.
Please add a short section to the README for users that they can now install via package managers, with an example.
Why are two arm packages needed for python?
@@ -87,6 +87,7 @@ option(KAHYPAR_ENABLE_TESTING "Enables tests, which requires dowloading googlete | |||
option(KAHYPAR_STATIC_LINK_DEPENDENCIES "In static build, also link dependencies (other than TBB) statically." OFF) | |||
option(KAHYPAR_STATIC_LINK_TBB "In static build, also link TBB statically. Note that this is not officially supported!" OFF) | |||
option(KAHYPAR_INSTALL_CLI "Provide a target to install an executable binary `mtkahypar`." OFF) | |||
option(KAHYPAR_BUILD_PACKAGE "Provide a target to build a debian package." OFF) |
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.
Rename to KAHYPAR_BUILD_DEBIAN_PACKAGE?
There are actually 5 ARM packages, as well as 7 x86 packages. And the same number for Mac, so 24 packages in total 😄 The reason is that Python has only limited support for a stable ABI, and pybind does not support the stable ABI at all. Therefore, a separate package must be built for every python version we want to support (which I configured to be 3.7-3.13 for x86 and 3.9-3.13 for ARM). There are 2 ARM workflows because there are no Linux ARM machines available for free, so the ARM builds need to be emulated with QEMU. This makes them exceedingly slow, and building all 5 packages in a single workflow hits a timeout (6 hours, I think). Splitting it in two (and only building 5 instead of 7 versions) makes it fast enough to avoid the timeout..
My plan was to wait until the packages are actually available on pypi (including the changes from #201) until I update the README, and then just directly update it on master |
Adds support for python and debian packages, as well as CI workflows for building and uploading the packages automatically when a release tag is pushed (the part with the automatic upload is not fully tested).
A CI run with python packages: https://github.com/kahypar/mt-kahypar/actions/runs/12160369824