olive-editor / olive

Free open-source non-linear video editor
https://olivevideoeditor.org/
GNU General Public License v3.0
8.16k stars 554 forks source link

[BUILD] Revise list of libraries shipped in Linux AppImage #1487

Open Simran-B opened 3 years ago

Simran-B commented 3 years ago

Platform Linux

Summary Some shared libraries are included that should apparently not be bundled, whereas some others are missing (in particular Qt's dependencies, like freetype and harfbuzz).

Additional Information / Output

There is a disagreement about what should be included and what should be excluded between linuxdeployqt / appimage.org and information shared by @rodlie (see https://github.com/olive-editor/olive/issues/1483#issuecomment-779027470 and subsequent comments). It's also unclear whether ASWF's Qt is built correctly with all dependencies or if the cleaned up CI container lacks some of the packages that were installed in the aswf-docker base image.

Simran-B commented 3 years ago

Dependency tree of main executable according to ldd

ldd app/olive-editor
LibraryPath
linux-vdso.so.1
libQt5Multimedia.so.5/usr/local/lib/libQt5Multimedia.so.5
libQt5OpenGL.so.5/usr/local/lib/libQt5OpenGL.so.5
libQt5Svg.so.5/usr/local/lib/libQt5Svg.so.5
libQt5Concurrent.so.5/usr/local/lib/libQt5Concurrent.so.5
libGL.so.1/lib64/libGL.so.1
libavutil.so.56/usr/local/lib/libavutil.so.56
libavcodec.so.58/usr/local/lib/libavcodec.so.58
libavformat.so.58/usr/local/lib/libavformat.so.58
libavfilter.so.7/usr/local/lib/libavfilter.so.7
libswscale.so.5/usr/local/lib/libswscale.so.5
libswresample.so.3/usr/local/lib/libswresample.so.3
libOpenColorIO.so.2.0/usr/local/lib/libOpenColorIO.so.2.0
libOpenImageIO.so.2.2/usr/local/lib64/libOpenImageIO.so.2.2
libOpenImageIO_Util.so.2.2/usr/local/lib64/libOpenImageIO_Util.so.2.2
libIlmImf-2_5.so.25/usr/local/lib64/libIlmImf-2_5.so.25
libImath-2_5.so.25/usr/local/lib64/libImath-2_5.so.25
libIex-2_5.so.25/usr/local/lib64/libIex-2_5.so.25
libHalf-2_5.so.25/usr/local/lib64/libHalf-2_5.so.25
libIlmThread-2_5.so.25/usr/local/lib64/libIlmThread-2_5.so.25
libpthread.so.0/lib64/libpthread.so.0
libz.so.1/lib64/libz.so.1
libdl.so.2/lib64/libdl.so.2
libQt5Network.so.5/usr/local/lib/libQt5Network.so.5
libQt5Widgets.so.5/usr/local/lib/libQt5Widgets.so.5
libQt5Gui.so.5/usr/local/lib/libQt5Gui.so.5
libQt5Core.so.5/usr/local/lib/libQt5Core.so.5
libstdc++.so.6/lib64/libstdc++.so.6
libm.so.6/lib64/libm.so.6
libgcc_s.so.1/lib64/libgcc_s.so.1
libc.so.6/lib64/libc.so.6
/lib64/ld-linux-x86-64.so.2
libpulse-mainloop-glib.so.0/lib64/libpulse-mainloop-glib.so.0
libpulse.so.0/lib64/libpulse.so.0
libglib-2.0.so.0/lib64/libglib-2.0.so.0
libGLX.so.0/lib64/libGLX.so.0
libX11.so.6/lib64/libX11.so.6
libXext.so.6/lib64/libXext.so.6
libGLdispatch.so.0/lib64/libGLdispatch.so.0
libvpx.so.6/usr/local/lib/libvpx.so.6
liblzma.so.5/lib64/liblzma.so.5
libaom.so.2/usr/local/lib64/libaom.so.2
libmp3lame.so.0/usr/local/lib/libmp3lame.so.0
libopenjp2.so.7/usr/local/lib/libopenjp2.so.7
libopus.so.0/usr/local/lib/libopus.so.0
libtheoraenc.so.1/usr/local/lib/libtheoraenc.so.1
libtheoradec.so.1/usr/local/lib/libtheoradec.so.1
libvorbis.so.0/usr/local/lib/libvorbis.so.0
libvorbisenc.so.2/usr/local/lib/libvorbisenc.so.2
libwebp.so.7/usr/local/lib/libwebp.so.7
libx264.so.161/usr/local/lib/libx264.so.161
libx265.so.192/usr/local/lib/libx265.so.192
libxvidcore.so.4/usr/local/lib/libxvidcore.so.4
libbz2.so.1/lib64/libbz2.so.1
libpostproc.so.55/usr/local/lib/libpostproc.so.55
libfreetype.so.6/lib64/libfreetype.so.6
libgif.so.4/lib64/libgif.so.4
libpng15.so.15/lib64/libpng15.so.15
libjpeg.so.62/lib64/libjpeg.so.62
libraw_r.so.19/lib64/libraw_r.so.19
libtiff.so.5/lib64/libtiff.so.5
libboost_filesystem.so.1.73.0/usr/local/lib/libboost_filesystem.so.1.73.0
libboost_system.so.1.73.0/usr/local/lib/libboost_system.so.1.73.0
libboost_thread.so.1.73.0/usr/local/lib/libboost_thread.so.1.73.0
libboost_chrono.so.1.73.0/usr/local/lib/libboost_chrono.so.1.73.0
libboost_date_time.so.1.73.0/usr/local/lib/libboost_date_time.so.1.73.0
libboost_atomic.so.1.73.0/usr/local/lib/libboost_atomic.so.1.73.0
librt.so.1/lib64/librt.so.1
libIexMath-2_5.so.25/usr/local/lib64/libIexMath-2_5.so.25
libgssapi_krb5.so.2/lib64/libgssapi_krb5.so.2
libicui18n.so.50/lib64/libicui18n.so.50
libicuuc.so.50/lib64/libicuuc.so.50
libicudata.so.50/lib64/libicudata.so.50
libgthread-2.0.so.0/lib64/libgthread-2.0.so.0
libpulsecommon-10.0.so/usr/lib64/pulseaudio/libpulsecommon-10.0.so
libcap.so.2/lib64/libcap.so.2
libdbus-1.so.3/lib64/libdbus-1.so.3
libpcre.so.1/lib64/libpcre.so.1
libxcb.so.1/lib64/libxcb.so.1
libogg.so.0/usr/local/lib/libogg.so.0
libnuma.so.1/lib64/libnuma.so.1
libSM.so.6/lib64/libSM.so.6
libICE.so.6/lib64/libICE.so.6
libjasper.so.1/lib64/libjasper.so.1
liblcms2.so.2/lib64/liblcms2.so.2
libgomp.so.1/lib64/libgomp.so.1
libjbig.so.2.0/lib64/libjbig.so.2.0
libkrb5.so.3/lib64/libkrb5.so.3
libk5crypto.so.3/lib64/libk5crypto.so.3
libcom_err.so.2/lib64/libcom_err.so.2
libkrb5support.so.0/lib64/libkrb5support.so.0
libkeyutils.so.1/lib64/libkeyutils.so.1
libresolv.so.2/lib64/libresolv.so.2
libX11-xcb.so.1/lib64/libX11-xcb.so.1
libXtst.so.6/lib64/libXtst.so.6
libsystemd.so.0/lib64/libsystemd.so.0
libwrap.so.0/lib64/libwrap.so.0
libsndfile.so.1/lib64/libsndfile.so.1
libasyncns.so.0/lib64/libasyncns.so.0
libattr.so.1/lib64/libattr.so.1
libXau.so.6/lib64/libXau.so.6
libuuid.so.1/lib64/libuuid.so.1
libselinux.so.1/lib64/libselinux.so.1
libXi.so.6/lib64/libXi.so.6
liblz4.so.1/lib64/liblz4.so.1
libgcrypt.so.11/lib64/libgcrypt.so.11
libgpg-error.so.0/lib64/libgpg-error.so.0
libdw.so.1/lib64/libdw.so.1
libnsl.so.1/lib64/libnsl.so.1
libgsm.so.1/lib64/libgsm.so.1
libFLAC.so.8/lib64/libFLAC.so.8
libelf.so.1/lib64/libelf.so.1
ldd --unused app/olive-editor
Unused direct dependencies:
        /usr/local/lib/libQt5OpenGL.so.5
        /usr/local/lib/libQt5Svg.so.5
        /usr/local/lib/libQt5Concurrent.so.5
        /lib64/libGL.so.1
        /usr/local/lib/libavutil.so.56
        /usr/local/lib/libavcodec.so.58
        /usr/local/lib/libavformat.so.58
        /usr/local/lib/libavfilter.so.7
        /usr/local/lib/libswscale.so.5
        /usr/local/lib/libswresample.so.3
        /usr/local/lib64/libOpenImageIO.so.2.2
        /usr/local/lib64/libOpenImageIO_Util.so.2.2
        /usr/local/lib64/libImath-2_5.so.25
        /usr/local/lib64/libHalf-2_5.so.25
        /usr/local/lib64/libIlmThread-2_5.so.25
        /lib64/libz.so.1
        /lib64/libdl.so.2
        /usr/local/lib/libQt5Network.so.5
        /lib64/libm.so.6
        /lib64/libgcc_s.so.1
        /lib64/ld-linux-x86-64.so.2

Currently bundled libraries in AppImage

ls squashfs-root/usr/lib/ -1
  • libFLAC.so.8
  • libHalf-2_5.so.25
  • libIex-2_5.so.25
  • libIexMath-2_5.so.25
  • libIlmImf-2_5.so.25
  • libIlmThread-2_5.so.25
  • libImath-2_5.so.25
  • libOpenColorIO.so.2.0
  • libOpenImageIO.so.2.2
  • libOpenImageIO_Util.so.2.2
  • libQt5Concurrent.so.5
  • libQt5Core.so.5
  • libQt5DBus.so.5
  • libQt5Gui.so.5
  • libQt5Multimedia.so.5
  • libQt5MultimediaGstTools.so.5
  • libQt5MultimediaWidgets.so.5
  • libQt5Network.so.5
  • libQt5OpenGL.so.5
  • libQt5Pdf.so.5
  • libQt5Qml.so.5
  • libQt5QmlModels.so.5
  • libQt5Quick.so.5
  • libQt5Svg.so.5
  • libQt5VirtualKeyboard.so.5
  • libQt5Widgets.so.5
  • libQt5XcbQpa.so.5
  • libX11-xcb.so.1
  • libXau.so.6
  • libXext.so.6
  • libXi.so.6
  • libXtst.so.6
  • libaom.so.2
  • libasyncns.so.0
  • libattr.so.1
  • libavcodec.so.58
  • libavfilter.so.7
  • libavformat.so.58
  • libavutil.so.56
  • libboost_atomic.so.1.73.0
  • libboost_chrono.so.1.73.0
  • libboost_date_time.so.1.73.0
  • libboost_filesystem.so.1.73.0
  • libboost_system.so.1.73.0
  • libboost_thread.so.1.73.0
  • libbz2.so.1
  • libcap.so.2
  • libdbus-1.so.3
  • libdw.so.1
  • libelf.so.1
  • libffi.so.6
  • libgcrypt.so.11
  • libgif.so.4
  • libgmodule-2.0.so.0
  • libgomp.so.1
  • libgsm.so.1
  • libgssapi_krb5.so.2
  • libgstallocators-1.0.so.0
  • libgstapp-1.0.so.0
  • libgstaudio-1.0.so.0
  • libgstbase-1.0.so.0
  • libgstpbutils-1.0.so.0
  • libgstphotography-1.0.so.0
  • libgstreamer-1.0.so.0
  • libgsttag-1.0.so.0
  • libgstvideo-1.0.so.0
  • libgthread-2.0.so.0
  • libicudata.so.50
  • libicui18n.so.50
  • libicuuc.so.50
  • libjasper.so.1
  • libjbig.so.2.0
  • libjpeg.so.62
  • libk5crypto.so.3
  • libkeyutils.so.1
  • libkrb5.so.3
  • libkrb5support.so.0
  • liblcms2.so.2
  • liblz4.so.1
  • liblzma.so.5
  • libmng.so.1
  • libmp3lame.so.0
  • libnsl.so.1
  • libnuma.so.1
  • libogg.so.0
  • libopenjp2.so.7
  • libopus.so.0
  • liborc-0.4.so.0
  • libpcre.so.1
  • libpng15.so.15
  • libpostproc.so.55
  • libpulse-mainloop-glib.so.0
  • libpulse.so.0
  • libpulsecommon-10.0.so
  • libraw_r.so.19
  • libselinux.so.1
  • libsndfile.so.1
  • libswresample.so.3
  • libswscale.so.5
  • libsystemd.so.0
  • libtheoradec.so.1
  • libtheoraenc.so.1
  • libtiff.so.5
  • libvorbis.so.0
  • libvorbisenc.so.2
  • libvpx.so.6
  • libwebp.so.7
  • libwrap.so.0
  • libx264.so.161
  • libx265.so.192
  • libxcb-glx.so.0
  • libxcb-icccm.so.4
  • libxcb-image.so.0
  • libxcb-keysyms.so.1
  • libxcb-randr.so.0
  • libxcb-render-util.so.0
  • libxcb-render.so.0
  • libxcb-shape.so.0
  • libxcb-shm.so.0
  • libxcb-sync.so.1
  • libxcb-util.so.1
  • libxcb-xfixes.so.0
  • libxcb-xinerama.so.0
  • libxcb-xkb.so.1
  • libxkbcommon-x11.so.0
  • libxkbcommon.so.0
  • libxvidcore.so.4

Library descriptions

Name Description
linux-vdso The "vDSO" (virtual dynamic shared object) is a small shared library that the kernel automatically maps into the address space of all user-space applications. man7
libQt5Multimedia provides a rich set of … C++ classes to handle multimedia content qt
libQt5OpenGL (Deprecated, use Qt GUI instead) provides an OpenGL widget class that can be used just like any other Qt widget, except that it opens an OpenGL display buffer where you can use the OpenGL API to render the contents. qt
libQt5Svg classes for rendering and displaying SVG drawings in widgets and on other paint devices. qt
libQt5Concurrent high-level APIs that make it possible to write multi-threaded programs without using low-level threading primitives qt
libQt5Network APIs for programming applications that use TCP/IP. qt
libQt5Widgets set of UI elements to create classic desktop-style user interfaces. qt
libQt5Gui classes for windowing system integration, event handling, OpenGL and OpenGL ES integration, 2D graphics, basic imaging, fonts and text. qt
libQt5Core mechanism for seamless object communication called signals and slots, object properties/trees/ownership, dynamic cast that works across library boundaries. qt
libGL libGL implements the GLX (OpenGL Extension to the X Window System) interface as well as the main OpenGL API entrypoints. freedesktop
libavutil utility library to aid portable multimedia programming (string functions, number generators, crypto etc.). Not needed by libavcodec and libavformat. ffmpeg
libavcodec generic encoding/decoding framework and contains multiple decoders and encoders for audio, video and subtitle streams, and several bitstream filters. ffmpeg
libavformat generic framework for multiplexing and demultiplexing (muxing and demuxing) audio, video and subtitle streams. ffmpeg
libavfilter generic audio/video filtering framework containing several filters, sources and sinks. ffmpeg
libswscale highly optimized image scaling and colorspace and pixel format conversion operations. ffmpeg
libswresample performs highly optimized audio resampling, rematrixing and sample format conversion operations. ffmpeg
libOpenColorIO A complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. opencolorio
libOpenImageIO Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications. openimageio
libOpenImageIO_Util argument parser, filesystem handling, threading etc., linked against Imath, Ilmbase
libIlmImf a library that reads and writes OpenEXR images. openexr
libImath a C++ library of 2D and 3D vector, matrix, and math operations for computer graphics. imath (got split out of OpenEXR)
libIex an exception-handling library. ilmbase / openexr
libIexMath
libHalf 16-bit "half" floating-point type imath (got split out of OpenEXR)
libIlmThread a thread abstraction library for use with OpenEXR and other software packages. ilmbase / openexr

libpthread libz | free, general-purpose, lossless data-compression library for use on virtually any computer hardware and operating system.zlib libdl | Historically, functions in libdl provided for dynamic linking support. This functionality now resides in libc. oracle libstdc++ libm | Under POSIX systems like Linux and BSD, the mathematical functions (as declared in <math.h>) are bundled separately in the mathematical library libm. There are various implementations (GNU, musl, Red Hat, ...). wikipedia libgcc_s libc ld-linux | The programs ld.so and ld-linux.so* find and load the shared libraries needed by a program, prepare the program to run, and then run it. man libpulse-mainloop-glib libpulse libglib libGLX libX11 libXext libGLdispatch libvpx | VP8/VP9 codec SDK webmproject liblzma | XZ Utils(?) lossless data compressor. wikipedia libaom | Alliance for Open Media AV1 encoder and decoder. google source libmp3lame libopenjp2 | open-source JPEG 2000 codec written in C language. OpenJPEG libopus | Opus audio codec opus-codec libtheoraenc | video encoder. theora libtheoradec | video decoder. theora libvorbis | audio decoder(?). xiph libvorbisenc | audio encoder. xiph libwebp | modern image format that provides superior lossless and lossy compression for images on the web. google devs libx264 | encoding video streams into the H.264/MPEG-4 AVC compression format. videoland libx265 | H.265 / HEVC video encoder application library, designed to encode video or images into an H.265 / HEVC encoded bitstream. x265 libxvidcore | video decoder and encoder library aimed at providing the best compression efficiency and picture quality possible. xvid libbz2 | libpostproc libfreetype libgif libpng libjpeg libraw_r libtiff libboost_filesystem | The Boost Filesystem Library provides portable facilities to query and manipulate paths, files, and directories. boost libboost_system | Operating system support, including the diagnostics support that will be part of the C++0x standard library. boost libboost_thread | Portable C++ multi-threading. C++03, C++11, C++14, C++17. boost libboost_chrono | Useful time utilities. C++11. boost libboost_date_time | A set of date-time libraries based on generic programming concepts. boost libboost_atomic | C++11-style atomic<>. boost librt libgssapi_krb5 libicui18n libicuuc libicudata libgthread libpulsecommon libcap libdbus libpcre libxcb libogg libnuma libSM libICE libjasper liblcms2 libgomp libjbig libkrb5 libk5crypto libcom_err libkrb5support libkeyutils libresolv libX11-xcb libXtst libsystemd libwrap libsndfile libasyncns libattr libXau libuuid libselinux libXi liblz4 libgcrypt libgpg-error libdw libnsl libgsm libFLAC libelf

Simran-B commented 3 years ago

Locally updated build image currently fails with:

WARNING: Plugin "/usr/local/plugins/platformthemes/libqgtk2.so" not found, skipping
WARNING: Plugin "/usr/local/plugins/styles/libqgtk2style.so" not found, skipping
ERROR: ldd outputLine: "libxcb-icccm.so.4 => not found"
ERROR: ldd outputLine: "libxcb-image.so.0 => not found"
ERROR: ldd outputLine: "libxcb-keysyms.so.1 => not found"
ERROR: for binary: "/usr/local/plugins/platforms/libqxcb.so"
ERROR: Please ensure that all libraries can be found by ldd. Aborting.

The image seems to be missing the following CentOS packages:

callegar commented 3 years ago

olive editor 0.2 appimage is currently unusable on ubuntu 20.04. When opening a project it immediately crashes saying "symbol lookup error: /tmp/.mount_olive-xB8ySC/usr/plugins/platforms/../../lib/libQt5XcbQpa.so.5: undefined symbol: _ZdlPvm, version Qt_5". Apparently this is an issue with the appimage libraries, so reporting here.

Issue is nasty because it happens when opening projects. So you may try olive, work on something for one hour save it and find yourself in the impossibility of opening it back to continue working on it.

If running on ubuntu LTS is deemed important, please consider rising priority.

rempas commented 2 years ago

Please, for the love of the god!!! Add "libsvtav1" support out of the box! Trying to make it work with Kdenlive and Shotcut has been a Hell and I have not succeeded until today...