Adonthell - Waste's Edge AppImage ... and some comments

I’ve packaged the latest release of my project as an AppImage, and also thought I’d give some feedback:

http://download.savannah.gnu.org/releases/adonthell/wastesedge-0.3.6-x86_64-linux.tar.gz

Apologies for wrapping it in a tarball, but I also wanted the distribution to include the manual, and that seemed the easiest way to accomplish that. One benefit I also see in this is that it keeps the executable bit that way, so the step of extracting replaces the step of making the file executable, which seems an acceptable trade-off to me.

Now to the recipe, or in my case recipes, as the AppImage is actually comprised of two separate packages, one providing the Adonthell RPG engine, the other the Waste’s Edge game data. Since there are no ready made binaries for either, I wrote scripts that wrap the standard configure, make, make install steps to populate and finalize the AppImage:

http://git.savannah.gnu.org/cgit/adonthell.git/tree/make_linux_appimg.sh
http:/ /git.savannah.gnu.org/cgit/adonthell/adonthell-wastesedge.git/tree/make_linux_appimg.sh

I used the same technique to generate OSX and Windows packages, so it was mostly an exercise in copy and paste.

There is just one bit of the process for which I have not found a satisfying solution: since Adonthell is embedding Python, i.e. it’s linked to libpython.so, and Waste’s Edge contains quite a few Python scripts that rely on the Python standard library to be present in a matching version, I had no alternative but to include a more or less complete Python environment in the AppImage. (It’s the same issue on Windows, so not really a problem with AppImages per se). The best I could come up with is a combination of virtualenv and modulefinder to include what is really needed without the bloat of a complete Python installation. Wondering if somebody has found better ways to go about this, though.

Anyway, long story short, I really like the approach taken by AppImage. The great advantage I see over solutions such as Snap or Flatpak is that no runtime is required on the users side. The creation process is simple enough, and the resulting, self-mounting image is quite elegant :-).

So thanks a lot for this great little piece of technology.

All the best,

Kai

Hi Kai, thanks for creating the Adonthell AppImage and for your feedback.

Your AppImage instantly runs on Ubuntu 16.04; didn’t test other distributions so far but am sure you have.

Looks like you are fully aware that wrapping it in a tarball is not the best thing to do in my opinion. Especially with large AppImages, it adds time to unpack, and complicates the handling. With some things that are forthcoming, such as an optional AppImage daemon for sandboxing and desktop integration, discoverability of upstream-provided AppImages in web app stores and in-distribution app centers, wrapping the AppImage inside an archive will be penalized even more.

What system do you compile this on? I recommend CentOS 6 or debian oldstable, so that the resulting binaries are most compatible with not just the most recent target systems.

I recommend bundling a private copy of Python in the AppImage. If you are that concerned about size you could profile which .py files are actually needed to run your particular app, but generally it’s probably not worth the hassle.

About bundling the manual, you could make it accessible from inside the app.

Yes, AppImage is all about simplicity.

Also have a look at the next generation which I have posted about here.

I see your point (and yes, I was aware of your recommendation against the tarball). I’ll see if I can come up with a better solution in the future, but after spending already more time on the whole project than initially planned, I just wanted to have it out the door and be done with it :-). But having the manual open from within the game sounds like a good idea and would remove the need for the tarball.

Ubuntu 14.04, as that’s what I head readily available. I then tested with a SuSE 10.2 live image in Virtualbox and also a fairly pristine installation of Ubuntu 16.04.

What I’d actually would love to have is something similar to this:
https://docs.python.org/3/using/windows.html#embedded-distribution
I did not sink enough time into the matter to see if such a Python distribution could be compiled for something other than Windows, and what steps it would take. Haven’t compiled my own Python since version 2.4.

As for size, I agree that it does not really matter these days, but then I do think that we’re way to careless with the computing resources available. So simply including a whole lot of Python-related stuff that is not strictly required makes me itchy :-).

[quote=“probono, post:2, topic:72, full:true”]Also have a look at the next generation which I have posted about here.
[/quote]
I like the idea of embedding a signature in the AppImage itself. Need to give that a try when I have a bit of time!