tkashkin / GameHub

All your games in one place
https://tkashkin.github.io/projects/gamehub
GNU General Public License v3.0
2.25k stars 127 forks source link

Fails to run on Ubuntu 14.04 #81

Open probonopd opened 6 years ago

probonopd commented 6 years ago

Please compile on Ubuntu 14.04.

/lib/x86_64-linux-gnu/libgcc_s.so.1: version `GCC_7.0.0' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libwebkit2gtk-4.0.so.37)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libpng16.so.16)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.22' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libjavascriptcoregtk-4.0.so.18)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libjavascriptcoregtk-4.0.so.18)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libjavascriptcoregtk-4.0.so.18)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libicuuc.so.60)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libicui18n.so.60)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libgpg-error.so.0: no version information available (required by /run/firejail/appimage/.appimage-10031/usr/lib/libgcrypt.so.20)
/run/firejail/appimage/.appimage-10031/usr/bin/com.github.tkashkin.gamehub: /lib/x86_64-linux-gnu/libkeyutils.so.1: version `KEYUTILS_1.5' not found (required by /run/firejail/appimage/.appimage-10031/usr/lib/libkrb5.so.3)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libsystemd.so.0)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libsystemd.so.0)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libbsd.so.0)
/run/firejail/appimage/.appimage-10031/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-10031/usr/lib/libudev.so.1)

References:

neuromancer commented 6 years ago

Can we use appveyor to enable compilation and testing in Ubuntu 14.04 builds and offer its artifacts to download?

probonopd commented 6 years ago

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

tkashkin commented 6 years ago

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.

tkashkin commented 6 years ago

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

tkashkin commented 6 years ago

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:

probonopd commented 6 years ago

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

probonopd commented 5 years ago

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.

tkashkin commented 5 years ago

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

probonopd commented 5 years ago

Here is Inkscape, a Gtk+ application, compiled on bionic, running on a 7-year old Linux distribution:

51087938-af28fe80-1751-11e9-9db1-94faa8ebe725

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.

probonopd commented 5 years ago

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.

probonopd commented 5 years ago

Any chance this could be compiled on xenial rather than bionic?

tkashkin commented 5 years ago

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

probonopd commented 5 years ago

It does, thank you :+1: Are the non-xenial versions still needed at all?

tkashkin commented 5 years ago

Are the non-xenial versions still needed at all?

Yes:

probonopd commented 5 years ago

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.