feat: Implement cross-platform executable compilation and distribution (WIP)
This work-in-progress pull request aims to transform exo into an easily installable executable for multiple platforms, streamlining the distribution process. Previous issue #334 was incorrectly closed by Github automatically.
Objectives:
- [x] Create a comprehensive PyInstaller spec file to bundle all required dependencies
- [x] Implement CI/CD workflows for automated executable builds
- [x] Ensure mac builds work
- [ ] Ensure linux builds work
- [ ] Ensure windows builds work
- [ ] Conduct comprehensive cross-platform testing to ensure complete functionality
- [ ] Package the executable in an installation-ready format
- [x] Develop scripts for submission to Homebrew
Key improvements:
- Simplified installation process for end-users
- Broader platform compatibility
- Automated build and distribution pipeline
Related #302
interesting approach! Just FYI, this is being worked on in https://github.com/exo-explore/exo/pull/354. As far as I can tell (from looking at the package you generated in your releases on GitHub), this creates an executable along with a directory of supporting libraries needed to run it. PR 354 allows for a single file to be generated.
interesting approach! Just FYI, this is being worked on in #354. As far as I can tell (from looking at the package you generated in your releases on GitHub), this creates an executable along with a directory of supporting libraries needed to run it. PR 354 allows for a single file to be generated.
I'm currently developing all of those changes locally, the disadvantage with generating a single file executable is quite large cold start times. It's definitely an option I have played with but on each execution all libraries need to be unpacked for it to run causing it to take a while to load up.
I can probably contribute at least an aur package to this lol
Might be worth making it a bit more client-servery though, I would like for this to be able to sanely run under systemd at least
Might be worth making it a bit more client-servery though, I would like for this to be able to sanely run under systemd at least
this would also be important if we were to make an optional frontend app as well.