Open probonopd opened 3 years ago
The AppImage is there - but I have to admit I'm not 100% happy with it. The command line executable is compiled as statically linked but as we are using Qt the AppImage includes lots of dynamic links. These have dependencies on GlibC, OpenGL and lots others and as we are using the Ubuntu:Latest Docker base this means it doesn't work on on the majority of Linux distributions out there.
I'd hoped to be able to figure out how to statically link the Qt app by now but it's been a lot more complicated than I had hoped. At the moment I would suggest users use the repository for their distribution over the AppImage.
Edit: I've just noticed AppImages can be created through OBS, I might look at that as an option.
The command line executable is compiled as statically linked but as we are using Qt the AppImage includes lots of dynamic links.
Not exactly sure what you mean by this. You can put a statically linked binary into an AppDir, and hence AppImage, just fine and it will not cause additional stuff to be bundled.
Can you elaborate?
tsMuxerGUI is basically just a GUI layer over the command-line program tsMuxer. Generating a statically linked tsMuxer is no problem at all, that ensures it is portable across distributions. The problem is with tsMuxerGUI specifically. There are just so many dependencies, one attempt to reduce them produced an executable with dependencies like the below:
linux-vdso.so.1 (0x00007fffb8bf3000)
libasound.so.2 => /lib/x86_64-linux-gnu/libasound.so.2 (0x00007faea8ff3000)
libwayland-egl.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libwayland-egl.so.1 (0x00007faea8fed000)
libXcomposite.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libXcomposite.so.1 (0x00007faea8de9000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007faea8caf000)
libxcb-glx.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libxcb-glx.so.0 (0x00007faea8c8d000)
libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007faea8c82000)
libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007faea8a65000)
libxkbcommon-x11.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libxkbcommon-x11.so.0 (0x00007faea8a59000)
libtiff.so.5 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libtiff.so.5 (0x00007faea89da000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007faea89d4000)
libgbm.so.1 => /lib/x86_64-linux-gnu/libgbm.so.1 (0x00007faea89c3000)
libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007faea89b0000)
libudev.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libudev.so.1 (0x00007faea8986000)
libX11-xcb.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libX11-xcb.so.1 (0x00007faea8980000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007faea8957000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faea8809000)
libEGL.so.1 => /lib/x86_64-linux-gnu/libEGL.so.1 (0x00007faea87f4000)
libdbus-1.so.3 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libdbus-1.so.3 (0x00007faea87a0000)
libwayland-cursor.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libwayland-cursor.so.0 (0x00007faea8794000)
libwayland-client.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libwayland-client.so.0 (0x00007faea8782000)
libxkbcommon.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libxkbcommon.so.0 (0x00007faea8740000)
libpulse.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libpulse.so.0 (0x00007faea86ef000)
libicui18n.so.63 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libicui18n.so.63 (0x00007faea83a3000)
libicuuc.so.63 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libicuuc.so.63 (0x00007faea81b0000)
libdouble-conversion.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libdouble-conversion.so.1 (0x00007faea8196000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007faea8075000)
libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007faea7fe1000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007faea7fc0000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007faea7dde000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007faea7dc4000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faea7bd7000)
/lib64/ld-linux-x86-64.so.2 (0x00007faeaa6c0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007faea7bcc000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007faea7bc3000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007faea7ba9000)
libxcb-xkb.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libxcb-xkb.so.1 (0x00007faea7b87000)
libwebp.so.6 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libwebp.so.6 (0x00007faea791b000)
libzstd.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libzstd.so.1 (0x00007faea787a000)
liblzma.so.5 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/liblzma.so.5 (0x00007faea7852000)
libjbig.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libjbig.so.0 (0x00007faea7643000)
libjpeg.so.8 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libjpeg.so.8 (0x00007faea75bf000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007faea75a3000)
libwayland-server.so.0 => /lib/x86_64-linux-gnu/libwayland-server.so.0 (0x00007faea758d000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007faea7550000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007faea734c000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007faea7146000)
libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007faea7089000)
libsystemd.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libsystemd.so.0 (0x00007faea6fe4000)
libffi.so.6 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libffi.so.6 (0x00007faea6fd9000)
libpulsecommon-12.2.so => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libpulsecommon-12.2.so (0x00007faea6f53000)
libicudata.so.63 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libicudata.so.63 (0x00007faea5562000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007faea54ee000)
libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007faea54b8000)
liblz4.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/liblz4.so.1 (0x00007faea5488000)
libgcrypt.so.20 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libgcrypt.so.20 (0x00007faea5369000)
libwrap.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libwrap.so.0 (0x00007faea535c000)
libsndfile.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libsndfile.so.1 (0x00007faea52dc000)
libasyncns.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libasyncns.so.0 (0x00007faea50d5000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007faea50b2000)
libnsl.so.1 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libnsl.so.1 (0x00007faea5095000)
libFLAC.so.8 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libFLAC.so.8 (0x00007faea4e1a000)
libogg.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libogg.so.0 (0x00007faea4c10000)
libvorbis.so.0 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libvorbis.so.0 (0x00007faea4be0000)
libvorbisenc.so.2 => /home/test/Code/tsMuxer/bin/lnx/squashfs-root/usr/bin/../lib/libvorbisenc.so.2 (0x00007faea4b34000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007faea4b19000)
Given the sheer number of dependencies the trick would be to find an old enough distribution with all of the above packages installed.
Once our Docker container is fully updated I will also update the nightly release code to create a separate artefact for just the AppImage.
Is an AppImage (
tsMuxerGUI-$VERSION-x86_64.AppImage
) available for download? If so, we'd like to add it to https://github.com/AppImage/appimage.github.io. Thanks.Reference: