Repository navigation
fix(release): don't bundle libwayland into the Tauri AppImage, and gate it - #1509
Conversation
|
@greptileai review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
|
@greptileai review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: cdeeea8b27
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@greptileai review |
|
@TimeToBuildBob review |
🤖 AI code reviewThis PR excludes libwayland from the Tauri AppImage bundle by setting LINUXDEPLOY_EXCLUDED_LIBRARIES in the build-tauri job, adds a host-ABI gate step that runs host-abi-gate.sh on the Tauri AppImage with a wayland-only library list, and extends host-abi-gate.sh to accept a HOST_ABI_LIBS_LIST environment variable that replaces the default library list. It also adds a new test file for the gate script and wires that test into the research-edition-checks job. Needs a look — P2 onlyConfidence 4/5 1 finding ·
|
| commit | score | findings | engine | when |
|---|---|---|---|---|
fdde6f076b54 |
5/5 | 0 | llm | 2026-10-07 12:16 UTC |
Reviewed dffe289cc8c3 · openrouter/deepseek/deepseek-v4-flash-0731 · llm engine · 51s · about this reviewer
Maintainer commands
@TimeToBuildBob review (own line) — fresh review · @TimeToBuildBob fix — a worker acts on the findings. Once per comment; 👀 = received.
|
@TimeToBuildBob What's up with CI here? |
|
Three Linux Tauri jobs are red; Qt, macOS, Windows, CodeQL, Greptile, and the host-abi-gate unit tests are green. ARM + research (expected): the new Host-ABI gate found all four ubuntu-24.04 x86_64 (different): packaging never put an AppImage in Master is 9 commits ahead, including the CLI 2.12.1 pin ( |
|
Rebase onto current master is clean locally (3 commits replay, 8/8 Fork copy: TimeToBuildBob@f0931c4 on The PR is MERGEABLE. Update branch pulls in CLI 2.12.1 ( |
fdde6f0 to
dffe289
Compare
| # The forbidden name exists only as a link to a harmless file, so this | ||
| # fails if the gate stops checking symlinks. | ||
| bundle = make_bundle(tmp_path) | ||
| (bundle / "usr" / "lib" / "libwayland-client.so.0").symlink_to("libgtk-3.so.0") |
There was a problem hiding this comment.
test_symlinked_name_is_flagged creates a symlink libwayland-client.so.0 pointing to libgtk-3.so.0. The gate script's scan_dir resolves symlinks and checks the target's basename. In this case, the target is libgtk-3.so.0, which is not in the wayland-only list, so the gate should NOT flag it. However, the test asserts run_gate(bundle, WAYLAND_ONLY) == 1, expecting the gate to fail. The test comment says 'The forbidden name exists only as a link to a harmless file, so this fails if the gate stops checking symlinks.' But the gate checks both the link name and the target name. The link name libwayland-client.so.0 matches the wayland list, so the gate flags it. The test is correct in that the gate flags the symlink by its own name, but the comment is misleading. The test does not actually verify that the target name is checked; it verifies that the link name is checked. This is a test-defect because the test's stated purpose (checking symlink target resolution) is not what it tests. The test would pass even if the gate only checked the link name and never resolved the target, so it does not pin the symlink-target behavior.
There was a problem hiding this comment.
False positive. test_symlinked_name_is_flagged and its comment explicitly test a forbidden link name pointing to a harmless file; neither claims to test target resolution. That is intentional: the loader can request the forbidden soname even when its target has a different name. Changing the assertion to success would weaken the gate, and pointing at a forbidden regular file would reintroduce the masking problem Greptile already identified and Erik fixed.
Verified on current head 0fadc0400067: all 8 gate tests pass. Replayed the exact fixture against an unchanged gate (exit 1) and a scratch mutation removing -type l from find (exit 0). The test therefore catches loss of symlink scanning exactly as its comment says. No code change needed.
|
CI after rebasing onto bc96b3d (aw-tauri cad510b, |
|
That settles the exclusion question: the rebased Linux Tauri build is exercising the newer linuxdeploy, and the real AppImage passes the Wayland gate. The Qt failure has a separate fix in ActivityWatch/aw-server#186, so I won't duplicate it here. Our symlink-test finding is a false positive. On current head I cannot resolve the inline thread: GitHub denies |
…te it A libwayland copied from the Ubuntu build image clashes with the host's newer Mesa: crashes or a blank webview on e.g. Arch/KDE Wayland (tauri-apps/tauri#15665, tauri-apps/tauri#15976). Set LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-* for the Tauri builds (linuxdeploy honors it from @tauri-apps/cli 2.12, tauri-apps/tauri#16062), and run the host-ABI gate on the Tauri AppImage. host-abi-gate.sh gains HOST_ABI_LIBS_LIST so this bundle can keep glib, which its GTK/WebKitGTK needs.
dffe289 to
0fadc04
Compare
A Discord user on CachyOS (KDE Plasma 6, Wayland) gets segfaults clicking tray items in the v0.14.0 Tauri AppImage. Not reproduced yet (we've asked for a backtrace), but the bundle matches a known upstream failure: the v0.14.0 AppImage ships
libwayland-client/-cursor/-egl/-serverfrom the Ubuntu 24.04 build image but no Mesa, so host Mesa 25+ loads on top of an older libwayland. That's tauri-apps/tauri#15665 and tauri-apps/tauri#15976 (crash or blank webview), fixed upstream by tauri-apps/tauri#16062 (newer linuxdeploy, shipped in@tauri-apps/cli2.12.0). It's the same class as #1484, which only covers the Qt bundle.Changes
release.yml(build-tauri):LINUXDEPLOY_EXCLUDED_LIBRARIES=libwayland-*, which linuxdeploy (run by Tauri's bundler) reads.host-abi-gate.shon the Tauri AppImage, checking onlylibwayland-*.host-abi-gate.sh:HOST_ABI_LIBS_LISTreplaces the default list. The Tauri AppImage keeps glib on purpose, because its bundled GTK 3 / WebKitGTK need the glib they were built against. The Qt gate is unchanged.Merge with the v0.14.1 aw-tauri bump. The current aw-tauri pin (1d52445) builds with cli 2.11.4, whose linuxdeploy ignores the exclude variable, so I expect this PR's Linux Tauri jobs to fail the new gate. That's the gate catching the v0.14.0 bundle. aw-tauri master is on cli 2.12.0 (ActivityWatch/aw-tauri@c8c566c), so it should pass once the submodule is bumped.
Tested locally:
bash -n, the YAML parses, and the gate's three cases on a fake tree: libwayland present → 1; only glib with the wayland list → 0; only glib with the default list → 1. Extracting a real AppImage needs Linux, so CI is the check there.Complementary runtime mitigation: ActivityWatch/aw-tauri#286 (
WEBKIT_DISABLE_DMABUF_RENDERER=1under an AppImage).