spirit-code / spirit

Atomistic Spin Simulation Framework
http://spirit-code.github.io
MIT License
117 stars 52 forks source link

Add binaries to releases #511

Open GPMueller opened 5 years ago

GPMueller commented 5 years ago

Ideally the CIs should add binary artifacts to the GitHub releases automatically. I believe there is a way of doing this, but testing is of course extremely limited.

Core library

The .so, .dylib and .dll could be easily added to each GitHub release, enabling anyone who does not want to build the code to still use e.g. the Python bindings outside of the pip package -- although, why would anyone want to do this?

Qt GUI

This would be most useful, in order for people to get the application running without any effort. For Windows, a zip with the executable and dll's would do fine and for OSX, a .App would be best. I don't know if a zip could work for Linux - maybe one can edit the rpath of the executable to make it look in its own directory before system directories?

qt-charts is under GPL-v3, meaning that distribution of binaries underlies some constraints. According to this SO post, there might not even be the need to license the GUI code under GPL I am not sure how the requirement of "make original sources available" should be met and if it actually needs to be met since it is publicly available. Maybe forking the Qt repos to the spirit-code group, with a note about this in the GUI license would be fine?

Use Nanogui instead?

The more permissive license and significantly easier setup process (one would not have to install Qt to build the Spirit GUI anymore) would be big benefits. We could immediately release binaries without license issues. The downside would be the need to rewrite all functionality of the current GUI.

GPMueller commented 3 years ago

This could be implemented with GH actions once the feature-imgui branch has been merged.

Note that the MIT and other licenses of the thirdparty libraries would still need to be added to these releases. This could be done by having CMake create headers containing the licenses as strings and adding a license viewing window to the GUI. Otherwise, they would have to be bundled into the corresponding zip files.

What should be contained in each release bundle (zip) for the platforms? Options include:

GPMueller commented 3 years ago

First steps implemented with 474fa90ffd2a29cefcd9479f763c83821782dc7c and 6d4286daba211ba0cc50d942d022b90e79b9ad43 on branch feature-imgui.