ketiltrout / getdata

The GetData Project is the reference implementation of the Dirfile Standards, a filesystem-based, column-oriented database format for time-ordered binary data.
http://getdata.sourceforge.net/
GNU Lesser General Public License v2.1
4 stars 7 forks source link

Workflow for PyPI wheels #17

Open arahlin opened 1 month ago

arahlin commented 1 month ago

This PR builds wheels for Python versions 3.8 through 3.12, for many of the common Linux and OSX architectures using cibuildwheel. I hope you find this useful!

I've put this together within the constraints of the build system, so that the workflow is largely just using autotools to prepare everything except compiling the python package. I've also added a very minimal pyproject.toml file to enable the cibuildwheel framework to do its thing. Feel free to rearrange, add metadata, etc.

Each wheel is built against the oldest supported numpy version (https://pypi.org/project/oldest-supported-numpy/), then repaired such that libgetdata and any shared encoding libraries are bundled with the python module.

The publisher action will automatically upload a new release assuming you add this repo as a trusted publisher on PyPI in advance. I'm assuming you're not ready for a new release yet, so the workflow also uploads the wheels as artifacts with the action if you want to be able to inspect / test them without a release.

arahlin commented 1 month ago

After some thought and discussion with @sbenton, it probably makes the most sense to use --disable-modules and bake in all the encoding libraries into the wheel. I've updated things so that all but the slim and zzslim encodings are included. It looks like the slimdata library hasn't been updated since 2017, so might be ok to leave this one out?