Script to provide pre-compiled binaries, built by GitHub actions, for linux/mac/windows #218
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is still very preliminary, but I thought I would send a PR to start discussing it.
I tried to find a way for users to avoid compilation, and to simply download binaries for a (small) list of projects. The biggest use case are the template models : That way people can use them and simply use PhysiCell Studio to build their model.
The binaries are build by GitHub actions, and are stored as release assets for each release. Then for users, they just need to run a python script, which will basically do the equivalent of make ; make. Meaning that the binary is ready, the config files are there, and if they want to add custom modules and recompile, it works. This script could later be integrated into PhysiCell Studio.
A few remarks about each OS :
On linux, it's relatively easy. The Makefile has to be modified to have static libopenmp, but nothing too ugly.
On macos, I'm building universal binaries (amd64 and arm64 compatible). One annoying issue here is that by default, macos will block downloaded binaries, so you have to allow them in the privacy and security settings. Also, sometimes the build fails, like 1/4 of the time. Not sure why yet, but just relaunching the job fixes it. On some machines (well, actually just one I know of), the binary runs via bash, but not via PhysiCell studio. And compiling works.
On windows, there are three dlls that I couldn't include in the binary, but that can be put in the same folder as the binary and it works. So I added a script to download these dlls. Not sure exactly how it works for license, but we are not providing PhysiCell with them, we just provide a way for the user to download them when needed. I probably should add their license somewhere in this case. Please don't sue me.
I'm including an example here with PhysiBoSS cell lines sample project, but I can quickly add another example if needed.
What do you think ?