Update outdated AppImage runtime and build prerequisites#13
Open
candux wants to merge 2 commits into
Open
Conversation
Check for the 7z executable that the extraction step actually invokes, while retaining the existing distro package mappings. Raise the Node.js minimum to 22.12 and bootstrap Node 22.23.1. Electron 42.6.1 requires Node >=22.12, and the previous Node 20 bootstrap fails while installing Electron's platform binary.
Replace the obsolete AppImageKit continuous build with appimagetool 1.9.1 and the 20251108 Type-2 runtime. Verify both artifacts against their upstream SHA-256 digests and reuse only verified cache entries. Map Debian architecture names to AppImage names, pass the runtime explicitly with --runtime-file, and run appimagetool in extract-and-run mode. Generated AppImages are static PIE executables and no longer require the host's legacy libfuse.so.2.
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.
Thank you so much for this project! After struggling to run Figma with Wine on Linux for a long time, I was incredibly relieved when I found it.
One thing I noticed was the use of libfuse.so.2, which was not installed on my system. Here is a driveby fix for that.
Summary
The current AppImage packaging is outdated: it downloads appimagetool from the obsolete AppImageKit continuous release and generates an AppImage whose runtime requires the legacy system library libfuse.so.2.
This PR moves packaging to the maintained AppImage tooling and static Type-2 runtime. The resulting AppImage no longer depends on the host providing FUSE 2.
It also updates other stale build prerequisites exposed by a complete build against the current Figma Desktop release.
Why this update is needed
The existing build still uses:
AppImage/AppImageKit/releases/download/continuous/appimagetool-...
That is the legacy distribution of appimagetool. Its generated runtime dynamically loads libfuse.so.2.
This no longer matches the state of current Linux distributions:
The AppImage project now maintains appimagetool and its static Type-2 runtime in separate repositories. The static runtime includes the necessary FUSE support and does not require libfuse.so.2 from the host.
The existing Node.js requirement is outdated as well. Current Figma Desktop 126.6.14 uses Electron 42.6.1, whose installer requires Node.js 22.12 or newer. The previous Node.js 20 bootstrap fails while installing the current Electron
platform binary.
Changes
Replace the obsolete AppImageKit continuous artifact with:
appimagetool 1.9.1
Type-2 runtime 20251108
Pin both artifacts to immutable releases.
Verify downloads against their upstream SHA-256 digests.
Pass the runtime explicitly using --runtime-file.
Avoid the maintained tool’s otherwise unpinned runtime download.
Map package architecture names to the names expected by AppImage:
amd64 → x86_64
arm64 → aarch64
Run appimagetool in extract-and-run mode so the build host does not need FUSE.
Raise the Node.js minimum from 20 to 22.12.
Update the local bootstrap from Node.js 20.18.1 to 22.23.1.
Check for the 7z executable rather than a command named p7zip.
The 7z adjustment does not change distro package selection. p7zip is a package name, while 7z is the executable that the build invokes. The previous check produced false missing-dependency results and relied on package installation to
mask the mismatch.
Verification
Tested with a complete build of the current Figma Desktop release:
Figma Desktop: 126.6.14
Electron: 42.6.1
Node.js: 22.23.1
Results:
AI assistance notice
This change was developed with assistance from OpenAI Codex.