Skip to content

feat(appimage): support static appimage runtime#9558

Merged
mmaietta merged 6 commits into
masterfrom
appimage-migration
Feb 12, 2026
Merged

feat(appimage): support static appimage runtime#9558
mmaietta merged 6 commits into
masterfrom
appimage-migration

Conversation

@mmaietta
Copy link
Copy Markdown
Collaborator

@mmaietta mmaietta commented Feb 1, 2026

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

  • Added new appimage toolset configuration option in ToolsetConfig
  • Supports versions "0.0.0" (legacy) and "1.0.2" (new runtime)
  • Default remains "0.0.0" for backward compatibility

New AppImage Building Infrastructure

  • New Files:
    • packages/app-builder-lib/src/targets/appimage/appImageUtil.ts - Core AppImage building utilities for the new runtime
    • packages/app-builder-lib/src/targets/appimage/appLauncher.ts - Handles icon copying and MIME type generation
    • packages/app-builder-lib/templates/appimage/AppRun.sh - Template for AppImage launcher script

AppImage Target Refactoring

  • Updated AppImageTarget.ts to support both legacy and new toolsets
  • Legacy build path (buildFuse2AppImage) preserved when toolset is "0.0.0" or not specified
  • New build path uses buildAppImage from appImageUtil.ts for version "1.0.2"
  • Both paths generate proper blockmap and update info

Toolset Management

  • Added getAppImageTools() function to download and manage AppImage toolset artifacts
  • Downloads from electron-userland/electron-builder-binaries releases
  • Includes architecture-specific runtimes (x64, ia32, arm32, arm64)
  • Bundles mksquashfs, desktop-file-validate, and runtime libraries

Key Features of New Runtime

  • Uses static AppImage runtime (FUSE-less)
  • Supports multiple compression formats (xz, lzo, zstd)
  • Hardlink-based file copying for efficiency with fallback to regular copy
  • Generates desktop files, icons, and MIME type associations
  • Includes EULA support (text and HTML)
  • Proper environment variable setup for Linux desktop integration

Dependency Updates

  • Fixed packageMetadata.ts to handle both file: and link: prefixed electron-updater versions for workspace testing

Testing

  • Added comprehensive snapshot tests for both AppImage toolset versions
  • E2E auto-updater tests for ARM64 and x64 architectures
  • Tests for various Windows code signing toolset versions
  • All existing tests continue to pass with the legacy toolset

Backward Compatibility

  • Default behavior unchanged (uses legacy "0.0.0" toolset)
  • Users can opt-in to new runtime by setting toolsets.appimage: "1.0.2" in their build configuration
  • Both toolsets produce compatible AppImage outputs with update info

Usage

To use the new AppImage runtime, configure your electron-builder config:

{
  "linux": {
    "target": "AppImage"
  },
  "toolsets": {
    "appimage": "1.0.2"
  }
}

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Feb 1, 2026

🦋 Changeset detected

Latest commit: 30eccb3

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 8 packages
Name Type
app-builder-lib Major
dmg-builder Major
electron-builder-squirrel-windows Major
electron-builder Major
electron-forge-maker-appimage Major
electron-forge-maker-nsis-web Major
electron-forge-maker-nsis Major
electron-forge-maker-snap Major

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

@mmaietta mmaietta linked an issue Feb 1, 2026 that may be closed by this pull request
@mmaietta mmaietta force-pushed the feat/win-codesign-osslsigncode branch 4 times, most recently from 9a4ba81 to 4ac8011 Compare February 9, 2026 03:27
Base automatically changed from feat/win-codesign-osslsigncode to master February 9, 2026 15:23
@mmaietta mmaietta force-pushed the appimage-migration branch 2 times, most recently from 24c843c to 7252877 Compare February 9, 2026 23:47
@mmaietta mmaietta requested a review from Copilot February 10, 2026 14:29
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread test/src/linux/linuxPackagerTest.ts
Comment thread .github/actions/pretest/action.yml
Comment thread packages/app-builder-lib/templates/appimage/AppRun.sh Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/AppImageTarget.ts Outdated
@mmaietta mmaietta force-pushed the appimage-migration branch 2 times, most recently from e5548a2 to 7c5a26f Compare February 11, 2026 15:03
…ng an opt-in alternative to the legacy FUSE2-based AppImage packaging system.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread packages/app-builder-lib/src/targets/appimage/appLauncher.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts
Comment thread test/src/updater/differentialUpdateTest.ts
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread packages/app-builder-lib/src/targets/appimage/AppImageTarget.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appLauncher.ts Outdated
Comment thread test/vitest-scripts/vitest-smart-reporter.ts
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/AppImageTarget.ts
Comment thread packages/app-builder-lib/src/targets/appimage/appImageUtil.ts Outdated
Comment thread packages/app-builder-lib/src/targets/appimage/AppImageTarget.ts Outdated
@mmaietta mmaietta marked this pull request as ready for review February 11, 2026 23:51
@mmaietta mmaietta merged commit c18f0eb into master Feb 12, 2026
64 of 65 checks passed
@mmaietta mmaietta deleted the appimage-migration branch February 12, 2026 13:50
OjusWiZard added a commit to valory-xyz/olas-operate-app that referenced this pull request Mar 16, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Switch to the static AppImage runtime.

2 participants