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

bundle qt platform plugins #602

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open

Conversation

lievenhey
Copy link
Contributor

this gives the user more leeway to use the appimage closes: 554

@lievenhey lievenhey linked an issue Feb 6, 2024 that may be closed by this pull request
@lievenhey
Copy link
Contributor Author

Are there some more platforms that should be bundled?
Currently I have:

  • xcb (defaut)
  • offscreen
  • wayland (experimental)

I guess vnc might be an option

@lievenhey lievenhey force-pushed the bundle-platform-plugins branch 4 times, most recently from f3fbb6b to a7aba6f Compare February 6, 2024 14:24
@lievenhey
Copy link
Contributor Author

I tested the resulting appimage under Debian 11, 12, ubuntu 22.10, 23.10, centos7 and it works

@GitMensch
Copy link
Contributor

If VNC is an option and does not increase the size much, then that would indeed be nice.

Copy link
Member

@milianw milianw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you please expand on what is experimental about wayland? did you test it on a wayland environment?

what value does that bring? can't we rely on XWayland compatibility?

scripts/appimage/build_appimage.sh Outdated Show resolved Hide resolved
@milianw
Copy link
Member

milianw commented Mar 6, 2024

If VNC is an option and does not increase the size much, then that would indeed be nice.

I disagree. the appimage serves a general purpose, but providing all bells and whistles should not be the target. bloating the size "because we can" is not a good goal.

if you want to remote something, just do that yourself

@GitMensch
Copy link
Contributor

bloating the size "because we can" is not a good goal

That all depends - if "we can easily" and there's an increase of 65.5 to 66.5 (that would be less than 2%), then this would be nice. If it is an increase by 20% or is complicated, then that is bad.

@lievenhey
Copy link
Contributor Author

can you please expand on what is experimental about wayland? did you test it on a wayland environment?

what value does that bring? can't we rely on XWayland compatibility?

Adding wayland support provides proper scaling. I know there are some environment variables that you can use but these mess with other programs (e.g. zoom) so you need a lens to use these programs.

@milianw
Copy link
Member

milianw commented Apr 12, 2024

but why is this "experimental"?

@lievenhey
Copy link
Contributor Author

Because the appimage guys don't support it. But that is expected of a wayland hater.

Copy link
Member

@milianw milianw left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ping? this could probably go in with some more explanations and fixese

scripts/appimage/build_appimage.sh Show resolved Hide resolved
this gives the user more leeway to use the appimage
closes: #554
@GitMensch
Copy link
Contributor

Just out of interest: I've got a machine where the CI artifact wants to start, but aborts because of a missing library - should this be installed or was it a bad link?

./hotspot-v1.5.0-17-gd2703f3-x86_64.AppImage --help
/tmp/.mount_hotspotrbnYL/usr/bin/hotspot: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory

--> missing library outside of QT starting a GUI process; would it be possible/reasonable to bundle it as well?

@GitMensch
Copy link
Contributor

Hm, rechecking: maybe #282 should be reopened.
Compare:

LD_LIBRARY_PATH=./usr/lib ldd usr/lib64/libexec/hotspot-perfparser
        linux-vdso.so.1 (0x00007fffd0731000)
        libQt5Network.so.5 => ./usr/lib/libQt5Network.so.5 (0x00007f8c72472000)
        libQt5Core.so.5 => ./usr/lib/libQt5Core.so.5 (0x00007f8c71de7000)
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007f8c71bc7000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007f8c719c3000)
        liblzma.so.5 => ./usr/lib/liblzma.so.5 (0x00007f8c7179b000)
        libbz2.so.1 => ./usr/lib/libbz2.so.1 (0x00007f8c7158a000)
        libz.so.1 => ./usr/lib/libz.so.1 (0x00007f8c71373000)
        libzstd.so.1 => ./usr/lib/libzstd.so.1 (0x00007f8c710b6000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f8c70d21000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007f8c7099f000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007f8c70787000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007f8c703c2000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8c723e7000)
        libgssapi_krb5.so.2 => ./usr/lib/libgssapi_krb5.so.2 (0x00007f8c70172000)
        libicui18n.so.50 => ./usr/lib/libicui18n.so.50 (0x00007f8c6fd20000)
        libicuuc.so.50 => ./usr/lib/libicuuc.so.50 (0x00007f8c6f984000)
        libicudata.so.50 => ./usr/lib/libicudata.so.50 (0x00007f8c6e3b0000)
        libpcre2-16.so.0 => ./usr/lib/libpcre2-16.so.0 (0x00007f8c6e143000)
        libgthread-2.0.so.0 => ./usr/lib/libgthread-2.0.so.0 (0x00007f8c6df40000)
        libglib-2.0.so.0 => ./usr/lib/libglib-2.0.so.0 (0x00007f8c6dc1d000)
        libkrb5.so.3 => ./usr/lib/libkrb5.so.3 (0x00007f8c6d92d000)
        libk5crypto.so.3 => ./usr/lib/libk5crypto.so.3 (0x00007f8c6d6f8000)
        libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007f8c6d4f4000)
        libkrb5support.so.0 => ./usr/lib/libkrb5support.so.0 (0x00007f8c6d2e2000)
        libkeyutils.so.1 => ./usr/lib/libkeyutils.so.1 (0x00007f8c6d0dd000)
        libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007f8c6cec5000)
        libpcre.so.1 => ./usr/lib/libpcre.so.1 (0x00007f8c6cc62000)
        libselinux.so.1 => ./usr/lib/libselinux.so.1 (0x00007f8c6ca38000)

