Distributing Octave as an AppImage

While discussing the new nightly builds Kai has proposed to provide, we talked about distributing Octave for linux in binary form. AFAIR we talked about docker but we didn’t mention AppImage, which many software seems to have adopted.

Would this be something feasible to get mxe to populate an AppDir once it has built all dependencies?

1 Like

There are already

images for Octave. Out of curiosity and without being too critical or philosophical (as each system has it’s severe flaws), what would be the benefit of creating an AppImage?

AFAIK both flatpak and snap are for distributing released versions. The idea of AppImage here was about allowing users to test nightly builds, e.g. after the inclusion of a patch that is believed to fix a bug.

This sounds like a reasonable idea to me. And IIUC, we are most of the way there with MXE Octave native builds. The “only” thing missing might be to add the necessary scripts and to package everything to an AppImage:
Manual packaging — AppImage documentation

I’m not sure though how relocatable the native Linux builds with MXE Octave really are. In general, they should contain all necessary dependencies to run Octave.
I’ll be happy to test any patches that add an AppImage target to MXE Octave.

Would it be possible to distribute nightly builds using snap or flatpak? It might be better to do that instead of having to continue maintaining mxe-octave for Linux builds.

It might also be time to re-think mxe-octave more generally. I originally forked MXE because it didn’t support building DLLs. Then I also needed a way to build Octave and dependencies for older systems that had compilers and libraries that were too old to build current Octave versions. But are there any relevant systems now that can’t use snap or flatpak containers? If not, then maybe we could make our lives easier by stopping the development of mxe-octave for native builds. Similarly, maybe it would be best now to just use MXE to build Octave for Windows. Then we could share the work with the MXE project instead of duplicating it.

1 Like

Yes, I would like to do just that, but I may need some help getting that going.

The snap store has a channel called “edge” built specifically for that purpose, I would just need help getting a nightly or weekly build uploaded to that channel. I’m currently stalled on migrating the snap build from Travis to some other automatic build system.

For flatpak, I (or someone) would need to host a flatpak repository completely separate from flathub. By policy, flathub only supports “stable” and “beta” channels for a given program. So an edge build would need to be self hosted somewhere else.

If you would like to try adapting the buildbot farm to actually do one or more of these builds, I’d be happy to work with you getting the tools and commands set up to do that.

I’m actively working on this now. I have a flatpak recipe to build Octave from hg, I just need to finish up some details to turn it into a working repository that others can install from. Snap will be next.

1 Like