hotspot
hotspot copied to clipboard
bundle qt platform plugins
this gives the user more leeway to use the appimage closes: 554
Are there some more platforms that should be bundled? Currently I have:
- xcb (defaut)
- offscreen
- wayland (experimental)
I guess vnc might be an option
I tested the resulting appimage under Debian 11, 12, ubuntu 22.10, 23.10, centos7 and it works
If VNC is an option and does not increase the size much, then that would indeed be nice.
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
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.
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.
but why is this "experimental"?
Because the appimage guys don't support it. But that is expected of a wayland hater.
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?
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]