-
Notifications
You must be signed in to change notification settings - Fork 13
build: add Flatpak packaging and CI workflow #589
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 15 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
b256550
build: remove snap version
lklimek f732889
build: add Flatpak packaging and CI workflow
lklimek 6134e70
build: address review findings for Flatpak packaging
lklimek e15ea4c
build: simplify CI workflows for Linux-only releases
lklimek e8f7602
build: attach to existing releases instead of creating new ones
lklimek 6b3aeb5
revert: restore release.yml to original v1.0-dev version
lklimek 4d9fefa
fix: address CodeRabbit review comments
lklimek 77a2cef
docs: add Flatpak install instructions to README
lklimek d0ccdd6
fix: match StartupWMClass to Flatpak app_id
lklimek 4544074
fix: use ** glob for branch trigger to match feat/flatpak
lklimek 4d61c95
feat: add aarch64 Flatpak build and caching to CI
lklimek d8cdba8
fix: convert desktop and metainfo files to LF line endings
lklimek b606676
build: cancel in-progress Flatpak builds on new push
lklimek f23c4b4
fix: address PR review findings for Flatpak packaging
lklimek 756d25d
chore: workflow timeout and perms
lklimek f463fff
fix: move permissions to job level in Flatpak workflow
lklimek 227ea0d
Merge remote-tracking branch 'origin/v1.0-dev' into feat/flatpak
lklimek f82602f
build: cache Cargo registry and target in Flatpak CI
lklimek 4cf27cd
fix: scope cargo cache bind-mount sed to build-args only
lklimek 7246fad
Apply suggestions from code review
lklimek 99e661e
Merge branch 'v1.0-dev' into feat/flatpak
lklimek File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,95 @@ | ||
| name: Build Flatpak | ||
|
|
||
| on: | ||
| push: | ||
| branches: | ||
| - "**flatpak**" | ||
| release: | ||
| types: | ||
| - published | ||
| workflow_dispatch: | ||
|
|
||
| concurrency: | ||
| group: flatpak-${{ github.ref }} | ||
| cancel-in-progress: true | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| build-flatpak: | ||
| name: Build Flatpak (${{ matrix.arch }}) | ||
| strategy: | ||
| matrix: | ||
| include: | ||
| - arch: x86_64 | ||
| runs-on: ubuntu-latest | ||
| protoc-zip: protoc-25.2-linux-x86_64.zip | ||
| protoc-sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878 | ||
| - arch: aarch64 | ||
| runs-on: ubuntu-24.04-arm | ||
| protoc-zip: protoc-25.2-linux-aarch_64.zip | ||
| protoc-sha256: 07683afc764e4efa3fa969d5f049fbc2bdfc6b4e7786a0b233413ac0d8753f6b | ||
|
|
||
| runs-on: ${{ matrix.runs-on }} | ||
| timeout-minutes: 20 | ||
|
|
||
| steps: | ||
| - name: Check out code | ||
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | ||
|
|
||
| - name: Install Flatpak and Flatpak Builder | ||
| run: | | ||
| sudo apt-get update | ||
| sudo apt-get install -y flatpak flatpak-builder | ||
|
|
||
| - name: Add Flathub remote | ||
| run: | | ||
| sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo | ||
|
|
||
| - name: Install Flatpak SDK and runtime | ||
| run: | | ||
| sudo flatpak install -y --noninteractive flathub \ | ||
| org.freedesktop.Platform//25.08 \ | ||
| org.freedesktop.Sdk//25.08 \ | ||
| org.freedesktop.Sdk.Extension.rust-stable//25.08 \ | ||
| org.freedesktop.Sdk.Extension.llvm21//25.08 | ||
| echo "=== Disk space after SDK install ===" | ||
| df -h | ||
|
|
||
| - name: Patch manifest for architecture | ||
| run: | | ||
| sed -i "s|protoc-25.2-linux-x86_64.zip|${{ matrix.protoc-zip }}|g" flatpak/org.dash.DashEvoTool.yml | ||
| sed -i "s|sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878|sha256: ${{ matrix.protoc-sha256 }}|" flatpak/org.dash.DashEvoTool.yml | ||
|
|
||
| - name: Cache Flatpak builder | ||
| uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 | ||
| with: | ||
| path: .flatpak-builder | ||
| key: flatpak-builder-${{ matrix.arch }}-${{ hashFiles('flatpak/org.dash.DashEvoTool.yml', 'Cargo.lock') }} | ||
| restore-keys: | | ||
| flatpak-builder-${{ matrix.arch }}- | ||
|
|
||
| - name: Build Flatpak | ||
| run: | | ||
| flatpak-builder --force-clean --repo=flatpak-repo build-dir flatpak/org.dash.DashEvoTool.yml | ||
|
|
||
| - name: Create Flatpak bundle | ||
| run: | | ||
| flatpak build-bundle flatpak-repo dash-evo-tool-linux-${{ matrix.arch }}.flatpak org.dash.DashEvoTool | ||
|
|
||
| - name: Upload Flatpak bundle as artifact | ||
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | ||
| with: | ||
| name: dash-evo-tool-linux-${{ matrix.arch }}-flatpak | ||
| path: dash-evo-tool-linux-${{ matrix.arch }}.flatpak | ||
|
|
||
| - name: Attach bundle to release | ||
| if: github.event_name == 'release' | ||
| permissions: | ||
| contents: write | ||
| uses: softprops/action-gh-release@da05d552573ad5aba039eaac05058a918a7bf631 # v2.2.2 | ||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
| with: | ||
| files: dash-evo-tool-linux-${{ matrix.arch }}.flatpak | ||
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| [Desktop Entry] | ||
| Name=Dash Evo Tool | ||
| Comment=Graphical user interface for interacting with Dash Evolution | ||
| Exec=dash-evo-tool | ||
| Icon=org.dash.DashEvoTool | ||
| Type=Application | ||
| Terminal=false | ||
| Categories=Finance;Network;Utility; | ||
| Keywords=Dash;Blockchain;Crypto;Wallet;DPNS;Evolution; | ||
| StartupWMClass=org.dash.DashEvoTool |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <component type="desktop-application"> | ||
| <id>org.dash.DashEvoTool</id> | ||
| <name>Dash Evo Tool</name> | ||
| <summary>Graphical user interface for interacting with Dash Evolution</summary> | ||
|
lklimek marked this conversation as resolved.
Outdated
|
||
|
|
||
| <metadata_license>MIT</metadata_license> | ||
| <project_license>MIT</project_license> | ||
|
|
||
| <description> | ||
| <p> | ||
| A cross-platform desktop application for interacting with Dash Evolution | ||
|
lklimek marked this conversation as resolved.
Outdated
|
||
| (Layer 2). Features include DPNS username registration, contest voting, | ||
| state transition viewing, wallet management, and identity operations. | ||
| Works in SPV (light client) mode - no full Dash Core node required. | ||
| </p> | ||
| </description> | ||
|
|
||
| <categories> | ||
| <category>Finance</category> | ||
| <category>Network</category> | ||
| <category>BlockchainTools</category> | ||
| </categories> | ||
|
|
||
| <keywords> | ||
| <keyword>Dash</keyword> | ||
| <keyword>cryptocurrency</keyword> | ||
| <keyword>blockchain</keyword> | ||
| <keyword>wallet</keyword> | ||
| <keyword>DPNS</keyword> | ||
| <keyword>Evolution</keyword> | ||
|
lklimek marked this conversation as resolved.
Outdated
|
||
| </keywords> | ||
|
|
||
| <url type="homepage">https://github.com/dashpay/dash-evo-tool</url> | ||
| <url type="bugtracker">https://github.com/dashpay/dash-evo-tool/issues</url> | ||
|
|
||
| <launchable type="desktop-id">org.dash.DashEvoTool.desktop</launchable> | ||
|
|
||
| <icon type="stock">org.dash.DashEvoTool</icon> | ||
|
|
||
| <content_rating type="oars-1.1" /> | ||
|
|
||
| <developer id="org.dash"> | ||
| <name>Dash Core Group</name> | ||
| </developer> | ||
|
|
||
| <releases> | ||
| <release version="1.0.0-dev" date="2026-02-17" type="development" /> | ||
| </releases> | ||
| </component> | ||
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| # Flatpak manifest for Dash Evo Tool | ||
| # Build with: flatpak-builder --user --force-clean --repo=flatpak-repo build-dir flatpak/org.dash.DashEvoTool.yml | ||
| # Install locally: flatpak-builder --user --install --force-clean build-dir flatpak/org.dash.DashEvoTool.yml | ||
| # Create bundle: flatpak build-bundle flatpak-repo dash-evo-tool.flatpak org.dash.DashEvoTool | ||
|
|
||
| app-id: org.dash.DashEvoTool | ||
| runtime: org.freedesktop.Platform | ||
| runtime-version: '25.08' | ||
| sdk: org.freedesktop.Sdk | ||
| sdk-extensions: | ||
| - org.freedesktop.Sdk.Extension.rust-stable | ||
| - org.freedesktop.Sdk.Extension.llvm21 | ||
|
|
||
| command: dash-evo-tool | ||
|
|
||
| finish-args: | ||
| # X11 shared memory for display | ||
| - --share=ipc | ||
| # Network access for blockchain communication | ||
| - --share=network | ||
| # Display server support (prefer Wayland, fall back to X11) | ||
| - --socket=wayland | ||
| - --socket=fallback-x11 | ||
| # GPU acceleration for egui rendering | ||
| - --device=dri | ||
|
|
||
| build-options: | ||
| append-path: /usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm21/bin | ||
| build-args: | ||
| - --share=network | ||
| env: | ||
| CARGO_HOME: /run/build/dash-evo-tool/cargo | ||
| PROTOC: /app/bin/protoc | ||
| PROTOC_INCLUDE: /app/include | ||
|
|
||
| modules: | ||
| # Module 1: Install protobuf compiler (required for building dash-sdk) | ||
| # NOTE: CI patches this module for aarch64 via sed (see .github/workflows/flatpak.yml). | ||
| - name: protoc | ||
| buildsystem: simple | ||
| sources: | ||
| - type: file | ||
| url: https://github.com/protocolbuffers/protobuf/releases/download/v25.2/protoc-25.2-linux-x86_64.zip | ||
| sha256: 78ab9c3288919bdaa6cfcec6127a04813cf8a0ce406afa625e48e816abee2878 | ||
| build-commands: | ||
| - unzip protoc-25.2-linux-x86_64.zip bin/protoc -d /app | ||
| - unzip protoc-25.2-linux-x86_64.zip 'include/*' -d /app | ||
| - chmod 755 /app/bin/protoc | ||
|
|
||
| # Module 2: Build libsodium (required for crypto operations) | ||
| - name: libsodium | ||
| buildsystem: autotools | ||
| sources: | ||
| - type: archive | ||
| url: https://github.com/jedisct1/libsodium/releases/download/1.0.20-RELEASE/libsodium-1.0.20.tar.gz | ||
| sha256: ebb65ef6ca439333c2bb41a0c1990587288da07f6c7fd07cb3a18cc18d30ce19 | ||
|
|
||
| # Module 3: Build dash-evo-tool from source | ||
| - name: dash-evo-tool | ||
| buildsystem: simple | ||
| sources: | ||
| - type: dir | ||
| path: .. | ||
| skip: | ||
| - .flatpak-builder | ||
| - build-dir | ||
| - flatpak-repo | ||
| - target | ||
| build-commands: | ||
| - cargo build --release --locked | ||
| - install -Dm755 target/release/dash-evo-tool /app/bin/dash-evo-tool | ||
| - install -Dm644 flatpak/org.dash.DashEvoTool.desktop /app/share/applications/org.dash.DashEvoTool.desktop | ||
| - install -Dm644 flatpak/org.dash.DashEvoTool.metainfo.xml /app/share/metainfo/org.dash.DashEvoTool.metainfo.xml | ||
| - install -Dm644 assets/DET_LOGO.png /app/share/icons/hicolor/512x512/apps/org.dash.DashEvoTool.png |
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.