Skip to content

Migrate from AppImage extra-data to deb package extraction#103

Open
besdar wants to merge 5 commits into
flathub:masterfrom
besdar:manifest-update
Open

Migrate from AppImage extra-data to deb package extraction#103
besdar wants to merge 5 commits into
flathub:masterfrom
besdar:manifest-update

Conversation

@besdar
Copy link
Copy Markdown

@besdar besdar commented Feb 15, 2026

Hello @helloanoop and @Pragadesh-45

Note: This PR content and description were written with the assistance of AI, but all changes have been tested and verified manually. I have prior experience with Flathub contributions (see RustDesk Flatpak manifest), which was submitted by me without AI assistance.

This PR migrates the Bruno Flatpak from using extra-data source type with AppImage extraction to a standard deb package extraction approach.

Files Changed

File Change
com.usebruno.Bruno.yml Rewritten to use deb package extraction with x-checker-data (Enables automatic version updates via Flathub's update bot)
com.usebruno.Bruno.metainfo.xml License changed to MIT (Bruno's actual license)
flathub.json Deleted - Bruno now supports aarch64
com.usebruno.Bruno.desktop Deleted - now extracted from deb
com.usebruno.Bruno.png Deleted - now extracted from deb (multiple icon sizes)
apply_extra.sh Deleted - no longer needed

Why removing apply_extra.sh is necessary

The key change in this PR is removing apply_extra.sh and the extra-data source type. This helps Bruno to be labeled as "Community Built" on Flathub.

How extra-data + apply_extra.sh works (the old way)
# OLD approach - files downloaded at INSTALL time
sources:
  - type: extra-data
    url: https://github.com/usebruno/bruno/releases/.../bruno.AppImage
    filename: bruno.appimage

With extra-data:

  1. During Flathub build: Only the manifest is processed; the AppImage is NOT downloaded
  2. During user install: The AppImage is downloaded to the user's machine
  3. During first run: apply_extra.sh extracts the AppImage

Problem: Flathub's team can consider this as "proprietary" because the build servers never touch the actual application files. The app binary bypasses the entire build process. That's why extra-data is primarily used for closed-source apps.

How type: file works (the new way)
# NEW approach - files downloaded at BUILD time
sources:
  - type: file
    url: https://github.com/usebruno/bruno/releases/.../bruno.deb
    dest-filename: bruno.deb

With type: file:

  1. During Flathub build: The deb is downloaded and extracted on Flathub servers
  2. During user install: User receives the pre-processed files directly
  3. No apply_extra.sh needed

Result: Flathub's team easier considers this as "Community Built" because the build servers process the source files.

Why not build Electron apps from source (to prove it is community built)?

Building Electron apps from source in Flatpak environments is complex and uncommon because:

  1. Electron apps have thousands of npm dependencies
  2. The build process requires internet access (blocked in Flatpak builds)
  3. Upstream already provides tested, optimized builds
  4. Maintaining npm dependency lists is error-prone

See also: Flatpak documentation on building Electron apps

Using pre-built packages (.deb, .tar.gz, .AppImage) and extracting them during the build phase is the standard practice for Electron apps on Flathub:

Although building from source is possible, if you want to build Bruno from source, I can make this change.

Why .deb instead of .AppImage

Both formats contain the same application files, but .deb has several advantages:

Aspect .deb .AppImage
File size ~91 MB ~162 MB
Extraction Simple bsdtar one-liner Requires unappimage module
Icons Multiple sizes (16x16 to 512x512) Usually single size or embedded
Desktop file Included in standard location May need extraction from AppImage
Directory structure Standard /opt, /usr/share Flat structure after extraction
Build dependencies None (bsdtar is in SDK) Requires building unappimage first
Code comparison: old vs new extraction

The previous manifest needed an entire module just to build unappimage:

# OLD - extra module needed for AppImage extraction
- name: unappimage
  buildsystem: simple
  build-commands:
    - make -C squashfs-tools install INSTALL_DIR=/app/bin
  sources:
    - type: git
      url: https://github.com/refi64/unappimage

With .deb, extraction is a single line:

# NEW - no extra modules needed
- bsdtar -Oxf bruno.deb data.tar.xz | bsdtar -xf -

Testing

  • Flatpak builds successfully for aarch64
  • Flatpak builds successfully for x86_64
  • Application launches correctly
  • Linter passes
  • Desktop file and icons properly shown in app list

@flathubbot
Copy link
Copy Markdown

🚧 Test build enqueued.

@flathubbot
Copy link
Copy Markdown

🚧 Started test build.

@flathubbot
Copy link
Copy Markdown

Test build succeeded. To test this build, install it from the testing repository:

flatpak install --user https://dl.flathub.org/build-repo/256239/com.usebruno.Bruno.flatpakref

Built for aarch64 and x86_64 architectures.

@Pragadesh-45
Copy link
Copy Markdown
Contributor

@besdar Thanks for raising this PR. We'll review this PR

@flathubbot
Copy link
Copy Markdown

🚧 Test build enqueued.

@flathubbot
Copy link
Copy Markdown

🚧 Started test build.

@flathubbot
Copy link
Copy Markdown

Test build succeeded. To test this build, install it from the testing repository:

flatpak install --user https://dl.flathub.org/build-repo/256660/com.usebruno.Bruno.flatpakref

Built for aarch64 and x86_64 architectures.

@flathubbot
Copy link
Copy Markdown

🚧 Test build enqueued.

@flathubbot
Copy link
Copy Markdown

🚧 Started test build.

@flathubbot
Copy link
Copy Markdown

Test build succeeded. To test this build, install it from the testing repository:

flatpak install --user https://dl.flathub.org/build-repo/285137/com.usebruno.Bruno.flatpakref

Built for aarch64 and x86_64 architectures.

⚠️ Linter warnings:

Warnings can be promoted to errors in the future. Please try to resolve them.

  • 'runtime-update-available-to-org.freedesktop.Platform-25.08' warning found in linter manifest check. Details: Please consider updating to the latest runtime version

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants