probonopd / linuxdeployqt

Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications
Other
2.15k stars 407 forks source link

Wrapper sh is not calling ffmpeg #507

Open marvic41 opened 2 years ago

marvic41 commented 2 years ago

HERE="$(dirname "$(readlink -f "${0}")")" export LD_LIBRARY_PATH=${HERE}/usr/lib:$LD_LIBRARY_PATH exec "${HERE}/usr/bin/ffmpeg.bin" "$@"

Anything missing from above, (AppDir/usr/bin)

Followed this workaround for ffmpeg.

https://github.com/J5lx/pencil2d/commit/5da5e8202436014d99287b7c61703ec53e47e85b#diff-6ac3f79fc25d95cd1e3d51da53a4b21b939437392578a35ae8cd6d5366ca5485R78

Even copied this .sh to AppDir/AppRun/ also.

Thanks.

probonopd commented 2 years ago

Did you copy usr/bin/ffmpeg.bin into your AppDir? And did you deploy its dependencies, too? How?

Please give more context. What do you want to do, and how are you doing it.

marvic41 commented 2 years ago

@probonopd, Thanks for replay.

This app is, screen capture and saving video. This app works fine on Ubuntu 20 desktop with ffmpeg installed. App use ffmpeg command,

newProcess->start("ffmpeg", QStringList(str).split(" "));

But after .AppImage it is not.

Inside run.sh

The is ffmpeg,

install -Dm755 ../ScreenApp/ffmpeg-wrapper.sh AppDir/usr/bin/ffmpeg cp ../ScreenApp/ffmpeg-wrapper.sh AppDir/AppRun/ffmpeg --> tried cp /usr/bin/ffmpeg AppDir/AppRun/ffmpeg.bin-->tried install -Dm 755 /usr/bin/ffmpeg AppDir/usr/bin/ffmpeg.bin

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/bin ffmpeg"

Here copied all all libs to AppDir/usr/lib/ libjpeg.so.8 libavdevice.so.58 libavfilter.so.7 libavformat.so.58 libavcodec.so.58 libavutil.so.56 libmp3lame.so.0 libx264.so.155 libx265.so.179 Like this, install -Dm 755 /usr/lib/x86_64-linux-gnu/libjpeg.so.8 AppDir/usr/lib/

Linuxdeployqt command,

./linuxdeployqt-5-x86_64.AppImage AppDir/ScreenApp.desktop -qmldir=$SOURCE_DIR -qmake=$QMAKE_PATH -executable=AppDir/usr/bin/ffmpeg.bin -appimage -no-translations -bundle-non-qt-libs -verbose=2

probonopd commented 2 years ago

Please use https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage - 5 is very outdated and unsupported.

AppRun must be a file or a symlink. Not a directory. Or nothing (then linuxdeployqt creates it for you).

marvic41 commented 2 years ago

@probonopd, continuous version needs older version of glibc 2.27. This app works only on Ubuntu 20.

Got error with continuous,

Linuxdeployqt 7 (commit b469748), build 734 built on 2021-06-13 13:17:57 UTC ERROR: The host system is too new. Please run on a system with a glibc version no newer than what comes with the oldest currently still-supported mainstream distribution (Ubuntu Bionic), which is glibc 2.27. This is so that the resulting bundle will work on most still-supported Linux distributions.

Very Strange, it did not gave error with Linuxdeployqt 5. How the app compiled with older version but not newer version of Linuxdeployqt.

marvic41 commented 2 years ago

@probonopd From this link, What is meaning of Step 9, I could not understand it. 9. Copy your wrapper in appdir/AppRun (i.e. to the place of the AppRun that was there).

https://github.com/probonopd/linuxdeployqt/wiki/Custom-wrapper-script-instead-of-AppRun#example-wrapper-in-bash

probonopd commented 2 years ago

@marvic41

The system you are running linuxdeploy on is too new. Please run on an older distribution, e.g., Ubuntu Bionic.

This is what the message wants to tell you.

marvic41 commented 2 years ago

@probonopd,

I understood that libc version issue. Now I am trying on Ubuntu 18. App is running but not playing video, ffmpeg issue.

If step 9 implemented, may be AppRun would invoke wrapper path.