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

Github Actions and PyPI Wheels #22

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

Conversation

dilawar
Copy link

@dilawar dilawar commented Apr 13, 2021

This PR contains a lot of changes.

  • Added cmake based build systems.
  • Builds on Windows, Linux and OSX.
  • Added Github Actions to generate wheels and upload to PyPi.

I'd be happy to handover the pypi packages if you are interested.

Dilawar Singh and others added 23 commits April 12, 2021 21:18
commit ddec84d
Author: Dilawar Singh <[email protected]>
Date:   Mon Apr 12 21:17:20 2021 +0530

    some more fixes to wheel pipeline.

commit 081cd0c
Author: Dilawar Singh <[email protected]>
Date:   Mon Apr 12 20:21:47 2021 +0530

    Added ci pipeline.

commit 39fc514
Author: Dilawar Singh <[email protected]>
Date:   Mon Apr 12 20:09:12 2021 +0530

    wheel is generated successfully.
commit b99ed84a26162c700741f3beef4341f4ab105901
Author: Dilawar Singh <[email protected]>
Date:   Tue Apr 13 01:19:39 2021 +0530

    testing: github actions.

commit 46b1e496ec28109f5a1b11bcc1bb1344a7729ab3
Author: Dilawar Singh <[email protected]>
Date:   Mon Apr 12 22:36:54 2021 +0530

    some tweaks.

local wheel build in docker is working fine.
__version__ is available in the module itself.
@joachimwolff
Copy link
Collaborator

joachimwolff commented May 3, 2021

Thanks a lot for your contribution; that is really awesome!

At the moment we have minimal time, therefore this late reply. Also, I fear that it will take a while (actually maybe a few weeks) until we have reviewed it and discussed a few things you propose here.

What I recognized we need to discuss:

  • We don't support Windows. We don't test for this platform, nor do we develop on it or use it in production. All workflows and testing are based on Linux as the main software platform, simply because more or less all HPC/Cluster environments run on Linux. MacOS is only supported because many biomedical uses the Mac as a working device, and the overhead to support it is very limited.
  • You are using techniques where I don't know if we want to support it, for example, brew on macOS. Our main package manager is Conda, and we don't want to change this. A few years back, I used brew on my Mac (maybe that was 2012 - 2014), and everything you wanted to install had to be compiled on the system. That was a very unpleasant experience; it simply took way too long. If this is still the case, I don't want to have this for our users, mainly biomedical people with no computer science background.
  • PyPI: The reason we don't support this package manager is that certain dependencies are not resolvable with PyPI and the users need to take care of it on their own. The last time I checked, dependencies like boost c++ eigen c++have not been available, and I have not recognized that this changed. Again, our user base are biomedical people with no computer science background.

Maybe some of the things have changed in the meantime, and I am open to discuss the points listed!

Best,

Joachim

@dilawar
Copy link
Author

dilawar commented May 3, 2021

Hi Joachim,

Thanks for the response. There is no hurry. Take your time.

I did this when a colleague was struggling to install https://github.com/deeptools/HiCExplorer which is available only via conda because of two of its dependencies (one is kr-balancing) are available via conda only. So I created pip installable packages (binary wheels) for both of them.

This PR builds binary wheels for amd64 architecture i.e., one can simply do python3 -m pip install kr-balancing on Linux, OSX and Windows without any need to build anything on end-user machine (more here https://pythonwheels.com/, and https://www.python.org/dev/peps/pep-0571/).

On OSX, brew is used to install dependencies to build the wheel (homebrew these days install pre-compiled binaries for most packages). I am happy to drop Windows support: I don't use it. The template I use to generate work on Windows as well.

At the end of the day, the purpose is to create a portable binary python package for amd64 architecture for almost all linuxes, OSX and optionally Windows.

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