tsMuxer icon indicating copy to clipboard operation
tsMuxer copied to clipboard

Is an AppImage available for download?

Open probonopd opened this issue 4 years ago • 4 comments

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:

  • https://github.com/AppImage/AppImageKit/wiki/Creating-AppImages/cc2441518975caca23e9ce2dba6f08a22c678d1e#common-mistake

probonopd avatar Sep 23 '21 19:09 probonopd

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.

justdan96 avatar Sep 26 '21 22:09 justdan96

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?

probonopd avatar Sep 27 '21 18:09 probonopd

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.

justdan96 avatar Sep 29 '21 12:09 justdan96

Once our Docker container is fully updated I will also update the nightly release code to create a separate artefact for just the AppImage.

justdan96 avatar Apr 01 '22 11:04 justdan96