Closed ghost closed 4 years ago
That's because Debian 10 is required (see AppImage compatibility). @probonopd built STA on old Ubuntu 16.04 so his AppImage is compatible with old systems but uses old libraries.
I think of extending AppImage compatibility later by building STA on Ubuntu xenial manually building dependencies.
I think of extending my AppImage compatibility later by building STA
Please, lets build one more AppImage (ScanTailor_Advanced-oldstable-x86_64.AppImage
) for older distros (Ubuntu 16.04, Debian 9.x)
Our recommendation is to always build on the oldest systems your users might be using, but no newer than the oldest still-supported Ubuntu LTS release, which is xenial at this time.
ScanTailor_Advanced-x86_64.AppImage
How is it produced? Using a service like Travis CI or the Open Build Service would be preferable over local builds made on some developer machine because a) one could exactly see and replicate how it is built, and b) it would make it easier to build on older systems
@probonopd as I said I don't want to use old libraries. What I want is to use Qt >=5.12 LTS and I need the jpeg library of version 9c.
Why not kill two birds with one stone by installing the oldest still-supported Ubuntu LTS on my local machine and build dependencies of fresh versions (libz, libpng, Qt, Boost, ...) from sources manually, then build the application against those and pack everything into AppImage? I don't think Travis CI can handle such requirements. ;)
You could, for example, use Qt 5.12.3 from https://launchpad.net/~beineri/+archive/ubuntu/opt-qt-5.12.3-xenial on Ubuntu xenial. Since a subset of Qt will be bundled with your application, the resulting AppImage should work fine for xenial and later distributions.
Of course, this will only work if your application has no build-time dependencies on newer versions of libz, libpng, Boost,... than what comes with xenial. If it does, you need to either change your source code so that an older version of the respective library becomes sufficient for compiling, or compile the dependency in question from source and bundle it privately with your application. For very common libraries that are expected to come with every Linux distribution we don't recommend the latter.
So the pragmatic approach would be to copy-and-paste https://github.com/probonopd/linuxdeployqt/#using-linuxdeployqt-with-travis-ci but change "trusty" to "xenial" and insert the Qt 5.12.3 PPA as written above, and see whether it compiles.
@probonopd, I've built AppImage on Ubuntu 16 xenial (as you recommend) with manually building dependencies with gcc-9 (Boost, Qt + gtk2 theme plugin, libjpeg etc.) and everything works. But! When I launched that AppImage on openSuse which uses KDE, native theme doesn't work and the application just uses built-in Qt Fusion theme with the system palette instead. Your AppImage does't support native KDE theme as well, i. e. the same behavior. But with the AppImage that I built on openSuse native KDE theme works well. And they all don't support LXQt native theme. As I understand an AppImage with Qt supports only the native themes of the system on which it has been built (+ gnome by using qt gtk2 theme plugin). Correct me if I'm wrong.
KDE theming is a bit a black box for me still. I'd say we should be happy if we now have an AppImage that works for everyone, even tough the theming may be wrong. Possibly some plugin for KDE theming would need to be bundled inside the AppImage to make KDE theming work everywhere, but I have not investigated this yet.
OS: Debian 9.x (
x86_64
)I just try to execute
ScanTailor_Advanced-x86_64.AppImage
version2019.8.16_EA
But it can't run:
I has no such issue with @probonopd's build: