Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

appimage isn't working and trouble building on debian #60

Closed
jberryman opened this issue Nov 12, 2022 · 5 comments
Closed

appimage isn't working and trouble building on debian #60

jberryman opened this issue Nov 12, 2022 · 5 comments

Comments

@jberryman
Copy link

I don't have experience working with Qt, nor C++ and need some better guidance about how to build from source. (I submitted a report for the crash in the gui from the appimage)

This used to work for me : #17
...but now on debian bookworm and with the 3.1 tag I get some errors building (below)

I tried doing a sudo apt install libqt6svg6-dev qt6-base-dev qt6-declarative-dev, but that didn't seem to change anything

failed build output: https://gist.github.com/jberryman/9073bc074993e318faa47c24e7db4b05

Thanks!

@timangus
Copy link
Contributor

Could you perhaps give this build a try?: https://graphia.dev/Linux%20AppImage/Graphia-dev-2517-gb5da2228d-ubuntu2204.tar.gz

TL;DR: Distributing binary applications for Linux is hard.

Looking at your crash stack dumps, it looks like libgtk (bundled in the AppImage, originally from Ubuntu 20.04) is making a call to glibc and the crash is occurring in there for some reason, most likely because of some binary incompatibility between glibc 2.31 (from Ubuntu 20.04) and glibc on Debian Bookworm (probably .35/.36). In theory this should be fine, since newer versions of glibc are supposed to be binary compatible with libraries linked against older versions. The above linked build is made using Ubuntu 22.04, which uses glibc 2.35, so the difference to Debian Bookworm is at least minimised to some extent and that is likely to minimise the incompatibility. Now, I could make 22.04 the default build environment, but then older Linux installations (with glibc < 2.35) will stop working. It's all a compromise basically. The other option (which a lot of binary applications take) is essentially to make an enormous static build to minimise the incompatibility, but doing this has bad interactions with dynamically loading libraries otherwise (which Graphia needs to do for its plugin facility). There is no perfect solution.

If the above build doesn't work, the other thing you could try is to extract the AppImage (Graphia.AppImage --appimage-extract), then copy the libraries that Graphia uses from your local system (most likely in /usr/lib/x86_64-linux-gnu/), to its /usr/lib, then run AppRun.

The build failure looks like it's because it's trying to build against Qt 5, whereas Graphia now uses Qt 6(.3.2). I've no idea how Debian deals with having 5 and 6 installed simultaneously, probably you need to change something in /etc/default or some such. I do need to get around to improving the build instructions though...

@jberryman
Copy link
Author

Thanks!

Could you perhaps give this build a try?: https://graphia.dev/Linux%20AppImage/Graphia-dev-2517-gb5da2228d-ubuntu2204.tar.gz

This seems to work! although for some reason I can't zoom with the mouse wheel it seems (maybe an unrelated issue with this build?)... otherwise the tutorial graph seems to all work

For now I've managed to get my docker container working for 3.1, but I will definitely circle back here when I can

@timangus
Copy link
Contributor

Good. Perhaps what I need to do is offer two Linux builds. Ugh.

@timangus
Copy link
Contributor

I had some time to look at this is bit more closely and, long story short, I drew the wrong conclusions. With the limited crash data available I had assumed that some libc binary incompatibility was the underlying cause. However having now installed Debian in a VM and reproduced the crash with debug symbols etc., it's actually an assert that was being hit in GTK that was aborting the whole application (pretty shitty failure mode there, GTK, but whatever). Turns out that GTK was not fully/correctly deployed within the AppImage. Once I remedied this, it all appears to work. The reason it worked with the Ubuntu 22.04 based build is probably (I'm speculating) because GTK improved the aforementioned failure mode, and not at all related to the version of libc involved. I've now released Graphia 3.2, which includes this fix, I expect it'll work better for you.

As for the mouse wheel, I'm assuming you have also been running in a virtualised environment of some sort, and that issue #61 may be the cause there. Note this will only occur in the upcoming dev versions, not the 3.x series.

@jberryman
Copy link
Author

Amazing, I really appreciate your efforts on this!

As for the mouse wheel, I'm assuming you have also been running in a virtualised environment of some sort, and that issue #61 may be the cause there. Note this will only occur in the upcoming dev versions, not the 3.x series.

I was running as QT_QPA_PLATFORM=xcb ./Graphia.AppImage under wayland… Which I confess I'm not sure what that does

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants