ci(release): stop bundling libwayland in the AppImage and reuse build.yml for releases - #599
Merged
Merged
Conversation
…yland from AppImage The v0.13.3 AppImage regression (#423) came from release.yml and build.yml drifting apart: releases went back to the official tauri-cli bundler, which bundles the build container's libwayland. On hosts with a newer Mesa the host libEGL binds to that stale libwayland-client and WebKitWebProcess aborts with EGL_BAD_PARAMETER. release.yml is now a thin dispatcher over the reusable build.yml matrix, so the two channels cannot drift again. The stable path keeps the official tauri-cli and pre-seeds a patched linuxdeploy-plugin-gtk.sh that removes libwayland-*.so* from the AppDir before packing, per the AppImage excludelist. Nightlies keep the experimental sharun format behind the new experimental_appimage input.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #423.
Root cause
The AppImage bundles the build container's
libwayland-client/cursor/egl/server(Ubuntu 22.04, libwayland ~1.20). On distros with a recent Mesa (Solus, up to date Arch) the host libEGL binds to that stale bundledlibwayland-clientinstead of the system one, protocol marshalling doesn't match, and WebKitWebProcess aborts withEGL_BAD_PARAMETER, leaving a black window. This is a known class of AppImage breakage: the upstream excludelist addedlibwayland-client.so.0for exactly this reason (AppImageCommunity/pkg2appimage#559, referencing mesa#11316). The linuxdeploy binary pinned by tauri-cli predates that entry, and upstream has stated the linuxdeploy based bundler won't be worked on anymore (tauri-apps/tauri#8604), so waiting for a fix there is not an option.The regression window matches the CI history: v0.13.2 was built with the custom
feat/truly-portable-appimagetauri-cli and worked, thenfe592726switched releases back to the official tauri-cli 2.11.4 and v0.13.3/v0.13.4 broke. Nightlies kept the custom CLI inbuild.yml, which is why they still work on Solus today. HelixNotes, mentioned in the issue as a working reference, actually ships the same four libwayland libs; theirs happen to be new enough (glibc 2.38 base) to still be compatible with current Mesa, so it is the same time bomb on a longer fuse rather than a different approach.What changed
.github/workflows/build.yml: the stable path (official tauri-cli) now pre-seeds a patchedlinuxdeploy-plugin-gtk.shinto the tauri tools cache. tauri-bundler only downloads that file when it is missing, so the patched copy is picked up and removeslibwayland-*.so*from the AppDir at the end of the plugin run, before the squashfs is packed. The updater signature is computed afterwards and stays valid. The custom CLI override,TAURI_BUNDLER_NEW_APPIMAGE_FORMATand thecargo tauriscript are now gated behind a newexperimental_appimageinput (default false). Also added arelease_bodyinput so callers can set the release notes..github/workflows/release.yml: rewritten as a thin dispatcher: ametajob resolving ref/tag/prerelease (same logic as before, tag push orpr_number/tag_namedispatch) plus aworkflow_calltobuild.yml. The duplicated matrix, signing and notarization config is gone, which is what allowed the two channels to drift apart and cause this regression in the first place. As a side effect releases inherit the correct Rust target condition formacos-15-intel(the old copy still referencedmacos-13)..github/workflows/nightly.yml: passesexperimental_appimage: true, so nightlies keep building the sharun based format from tauri-apps/tauri#12491 unchanged and keep serving as its daily canary until that PR stabilises.Verification
XDG_CACHE_HOME: the produced AppImage contains 0libwayland-*files (the published v0.18.0 contains 4), the rest of the bundle is unchanged, and the app starts cleanly with host libwayland (GTK/WebKit up, no EGL errors).pr_number+v0.18.1-appimage-test.1) so the Solus reporters in [Bug]: AppImage Fails to Start #423 can test the artifact built in the ubuntu:22.04 container before this merges.CI YAML only, no code symbols touched (GitNexus impact analysis n/a).