with

LD_LIBRARY_PATH=./usr/lib ldd usr/bin/hotspot
        linux-vdso.so.1 (0x00007ffe42630000)
        libKF5ThreadWeaver.so.5 => ./usr/lib/libKF5ThreadWeaver.so.5 (0x00007fe961040000)
        libKF5KIOFileWidgets.so.5 => ./usr/lib/libKF5KIOFileWidgets.so.5 (0x00007fe960e8b000)
        libKF5Notifications.so.5 => ./usr/lib/libKF5Notifications.so.5 (0x00007fe960dc1000)
        libkddockwidgets.so.2.0 => ./usr/lib/libkddockwidgets.so.2.0 (0x00007fe960aa3000)
        libqcustomplot.so.2 => ./usr/lib/libqcustomplot.so.2 (0x00007fe96094a000)
        libKF5Bookmarks.so.5 => ./usr/lib/libKF5Bookmarks.so.5 (0x00007fe9608db000)
        libKF5ItemModels.so.5 => ./usr/lib/libKF5ItemModels.so.5 (0x00007fe960850000)
        libKF5Parts.so.5 => ./usr/lib/libKF5Parts.so.5 (0x00007fe9607af000)
        libKF5KIOWidgets.so.5 => ./usr/lib/libKF5KIOWidgets.so.5 (0x00007fe96057d000)
        libKF5Solid.so.5 => ./usr/lib/libKF5Solid.so.5 (0x00007fe960485000)
        libKF5KIOGui.so.5 => ./usr/lib/libKF5KIOGui.so.5 (0x00007fe960406000)
        libKF5KIOCore.so.5 => ./usr/lib/libKF5KIOCore.so.5 (0x00007fe9601a0000)
        libQt5Concurrent.so.5 => ./usr/lib/libQt5Concurrent.so.5 (0x00007fe960198000)
        libKF5WindowSystem.so.5 => ./usr/lib/libKF5WindowSystem.so.5 (0x00007fe960110000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007fe95fdc4000)
        libKF5Service.so.5 => ./usr/lib/libKF5Service.so.5 (0x00007fe95fcd9000)
        libKF5JobWidgets.so.5 => ./usr/lib/libKF5JobWidgets.so.5 (0x00007fe95fc88000)
        libKF5XmlGui.so.5 => ./usr/lib/libKF5XmlGui.so.5 (0x00007fe95fb1f000)
        libKF5ItemViews.so.5 => ./usr/lib/libKF5ItemViews.so.5 (0x00007fe95fabe000)
        libKF5IconThemes.so.5 => ./usr/lib/libKF5IconThemes.so.5 (0x00007fe95fa49000)
        libKF5Archive.so.5 => ./usr/lib/libKF5Archive.so.5 (0x00007fe95f9ec000)
        libQt5Svg.so.5 => ./usr/lib/libQt5Svg.so.5 (0x00007fe95f992000)
        libKF5TextWidgets.so.5 => ./usr/lib/libKF5TextWidgets.so.5 (0x00007fe95f926000)
        libKF5ConfigWidgets.so.5 => ./usr/lib/libKF5ConfigWidgets.so.5 (0x00007fe95f851000)
        libKF5Codecs.so.5 => ./usr/lib/libKF5Codecs.so.5 (0x00007fe95f7fe000)
        libKF5Auth.so.5 => ./usr/lib/libKF5Auth.so.5 (0x00007fe95f7f1000)
        libKF5AuthCore.so.5 => ./usr/lib/libKF5AuthCore.so.5 (0x00007fe95f7ce000)
        libKF5CoreAddons.so.5 => ./usr/lib/libKF5CoreAddons.so.5 (0x00007fe95f6ac000)
        libKF5I18n.so.5 => ./usr/lib/libKF5I18n.so.5 (0x00007fe95f631000)
        libKF5Completion.so.5 => ./usr/lib/libKF5Completion.so.5 (0x00007fe95f5cc000)
        libKF5WidgetsAddons.so.5 => ./usr/lib/libKF5WidgetsAddons.so.5 (0x00007fe95f368000)
        libKF5ConfigGui.so.5 => ./usr/lib/libKF5ConfigGui.so.5 (0x00007fe95f321000)
        libQt5Xml.so.5 => ./usr/lib/libQt5Xml.so.5 (0x00007fe95f2dc000)
        libKF5ConfigCore.so.5 => ./usr/lib/libKF5ConfigCore.so.5 (0x00007fe95f226000)
        libQt5DBus.so.5 => ./usr/lib/libQt5DBus.so.5 (0x00007fe95f198000)
        libKF5SonnetUi.so.5 => ./usr/lib/libKF5SonnetUi.so.5 (0x00007fe95f155000)
        libKF5SyntaxHighlighting.so.5 => ./usr/lib/libKF5SyntaxHighlighting.so.5 (0x00007fe95ef15000)
        libQt5Network.so.5 => ./usr/lib/libQt5Network.so.5 (0x00007fe95ed74000)
        libQt5Widgets.so.5 => ./usr/lib/libQt5Widgets.so.5 (0x00007fe95e6f3000)
        libQt5X11Extras.so.5 => ./usr/lib/libQt5X11Extras.so.5 (0x00007fe95e6ec000)
        libQt5Gui.so.5 => ./usr/lib/libQt5Gui.so.5 (0x00007fe95e08b000)
        libQt5Core.so.5 => ./usr/lib/libQt5Core.so.5 (0x00007fe95da89000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007fe95d6f4000)
        libm.so.6 => /usr/lib64/libm.so.6 (0x00007fe95d372000)
        libgcc_s.so.1 => /usr/lib64/libgcc_s.so.1 (0x00007fe95d15a000)
        libc.so.6 => /usr/lib64/libc.so.6 (0x00007fe95cd95000)
        libKF5GuiAddons.so.5 => ./usr/lib/libKF5GuiAddons.so.5 (0x00007fe95cd18000)
        libcanberra.so.0 => ./usr/lib/libcanberra.so.0 (0x00007fe95cb04000)
        libQt5PrintSupport.so.5 => ./usr/lib/libQt5PrintSupport.so.5 (0x00007fe95ca91000)
        libGL.so.1 => not found
        libpthread.so.0 => /usr/lib64/libpthread.so.0 (0x00007fe95c871000)
        libudev.so.1 => ./usr/lib/libudev.so.1 (0x00007fe95c657000)
        libmount.so.1 => ./usr/lib/libmount.so.1 (0x00007fe95c411000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe960e58000)
        libKF5Crash.so.5 => ./usr/lib/libKF5Crash.so.5 (0x00007fe95c3fe000)
        libKF5DBusAddons.so.5 => ./usr/lib/libKF5DBusAddons.so.5 (0x00007fe95c3ce000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007fe95c1a3000)
        libXfixes.so.3 => ./usr/lib/libXfixes.so.3 (0x00007fe95bf9c000)
        libxcb-keysyms.so.1 => ./usr/lib/libxcb-keysyms.so.1 (0x00007fe95bd98000)
        libdl.so.2 => /usr/lib64/libdl.so.2 (0x00007fe95bb94000)
        libKF5GlobalAccel.so.5 => ./usr/lib/libKF5GlobalAccel.so.5 (0x00007fe95bb5b000)
        libbz2.so.1 => ./usr/lib/libbz2.so.1 (0x00007fe95b948000)
        liblzma.so.5 => ./usr/lib/liblzma.so.5 (0x00007fe95b720000)
        libz.so.1 => ./usr/lib/libz.so.1 (0x00007fe95b509000)
        libzstd.so.1 => ./usr/lib/libzstd.so.1 (0x00007fe95b24c000)
        libGL.so.1 => not found
        libKF5SonnetCore.so.5 => ./usr/lib/libKF5SonnetCore.so.5 (0x00007fe95b1bc000)
        libdbus-1.so.3 => ./usr/lib/libdbus-1.so.3 (0x00007fe95af67000)
        libgssapi_krb5.so.2 => ./usr/lib/libgssapi_krb5.so.2 (0x00007fe95ad17000)
        libGL.so.1 => not found
        libGL.so.1 => not found
        libGL.so.1 => not found
        libpng15.so.15 => ./usr/lib/libpng15.so.15 (0x00007fe95aae8000)
        libharfbuzz.so.0 => ./usr/lib/libharfbuzz.so.0 (0x00007fe95a847000)
        libicui18n.so.50 => ./usr/lib/libicui18n.so.50 (0x00007fe95a3f3000)
        libicuuc.so.50 => ./usr/lib/libicuuc.so.50 (0x00007fe95a057000)
        libicudata.so.50 => ./usr/lib/libicudata.so.50 (0x00007fe958a83000)
        libpcre2-16.so.0 => ./usr/lib/libpcre2-16.so.0 (0x00007fe958816000)
        libgthread-2.0.so.0 => ./usr/lib/libgthread-2.0.so.0 (0x00007fe958613000)
        libglib-2.0.so.0 => ./usr/lib/libglib-2.0.so.0 (0x00007fe9582ee000)
        libQt5WaylandClient.so.5 => ./usr/lib/libQt5WaylandClient.so.5 (0x00007fe9581b3000)
        libwayland-client.so.0 => ./usr/lib/libwayland-client.so.0 (0x00007fe957fa3000)
        libvorbisfile.so.3 => ./usr/lib/libvorbisfile.so.3 (0x00007fe957d9a000)
        libvorbis.so.0 => ./usr/lib/libvorbis.so.0 (0x00007fe957b6b000)
        libogg.so.0 => ./usr/lib/libogg.so.0 (0x00007fe957961000)
        libtdb.so.1 => ./usr/lib/libtdb.so.1 (0x00007fe957748000)
        libltdl.so.7 => ./usr/lib/libltdl.so.7 (0x00007fe95753d000)
        libGL.so.1 => not found
        librt.so.1 => /usr/lib64/librt.so.1 (0x00007fe957335000)
        libcap.so.2 => ./usr/lib/libcap.so.2 (0x00007fe95712d000)
        libdw.so.1 => ./usr/lib/libdw.so.1 (0x00007fe956edc000)
        libblkid.so.1 => ./usr/lib/libblkid.so.1 (0x00007fe956c9a000)
        libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007fe956a92000)
        libselinux.so.1 => ./usr/lib/libselinux.so.1 (0x00007fe956868000)
        libXau.so.6 => ./usr/lib/libXau.so.6 (0x00007fe956661000)
        libsystemd.so.0 => ./usr/lib/libsystemd.so.0 (0x00007fe95642e000)
        libkrb5.so.3 => ./usr/lib/libkrb5.so.3 (0x00007fe95613e000)
        libk5crypto.so.3 => ./usr/lib/libk5crypto.so.3 (0x00007fe955f09000)
        libcom_err.so.2 => /usr/lib64/libcom_err.so.2 (0x00007fe955d05000)
        libkrb5support.so.0 => ./usr/lib/libkrb5support.so.0 (0x00007fe955af1000)
        libkeyutils.so.1 => ./usr/lib/libkeyutils.so.1 (0x00007fe9558ec000)
        libresolv.so.2 => /usr/lib64/libresolv.so.2 (0x00007fe9556d4000)
        libfreetype.so.6 => ./usr/lib/libfreetype.so.6 (0x00007fe955410000)
        libgraphite2.so.3 => ./usr/lib/libgraphite2.so.3 (0x00007fe9551e1000)
        libpcre.so.1 => ./usr/lib/libpcre.so.1 (0x00007fe954f7c000)
        libwayland-cursor.so.0 => ./usr/lib/libwayland-cursor.so.0 (0x00007fe954d73000)
        libfontconfig.so.1 => ./usr/lib/libfontconfig.so.1 (0x00007fe954b2f000)
        libGL.so.1 => not found
        libxkbcommon.so.0 => ./usr/lib/libxkbcommon.so.0 (0x00007fe9548ed000)
        libffi.so.6 => ./usr/lib/libffi.so.6 (0x00007fe9546e2000)
        libcrypt.so.1 => ./usr/lib/libcrypt.so.1 (0x00007fe9544aa000)
        libattr.so.1 => ./usr/lib/libattr.so.1 (0x00007fe9542a4000)
        libelf.so.1 => ./usr/lib/libelf.so.1 (0x00007fe95408b000)
        liblz4.so.1 => ./usr/lib/liblz4.so.1 (0x00007fe953e7b000)
        libgcrypt.so.11 => ./usr/lib/libgcrypt.so.11 (0x00007fe953bf6000)
        libgpg-error.so.0 => /usr/lib64/libgpg-error.so.0 (0x00007fe9539d5000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007fe953799000)
        libfreebl3.so => ./usr/lib/libfreebl3.so (0x00007fe953595000)

So the libKF5* libraries have a dependency to other libraries like libQt5Gui.so.5 (that are included in the appimage) which have the dependency to libGL.so.1, which is not part of the appimage.

I think that with the current infrastructure libGL.so.1 should be included as part of this PR.

Ideally (but that would be a separate issue) the libKF5* libraries would be delay-loaded, this would allow hotspot --exportTo be used without installing the GUI stuff on a CI machine/docker.
[I guess this would be identical when using QT6]

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

Successfully merging this pull request may close these issues.

appimage: package QT platforms
3 participants