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

Python and debian packages #203

Open
wants to merge 31 commits into
base: master
Choose a base branch
from
Open

Python and debian packages #203

wants to merge 31 commits into from

Conversation

N-Maas
Copy link
Collaborator

@N-Maas N-Maas commented Jan 10, 2025

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

Copy link
Member

@larsgottesbueren larsgottesbueren left a 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)
Copy link
Member

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?

@N-Maas
Copy link
Collaborator Author

N-Maas commented Jan 13, 2025

Why are two arm packages needed for python?

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..

Please add a short section to the README for users that they can now install via package managers, with an example.

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants