Fix Linux AppImage launch failure (libfuse2) + per-arch artifact name - #1575
Open
kkerti wants to merge 1 commit into
Open
Fix Linux AppImage launch failure (libfuse2) + per-arch artifact name#1575kkerti wants to merge 1 commit into
kkerti wants to merge 1 commit into
Conversation
Users on Manjaro and Ubuntu report the AppImage failing to launch with
"execv error: Transport endpoint is not connected" / "Input/output
error". Two Linux packaging issues, both introduced with the new build
pipeline:
1. electron-builder's default AppImage toolset ("0.0.0") embeds the
legacy runtime that dynamically links libfuse.so.2 to self-mount its
squashfs. Manjaro/Arch and current Ubuntu (23.10 / 24.04+) no longer
ship libfuse2 by default, so the mount fails and the runtime aborts
with ENOTCONN/EIO before the app starts. Opt into the modern toolset
("1.0.2", runtime 20251108), which bundles the FUSE libraries inside
the AppImage and drops the host libfuse2 dependency. Flatpak was
unaffected because it never uses the AppImage/FUSE runtime.
2. linux.artifactName was missing ${arch}. The matrix builds AppImages
on both x64 and arm64 runners, and the publish step merges all
artifacts into one directory, so the two builds shared a filename and
silently overwrote each other. Add ${arch} so each arch keeps its own
file.
Auto-update path is preserved: electron-updater selects the update by
".AppImage" extension (not filename), and each arch already reads its
own channel file (latest-linux.yml / latest-linux-arm64.yml), so the
arch-specific names line up. This actually repairs the prior collision
where both channels referenced one overwritten file.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Contributor
Author
|
This PR also fixes the fact, that appimage artifacts overwrote each other without |
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.
Problem
Since the Linux build pipeline changed, users report the AppImage failing to launch:
execv error: Transport endpoint is not connected(ENOTCONN)execv error: Input/output error(EIO)Flatpak builds are unaffected.
Root cause
1. Legacy FUSE2 AppImage runtime. electron-builder 26.8's
toolsets.appimagedefaults to"0.0.0", which uses the legacy runtime (buildFuse2AppImage). That runtime dynamically linkslibfuse.so.2to self-mount its embedded squashfs. Manjaro/Arch and current Ubuntu (23.10 / 24.04+) no longer shiplibfuse2by default, so the mount never comes up → accessingAppRunat the dead mountpoint returns ENOTCONN / EIO → the runtime printsexecv error: <errno>before the app starts. Flatpak doesn't use the AppImage/FUSE runtime, so it was never affected.2.
artifactNamemissing${arch}. The matrix builds AppImages on bothubuntu-22.04(x64) andubuntu-22.04-arm(arm64). The publish job downloads all artifacts into one directory withmerge-multiple: true, so both builds shared the filenamegrid-editor-linux-<ver>.AppImageand silently overwrote each other — one arch's users could get the wrong-arch binary.Fix
toolsets.appimage: "1.0.2"(runtime 20251108). This toolset bundles the FUSE libraries inside the AppImage (usr/lib), removing the hostlibfuse2dependency.${arch}tolinux.artifactNameso x64/arm64 keep distinct filenames.Auto-update: verified safe
Checked against the installed
electron-updater:findFile(..., "AppImage", ...)), not by filename — the rename doesn't affect selection.getChannelFilePrefix(): x64 →latest-linux.yml, arm64 →latest-linux-arm64.yml), and electron-builder regenerates those pointing at the new arch-specific files. This actually repairs the prior collision where both channels referenced a single overwritten AppImage.Note
toolsets.appimage: "1.0.2"is marked beta in electron-builder. Recommend validating a produced AppImage on a clean Manjaro / Ubuntu 24.04 box withoutlibfuse2installed before the release goes out.🤖 Generated with Claude Code