PROTOTYPE: Add a target to build a Linux appimage for an instance.#70
PROTOTYPE: Add a target to build a Linux appimage for an instance.#70iamleeg wants to merge 2 commits into
Conversation
WARNING: very prototypical! Signed-off-by: Graham Lee <grahamlee@acm.org>
Signed-off-by: Graham Lee <grahamlee@acm.org>
|
Sorry, I don't quite understand the intent of this change. GNUstep already has the standalone file system layout, which could be used for this purpose. In which regard is your approach more useful to a user? |
|
@fredkiefer the standalone layout would be a good way to solve a large part - but not all - of the problem here, and maybe a better way to do this is to build a script that installs each library into the standalone layout, then the app, then all the other dependencies, then build the AppImage. The overall goal is to build an AppImage: a single file that contains the app, and all of its dependencies, that would run on any Linux (where the glibc is compatible with those dependencies; although guix goes further and packages everything in the AppImage). That means not just the GNUstep libs and tools, but |
This makefile bundles a GNUstep app, its libraries (base, gui, back, libobjc, and anything else it links), the helper tools (gdnc, gdomap, gpbs, make_services), and a GNUstep.conf file into an AppRun folder and uses that to make an AppImage. That app image is reusable on any Linux with a compatible glibc, Xorg, and the same CPU architecture. Here's EasyDiff, built on Debian 13 (with gcc, gobjc, and latest GNUstep libs from master branches) and running on Ubuntu 24.04 (which doesn't have GNUstep installed):
The system where you run
make appimageneeds to haveappimagetoolandlddinstalled, in addition to working GNUstep.I think there's a lot of caveats here, that the maintainers need to think through to decide how to support this properly. You might even decide that the best way to do this is to have a separate tool that lives outside GNUstep-make. Here's a list of the things I thought:
Generative AI disclosure: I used the pi coding assistant and the open-weights Gemma4 31B model from DeepMind to help me understand GNUstep-make, and to debug many of the runtime issues I encountered.