Open probonopd opened 6 years ago
Can we use appveyor to enable compilation and testing in Ubuntu 14.04 builds and offer its artifacts to download?
Sure, why not. I don't have experience with AppVeyor but I have done this many times with the similar Travis CI and GitLab CI services.
Reference: https://github.com/probonopd/linuxdeployqt#using-linuxdeployqt-with-travis-ci
It's possible to build it in Ubuntu 16.04 (right now there are couple of places to fix), but UI will be slightly broken due to old GTK.
I haven't even tested it on 14.04, but I'm sure there's a lot of changes to make it build on such an old stack.
Is there a way to build with older compiler and libc
, but use and bundle not so outdated GTK stack?
Btw I believe most (if not all) potential users of this app have at least a distro from 16.04 era.
@probonopd Will https://github.com/darealshinji/AppImageKit-checkrt help?
It now builds on 16.04 successfully as there were already defines to support GTK 3.18. Resulting AppImage seems to work fine on 18.04.
However I'm not sure if it will be so easy to support GTK 3.10 as there were probably way more changes between 3.10 and 3.18 than between 3.18 and 3.22.
Also UI relies on some features introduced in GTK 3.22 and looks slightly wrong on GTK 3.18.
Another problem of bundling GTK 3.18 is that many of the current GTK themes have dropped support for GTK < 3.20. It can be "fixed" by forcing Adwaita, but that means app will not integrate well in user's environment.
I have managed to bundle GTK 3.18, but use system GTK if it's >= 3.22 (using bash script based on one of the checkrt
forks).
Image is built on Ubuntu 16.04, seems to work in a clean 16.04 VM and on 18.04 (elementary OS). It uses system GTK on 18.04 so themes don't break.
@probonopd I'm sure there's no way to support 14.04, unless there's either a way to build against GTK 3.18+ on it or to downgrade libc
on 16.04 or to somehow patch all the libs to link to older libc
symbols. checkrt
approach doesn't work for libc
.
Neither of that seems to be possible. I'm not even talking about what will break, about compilers and about other dependencies besides/of GTK itself.
Guess there's no way to get app listed on appimage.github.io if it doesn't support ancient distros? :confused:
Guess there's no way to get app listed on appimage.github.io if it doesn't support ancient distros?
Not "ancient" but all still-supported Ubuntu LTS releases, yes.
I always wonder why developers don't develop against those in the first place. Would save a lot of headaches on all sides ;-)
Also fails to run on my local Xubuntu 16.04 system. Not everyone is on bionic or later.
There may be a workaround; not ideal but working: Making an AppImage that bundles everything, down to glibc and ld-linux. so. It may be around 7 MB or so larger, but at least it would run. Let me know if you are interested.
@probonopd I have disabled xenial builds because dependencies broke after some updates and I haven't been able to find working versions: https://ci.appveyor.com/project/tkashkin/gamehub/builds/21177693/job/pr0tm57bp3x5773g#L1750
Latest successful xenial build: 0.12.0-4.
There may be a workaround; not ideal but working: Making an AppImage that bundles everything, down to glibc and ld-linux. so. It may be around 7 MB or so larger, but at least it would run. Let me know if you are interested.
I have tried to do something similar, but haven't been able to get it to work. If there's a way to make it work, I'm interested.
Here is Inkscape, a Gtk+ application, compiled on bionic, running on a 7-year old Linux distribution:
And here is how it's made. Key is to bundle all of glibc as well as all libraries, and use a custom AppRun
:
Please let me know if you are running into issues. linuxdeployqt -unsupported-bundle-everything
is still relatively new.
With the upcoming EOL of trusty, I thought I'd give this another try, this time on xenial. There I am getting:
[AppRun ] AppDir: /run/firejail/appimage/.appimage-8409
[CheckRT] Checking library versions
[CheckRT] libstdc++.so.6: sys: GLIBCXX_3.4.21; app: GLIBCXX_3.4.25
[CheckRT] libgcc_s.so.1: sys: GCC_4.8.0; app: GCC_7.0.0
[CheckRT] LD_LIBRARY_PATH: /run/firejail/appimage/.appimage-8409/usr/optlib/libgcc_s.so.1:/run/firejail/appimage/.appimage-8409/usr/optlib/libstdc++.so.6::/run/firejail/appimage/.appimage-8409/usr/lib/x86_64-linux-gnu/webkit2gtk-4.0:/run/firejail/appimage/.appimage-8409/usr/lib:
[CheckRT] LD_PRELOAD: /run/firejail/appimage/.appimage-8409/usr/optlib/exec.so:
[AppRun ] Starting GameHub
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libpng16.so.16)
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libsystemd.so.0)
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.27' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libsystemd.so.0)
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libudev.so.1)
/run/firejail/appimage/.appimage-8409/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.25' not found (required by /run/firejail/appimage/.appimage-8409/usr/lib/libbsd.so.0)
Parent pid 8409, child pid 8414
Xenial has GLIBC 2.23. This needs 2.27. So this does not even run on xenial. What a pity.
Any chance this could be compiled on xenial rather than bionic?
@probonopd try https://github.com/tkashkin/GameHub/releases/download/0.14.2-1-master/GameHub-xenial-0.14.2-1-master-be55ac0.AppImage. It seems to be working.
It does, thank you :+1: Are the non-xenial versions still needed at all?
Are the non-xenial versions still needed at all?
Yes:
bionic
.
To build it on xenial
I had to install newer valac
and meson
, manually fix gee-0.8.vapi
to build on newer Vala and comment a few things that depend on newer glib
in current code (fixable with defines).
I will not try to setup CI but I can try to build master
releases manually.bionic
versions are built against GTK+ 3.22 which introduces some useful UI things.bionic
has libmanette
in repos which is used to implement controller support.But then you need to maintain 2 different builds. My recommendation is always to build against the oldest still-supported LTS release; it will run on newer target systems as well. But not the other way around.
Please compile on Ubuntu 14.04.
References: