Hi @probono & @azubieta I’ve used the appimagecrafers files with mixed, and interesting, success…
I’ve included links to the appimages, the go code, and straces & stderrs below.
To summarize what has gone before and where we are now:
I will refer to these #'s (and all the files also use them):
0 : standard appimage deploy, just using “deploy” flag.
1 : first self-contained (-s deploy) appimage
2 : Same as 1, this time including libsqlite lib (runtime loaded)
3 : using azubieta’s .env, AppRun, and hook lib (-s -l deploy)
My test beds are (all from April 2020) kubuntu 20.04 (dev machine), and VM’s of OpenSuse Leap 15.2, nixos, Ubuntu 20.04, manjaro, and fedora.v32.
0 : worked in all beds except OpenSuse, and this was due to its using glibc 2.26, while my program was built against glibc 2.31. (note: in nixos appimages are run with appimage-run program from the nix-store: “appimage-run /path/appimage”)
1 (and 2) : now worked in OpenSuse, but stopped working in nixos. Nixos gives permission denied messages re: ld linux file (once this is worked out I intend to file an issue with nixos). At this time probono also tested 1 in Ubuntu 18 and 16, both worked.
3 : Now it is similar to 0, everything works except, this time, both OpenSuse and nixos fail with core dumps. This makes me suspect the wrong glibc is being used, but I’m not sure. So I doubt very much that 3 will run on 18’s or 16’s. One interesting thing is that the stderrs of the working systems is much cleaner. There is a problem (at least for my program) in this version too: the process table lists two “commandoo”'s, one normal and one commandoo.AppImage. This messes with my program because it inspects the process list to determine if another commandoo is already running (more on this and how it may affect you below).
The process I used:
I added a func in appdirtool.go to gather all the paths that were previously being set by probono’s AppRun script (this is in the go snippet file). On “-s -l deploy” these were written to the .env file. azubieta’s AppRun and libapprun_hooks.so were then copied to the AppDir, and then appimage tool was run to generate the AppImage. I did not package the appimagetool executable into an AppImage, I just used the freshly compiled local copy of it, pulling the needed executables (patchelf, etc.) from probonos appimagetool 556 buld…
The appimagecrafters AppRun and hooks lib are “fresh”, they were downloaded a couple days ago.
https://timepirate.org/downloads/testing/go-snippet.txt
https://timepirate.org/downloads/testing/commandoo0.AppImage
https://timepirate.org/downloads/testing/commandoo1.AppImage
https://timepirate.org/downloads/testing/commandoo2.AppImage
https://timepirate.org/downloads/testing/commandoo3.AppImage
https://timepirate.org/downloads/testing/Strace_Stderr.zip
TIP 1: It will not be (immediately) possible to run 3 because of the process list problem I mentioned above. By default commandoo will not run if another copy is open. To solve this open 1 or 2 first. Then go to Options (lower right), and check off “allow multiple copies”. They all use the same settings file and so after this, 3 can be run (it will complain, but you can just say yes).
TIP 2: commandoo is a CLI program, so it is easy to get the running environment. After you first start up a default db is installed (.config/commandoo). While the command list is focused press ctrl-shift f, type printenv, enter. Then type alt-r to run the command line.
Please keep in mind that these copies of commandoo are intermediate versions and not released versions, so don’t give them out to anyone, and just delete them when you’ve gotten out of them all that you need. I will be deleting them when everyone has gotten what they want. The current release version, if you want it, can be downloaded from https://timepirate.org/downloads.html