4lex4 / scantailor-advanced

ScanTailor Advanced is the version that merges the features of the ScanTailor Featured and ScanTailor Enhanced versions, brings new ones and fixes.
GNU General Public License v3.0
1.16k stars 128 forks source link

AppImage: 'ZLIB_1.2.9' not found #69

Closed ghost closed 4 years ago

ghost commented 5 years ago

OS: Debian 9.x (x86_64)

I just try to execute ScanTailor_Advanced-x86_64.AppImage version 2019.8.16_EA

But it can't run:

$ ./ScanTailor*.AppImage
./ScanTailor_Advanced-x86_64.AppImage: /lib/x86_64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /var/tmp/.mount_ScanTax3xa6c/usr/bin/../lib/libpng16.so.16)

I has no such issue with @probonopd's build:

4lex4 commented 5 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.

ghost commented 5 years ago

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)

probonopd commented 5 years ago

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.

probonopd commented 5 years ago

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

4lex4 commented 5 years ago

@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. ;)

probonopd commented 5 years ago

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.

4lex4 commented 5 years ago

@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.

probonopd commented 5 years ago

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.