Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[bug] Built AppImage is seemingly broken due to libgstreamer not being included #4092

Closed
xTVaser opened this issue May 10, 2022 · 4 comments
Closed

Comments

@xTVaser
Copy link

xTVaser commented May 10, 2022

Describe the bug

I've ran into this issue using an AppImage built via GitHub actions (Ubuntu 20.04) as well as reproduced it on a fresh Ubuntu 22.04 VM. It was also discussed in the discord and I was also able to fix the issue by using the same workaround - https://discord.com/channels/616186924390023171/731495064508825731/968988490769526794

I'm making this issue because it's still a consistent problem on my end and I didn't see a proper issue get made -- just want something to track.

Without the workaround running the AppImage results in the following logs and the App does not startup properly:

GStreamer element autoaudiosink not found. Please install it

(WebKitWebProcess:20067): GLib-GObject-WARNING **: 19:28:11.131: invalid (NULL) pointer instance

(WebKitWebProcess:20067): GLib-GObject-CRITICAL **: 19:28:11.131: g_signal_connect_data: assertion 'G_TYPE_CHECK_INSTANCE (instance)' failed

Manually including libgstreamer with the workaround:

# Add `-f` to symlink creation commands so they will work even if they already exist
sed -i 's/ln -s/ln -s -f/g' build_appimage.sh
sed -i 's/wget -q -4 -O linuxdeploy-plugin-gtk.sh/# wget -q -4 -O linuxdeploy-plugin-gtk.sh/g' build_appimage.sh
sed -i 's/ln $verbose -s/ln $verbose -s -f/g' linuxdeploy-plugin-gtk.sh
# Manually Add GStreamer (for ubuntu 22.04):
sed -i 's/chmod +x AppRun/cp -rf \/usr\/lib\/x86_64-linux-gnu\/gstreamer-1.0 usr\/lib \&\& chmod +x AppRun/g' build_appimage.sh
# Disable this line
sed -i 's/cp -r ..\/appimage_deb/# cp -r ..\/appimage_deb/g' build_appimage.sh
# Recreate the AppImage
./build_appimage.sh

Results in an AppImage that works and has no similar error/warning logs

WebKit wasn't able to find a WebVTT encoder. Subtitles handling will be degraded unless gst-plugins-bad is installed.

Reproduction

No response

Expected behavior

No response

Platform and versions

`npm run tauri info`

tauri "info"

Environment
› OS: Ubuntu 22.04 X64
› Node.js: 16.15.0
› npm: 8.5.5
› pnpm: Not installed!
› yarn: Not installed!
› rustup: Not installed!
› rustc: 1.58.1
› cargo: 1.57.0
› Rust toolchain:

Packages
› @tauri-apps/cli [NPM]: 1.0.0-rc.10
› @tauri-apps/api [NPM]: 1.0.0-rc.5
› tauri [RUST]: 1.0.0-rc.8,
› tauri-build [RUST]: 1.0.0-rc.7,
› tao [RUST]: 0.8.3,
› wry [RUST]: 0.15.1,

App
› build-type: bundle
› CSP: unset
› distDir: ../dist
› devPath: http://localhost:3000/
› framework: Svelte

App directory structure
├─ public
├─ .github
├─ src
├─ scripts
├─ node_modules
├─ docs
├─ third-party
├─ dist
├─ src-tauri
├─ .vscode
├─ backup
├─ .git
├─ .tauri
└─ bundle-test

Stack trace

No response

Additional context

No response

@FabianLars
Copy link
Member

Ayy kinda forgot about it in the end, so thanks for the issue.

My current plan is, because it turns out to be a little involved, to add a config option like you suggested on discord and use the linuxdeploy gstreamer plugin.

That said, if it turns out that the size difference is small enough it will be always bundled without a config.

@FabianLars FabianLars self-assigned this May 10, 2022
@FabianLars
Copy link
Member

FabianLars commented May 10, 2022

Quick update: I got it kinda working cross-platform (needs quite some cleanup tho). By just copying the whole folder, the size increase is pretty huge tho (using mw-toolbox):

  • ubuntu 18.04: 13mb up, resulting in ~75mb
  • fedora 35: 32mb up, resulting in ~100mb

i don't really know if it's worth to explore selectively copying files here as I just don't see a way to figure out what's needed.

at the moment i'm still trying to figure out how to fix gio/glib-networking to use the system's certificates. If i can't figure that out soon enough i will go ahead and open a PR for the gstreamer stuff alone. (btw if anybody has an idea about glib-networking inside appimages, please reach out to me 😢 )

@FabianLars
Copy link
Member

FabianLars commented May 11, 2022

So i didn't have time to work on it today but got a question before creating a PR and forking the linuxdeploy plugin.
@lucasfernog What do you think about these size increases (or size increases in general)? how should we handle them? Should there be a new config option or do we consider the need for audio/video support common enough to always bundle it?
Also, we most likely don't need all of these files, but we can cut down on them later since the bundler always pulls the latest git versions of the linuxdeploy plugins (I'm not focusing on doing that beforehand to not further delay v1 btw). We obviously can't remove that many of them because we don't know which of them will be needed by the app 🤷

On the topic of the certificate thing, i think i got it or at least got closer, but i was bound to windows the whole day so couldn't actually test it out. But seriously, this certificate stuff is the worst thing ever.

Edit: in all honesty I don't see us providing built-in support for building appimages in later tauri releases at this point... I personally only see it as a temporary alternative until we introduce support for rpm, flatpak&flathub and whatever else.

@lucasfernog
Copy link
Member

AppImage sucks I know. I'd add an option to include the audio|video stuff.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants