hotspot icon indicating copy to clipboard operation
hotspot copied to clipboard

bundle qt platform plugins

Open lievenhey opened this issue 1 year ago • 9 comments
trafficstars

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

lievenhey avatar Feb 06 '24 11:02 lievenhey

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 avatar Feb 06 '24 11:02 lievenhey

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

lievenhey avatar Feb 06 '24 14:02 lievenhey

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

GitMensch avatar Feb 28 '24 15:02 GitMensch

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

milianw avatar Mar 06 '24 13:03 milianw

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.

GitMensch avatar Mar 06 '24 13:03 GitMensch

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.

lievenhey avatar Apr 10 '24 10:04 lievenhey

but why is this "experimental"?

milianw avatar Apr 12 '24 10:04 milianw

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

lievenhey avatar Apr 26 '24 11:04 lievenhey

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 avatar May 15 '24 16:05 GitMensch

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]

GitMensch avatar May 24 '24 09:05 GitMensch