simcoupe icon indicating copy to clipboard operation
simcoupe copied to clipboard

Create a Linux AppImage release

Open leonstyhre opened this issue 3 years ago • 5 comments

Would it be possible to release an AppImage of SimCoupé? This is especially important on the Steam Deck but is also on other operating systems where SimCoupé is not available.

Thanks!

leonstyhre avatar Jul 12 '22 18:07 leonstyhre

I've had a quick look into this and it doesn't look like it should be too difficult. It seems to be just another container format, which should wrap up the existing file structure that goes into other packages. It might need a tweak of the resource path at most.

I'll have a proper look over this soon...

simonowen avatar Jul 13 '22 22:07 simonowen

Yes AppImages are very easy to work with, just make sure to build on a bit older OS to provide maximum compatibility. This is especially important for glibc. I build on Ubuntu 20.04 LTS which provides good compatibility across a number of operating systems including SteamOS/Steam Deck.

If it's in any way helpful you can see the following script for how I create the AppImage for ES-DE:

https://gitlab.com/es-de/emulationstation-de/-/blob/master/tools/create_AppImage.sh

leonstyhre avatar Jul 14 '22 15:07 leonstyhre

The official Linux releases are built (by package/make_linux_release.sh) on Ubuntu 20.04 LTS with care to statically link most libraries. I made sure it ran on a few live CDs, so it should be in reasonably good shape to go in an AppImage container.

The resources are usually read from <install_root>/share/simcoupe, but if that's a problem for AppImage I'll just move them next to the executable, where they should be found too. I should perhaps create a flat archive release for Linux too, taking advantage of that.

simonowen avatar Jul 14 '22 15:07 simonowen

The internal directories can be a bit tricky with AppImages, I had to do some somehow ugly symlinks inside the AppImage directory structure to make it work but it's nothing that is visible to the user anyway and it's working reliably.

As for static linking and such that's a nice thing to do, but linuxdeploy will take care of bundling dependencies with the AppImage so normally you don't need to think too much about static linking when packaging stuff this way. It does cause quite big files though which is the drawback of this package format.

Also be aware that some newer distributions like Ubuntu 22.04 can't run AppImages by default as libfuse2 is missing. Just installing this library from the repository resolves the problem. I think the AppImage developer are working on a solution but it's not available yet.

leonstyhre avatar Jul 14 '22 16:07 leonstyhre

Btw, please let me know when you have decided on the AppImage filename so that I can add it to the ES-DE configuration before I make the 1.2.6 release in a couple of weeks or so!

leonstyhre avatar Jul 14 '22 16:07 leonstyhre