feat(appimage): support static appimage runtime#9558
Conversation
🦋 Changeset detectedLatest commit: 30eccb3 The changes in this PR will be included in the next version bump. This PR includes changesets to release 8 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
9a4ba81 to
4ac8011
Compare
24c843c to
7252877
Compare
There was a problem hiding this comment.
Pull request overview
Adds an opt-in AppImage toolset that uses a static (FUSE-less) runtime, while keeping the legacy FUSE2-based AppImage build as the default for backward compatibility.
Changes:
- Adds
toolsets.appimage("0.0.0"legacy,"1.0.2"static runtime) to config schema and JSON schema. - Implements a new AppImage build path (static runtime) alongside the existing legacy AppImage builder path.
- Expands test coverage/snapshots and adjusts CI/docker steps for updater/AppImage-related tests.
Reviewed changes
Copilot reviewed 18 out of 18 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
packages/app-builder-lib/src/configuration.ts |
Adds toolsets.appimage to the typed configuration. |
packages/app-builder-lib/scheme.json |
Exposes toolsets.appimage in the generated JSON schema. |
packages/app-builder-lib/src/toolsets/linux.ts |
Adds downloader/locator for AppImage runtime tool artifacts. |
packages/app-builder-lib/src/targets/AppImageTarget.ts |
Routes AppImage builds to legacy vs static runtime toolset; adds blockmap append for new path. |
packages/app-builder-lib/src/targets/appimage/appImageUtil.ts |
Implements static-runtime AppImage assembly (stage dir population + squashfs + runtime prepend). |
packages/app-builder-lib/src/targets/appimage/appLauncher.ts |
Adds icon copying + MIME type XML generation for the new runtime staging. |
packages/app-builder-lib/templates/appimage/AppRun.sh |
Adds an AppRun template intended for the new runtime. |
packages/app-builder-lib/src/util/packageMetadata.ts |
Supports resolving electron-updater version when specified via link: in addition to file:. |
test/src/updater/blackboxUpdateTest.ts |
Runs updater E2E across multiple winCodeSign and appimage toolset versions; switches test fixture install to pnpm/linking. |
test/src/linux/linuxPackagerTest.ts |
Restructures AppImage tests to iterate across toolset versions. |
test/snapshots/** |
Updates/adds snapshots for new suite naming and toolset combinations. |
.github/workflows/test.yaml |
Builds docker test image before running Linux updater E2E job. |
.github/actions/pretest/action.yml |
Adjusts Vitest smart cache restore/reset wiring. |
package.json |
Adjusts test-linux env default and removes some top-level test scripts. |
.vscode/launch.json |
Adds a pnpm-based debug launch configuration. |
.changeset/eight-baths-stick.md |
Declares a minor bump for app-builder-lib for the new toolset support. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
e5548a2 to
7c5a26f
Compare
…ng an opt-in alternative to the legacy FUSE2-based AppImage packaging system.
7c5a26f to
82230ef
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 5 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 19 out of 19 changed files in this pull request and generated 9 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
ef56714 to
f0587a8
Compare
Context: electron-userland/electron-builder#8686 electron-userland/electron-builder#9558 electron-userland/electron-builder#9610 Signed-off-by: OjusWiZard <ojuswimail@gmail.com>
Resolves #8686
Summary
This PR adds support for a new AppImage runtime toolset, providing an opt-in alternative to the legacy FUSE2-based AppImage packaging system.
Changes
Configuration Schema Updates
appimagetoolset configuration option inToolsetConfig"0.0.0"(legacy) and"1.0.2"(new runtime)"0.0.0"for backward compatibilityNew AppImage Building Infrastructure
packages/app-builder-lib/src/targets/appimage/appImageUtil.ts- Core AppImage building utilities for the new runtimepackages/app-builder-lib/src/targets/appimage/appLauncher.ts- Handles icon copying and MIME type generationpackages/app-builder-lib/templates/appimage/AppRun.sh- Template for AppImage launcher scriptAppImage Target Refactoring
AppImageTarget.tsto support both legacy and new toolsetsbuildFuse2AppImage) preserved when toolset is"0.0.0"or not specifiedbuildAppImagefromappImageUtil.tsfor version"1.0.2"Toolset Management
getAppImageTools()function to download and manage AppImage toolset artifactselectron-userland/electron-builder-binariesreleasesKey Features of New Runtime
Dependency Updates
packageMetadata.tsto handle bothfile:andlink:prefixed electron-updater versions for workspace testingTesting
Backward Compatibility
"0.0.0"toolset)toolsets.appimage: "1.0.2"in their build configurationUsage
To use the new AppImage runtime, configure your electron-builder config:
{ "linux": { "target": "AppImage" }, "toolsets": { "appimage": "1.0.2" } }