I will hazard two guesses.
- You never tested your AppImage on a platform that didn’t have Qt pre-installed.
- It was never packaged “quite right.” This kind of goes hand-in-hand with 1.
I gave up on Qt being a stable, viable development tool quite some time ago. The definition of what is OpenSource shrinks by the nanosecond with Qt Company and the library is rife with compatibility issues between versions.
I’ve moved to CopperSpice which is a fork of the last OpenSource version of Qt, 4.8. It also has many changes and improvements. Most importantly it is not yet pre-installed on most Linux platforms so I miss very little. I just finished (yesterday) testing on all platforms a new release of my RedDiamond editor which has an AppImage.
I work from the .deb files I create for other projects. In the code tab you want to look at appimage-instructions.txt. and appimage-3-5-9.json. I have not yet updated the wiki for build instructions. You can get the two -dev -devel packages needed to build this one from here:
Pay particular attention to the comments and code at the top of main.cpp
You also need to pay extremely close attention to the postrun section of appimage-3-5-9.json
I went through a lot of pain identifying every file that was an external dependency for CopperSpice (which should be pretty close to your era Qt)
The mv statement is absolutely critical!
Almost every AppImage creator puts their binary in /usr/bin. Neither Qt nor CopperSpice will look in AppDir/usr/lib for their plugins. You have to hack your build specifically for AppImage adding a library path that exists within the AppImage as it is seen by the outside world or you munge your package like I did. By default both will look for the plugin directories at the same level as the binary, hence the mv statement.
So, without running your AppImage, here’s most likely what happened in order of probability.
-
The plugin directory wasn’t where your binary wanted so it found the system installed Qt plugin directory. That was in the lib64 path on Fedora (whatever RPM distro) and the newer stuff wanted things that weren’t installed.
-
You didn’t run ldd on your executable and all of its plugins prior to creating your package. This means you missed something, most likely a networking thing since your current package is gagging on curl. On Manjaro the current libcurl stuff is
Given the advanced age (Ubuntu 12) that you are porting up from I highly recommend you just jump ship to CopperSpice and thieve my AppImage stuff for RedDiamond. Qt is being abandoned by most embedded systems shops that I know of due to its can-o-worms licensing and open bug database of something like 22K right now.
Ooops! My bad! 30K
If you insist on sticking with Qt which is declining, then you have to ldd your binary where you built it for packaging. You then have to ldd every plugin you are going to bundle with it. Put the plugins in the directory where your bundled binary will look for them. Compare list of required libraries to list of things “assumed” to be in AppImage package and cp in all those items not on that list.
Note: You really need to ldd every library because, infuriatingly, many libraries require other libraries.