linuxdeploy-plugin-qt icon indicating copy to clipboard operation
linuxdeploy-plugin-qt copied to clipboard

Failing to create appimage due to qt plugin internal failures (on Github CI runners).

Open christianparpart opened this issue 3 years ago • 2 comments

For reference: https://github.com/contour-terminal/contour/actions/runs/3123684418/jobs/5066504531

I'm rather new to AppImage, please bare with me. But to me this looks like multiple issues?

[qt/stdout] Deploying shared library /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so (destination: /home/runner/work/contour/contour/build/AppDir/usr/plugins/xcbglintegrations/)
[qt/stderr] terminate called after throwing an instance of 'boost::filesystem::filesystem_error'
[qt/stderr]   what():  [qt/stdout] Deploying copyright files for file /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so 
[qt/stdout] Deploying dependencies for ELF file /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so 

And also further down:

[qt/stdout] DEBUG: File has been visited already: /lib/x86_64-linux-gnu/libdbus-1.so.3 
[qt/stdout] DEBUboost::filesystem::directory_iterator::construct: No such file or directory: "/usr/lib/x86_64-linux-gnu/qt5/plugins/mediaservice"
G: File has been visited already: /usr/lib/x86_64-linux-gnu/libXext.so.6 

Then finally ending the process by saying ERROR: Failed to run plugin: qt (exit code: 6).

I am not sure what exactly exit code 6 means nor which of the messages above is relevant for fixing it. Also, note, that on my local system using Docker I have got the AppImage to be created via Ubuntu 22.04 and Ubuntu 18.04, and Fedora natively. But I am failing on the Github Actions CI. On that Github Actions CI I sadly must use Ubuntu 18.04 runner due to backwards compatibility (glibc isn't backaged so it seems?), I am not sure what exactly the diff of that Github hosted 18.04 runner is and a stock ubuntu 18.04 docker image that might have caused this.

christianparpart avatar Sep 25 '22 21:09 christianparpart

The mediaservice plugin issue is fixed by linuxdeploy/linuxdeploy#115, which still needs to be merged.

Not sure what's up with the copyright files of libqxcb-egl-integration.so.

bjorn avatar Sep 27 '22 19:09 bjorn

I suppose this is related to linuxdeploy/linuxdeploy-plugin-qt#128.

TheAssassin avatar Sep 27 '22 20:09 TheAssassin

Hey guys. Do we have any updates here? Looks like the links @bjorn as well as @TheAssassin have mentioned are both merged now. What does this make to the state of this issue here?

christianparpart avatar Jun 04 '23 20:06 christianparpart

I just tried to rerun this, as I am trying to finally deploy my Qt application as an AppImage, and it still seems to fail with the following excerpt:

[qt/stdout] DEBUG: File has been visited already: /usr/lib/x86_64-linux-gnu/libgpg-error.so.0 
[qt/stdout] Deploying shared library /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so (destination: /home/runner/work/contour/contour/build/AppDir/usr/plugins/xcbglintegrations/)
[qt/stderr] terminate called after throwing an instance of 'std::filesystem::__cxx11::filesystem_error'
[qt/stderr]   what():  filesystem error: directory iterator cannot open directory: No such file or directory [/usr/lib/x86_64-linux-gnu/qt5/plugins/mediaservice]
[qt/stdout] Deploying copyright files for file /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so 
[qt/stdout] Deploying dependencies for ELF file /usr/lib/x86_64-linux-gnu/qt5/plugins/xcbglintegrations/libqxcb-egl-integration.so 

But since I am downloading the ...continuous...-URL to fetch AppImage linuxdeploy-tool as well as its qt-plugin, I must presume the bug still isn't fixed. Unless I am doing something terribly wrong.

christianparpart avatar Jun 04 '23 20:06 christianparpart

@christianparpart I think I linked the wrong issue up there, and actually meant to refer to https://github.com/linuxdeploy/linuxdeploy-plugin-qt/pull/115. However, that was actually specific to Qt 6, so it would of course not address that issue for Qt 5.

For Qt 5, I think you just need to make sure that the mediaservice plugins are installed on your system. On Ubuntu, this means installing libqt5multimedia5-plugins.

bjorn avatar Jun 05 '23 11:06 bjorn

I think that's a good idea. Arguably, the error message could be improved. But in general, the tool should always fail if it can't find required files. Better than creating a half-broken deployment.

TheAssassin avatar Jun 05 '23 11:06 TheAssassin

No response in the meantime. Closing for now. Please reopen and/or comment if the issue persists.

TheAssassin avatar Dec 10 '23 22:12 TheAssassin