Skip to content
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

flatpak: Add workflow #4151

Merged
merged 1 commit into from
Aug 17, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
170 changes: 170 additions & 0 deletions .github/workflows/flatpak.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
name: Flatpak

on:
push

jobs:
part1:
name: Part 1/3
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive

- name: Install deps
run: dnf -y install docker

- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64

- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
stop-at-module: boost

- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder

- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar

part2:
name: Part 2/3
needs: part1
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Install deps
run: dnf -y install docker

- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64

- name: Restore flatpak-builder
uses: actions/download-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}

- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar

- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false
BigmenPixel0 marked this conversation as resolved.
Show resolved Hide resolved
stop-at-module: monero-gui

- name: Tar flatpak-builder
run: tar -cvf flatpak-builder.tar .flatpak-builder

- name: Save flatpak-builder
uses: actions/upload-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}
path: flatpak-builder.tar

part3:
name: Part 3/3
needs: [part1, part2]
runs-on: ubuntu-latest
container:
image: bilelmoussaoui/flatpak-github-actions:kde-5.15-22.08
options: --privileged
strategy:
matrix:
arch: [x86_64, aarch64]
steps:
- name: Checkout
uses: actions/checkout@v3
with:
submodules: recursive

- name: Add version and date
run: |
sed -i 's/<version>/${{ github.event.release.tag_name }}/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml
sed -i 's/<date>/'"$(date '+%F')"'/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml

- name: Install deps
run: dnf -y install docker

- name: Setup QEMU
uses: docker/setup-qemu-action@v2
with:
platforms: arm64

- name: Restore flatpak-builder
uses: actions/download-artifact@v3
with:
name: flatpak-builder-${{ matrix.arch }}

- name: Untar flatpak-builder
run: tar -xvf flatpak-builder.tar

- name: Build flatpak
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
env:
FLATPAK_BUILDER_N_JOBS: 3
with:
manifest-path: share/org.getmonero.Monero.yaml
arch: ${{ matrix.arch }}
cache: false

- name: Validate AppData
working-directory: flatpak_app/files/share/appdata
run: appstream-util validate org.getmonero.Monero.appdata.xml

- name: Delete flatpak-builder
uses: geekyeggo/delete-artifact@v2
with:
name: flatpak-builder-${{ matrix.arch }}

- name: Print hashes
working-directory: flatpak_app/files/bin
run: |
echo "Hashes of the ${{ matrix.arch }} binaries:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
for bin in monero-blockchain-ancestry monero-blockchain-depth monero-blockchain-export monero-blockchain-import monero-blockchain-mark-spent-outputs monero-blockchain-prune monero-blockchain-prune-known-spent-data monero-blockchain-stats monero-blockchain-usage monerod monero-gen-ssl-cert monero-gen-trusted-multisig monero-wallet-cli monero-wallet-gui monero-wallet-rpc p2pool; do sha256sum $bin; done >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "An example command to check hashes:" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
echo "$ flatpak run --command=sha256sum org.getmonero.Monero /app/bin/monero-wallet-gui" >> $GITHUB_STEP_SUMMARY
echo "\`\`\`" >> $GITHUB_STEP_SUMMARY

- name: Publish to Flathub Beta
uses: flatpak/flatpak-github-actions/flat-manager@v6
with:
flat-manager-url: https://hub.flathub.org
repository: beta
token: ${{ secrets.FLATHUB_ }}
10 changes: 10 additions & 0 deletions share/org.getmonero.Monero.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[Desktop Entry]
Name=Monero GUI
GenericName=Monero-GUI
Comment=Monero GUI
Exec=monero-wallet-gui
Type=Application
Terminal=false
Categories=Network;Qt;Finance;Office;
Icon=org.getmonero.Monero
StartupNotify=true
65 changes: 65 additions & 0 deletions share/org.getmonero.Monero.metainfo.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop-application">
<id>org.getmonero.Monero</id>
<metadata_license>CC0-1.0</metadata_license>
<project_license>BSD-3-Clause</project_license>
<content_rating type="oars-1.1"/>
<developer_name>The Monero Project</developer_name>
<categories>
<category>Network</category>
<category>Qt</category>
<category>Finance</category>
<category>Office</category>
</categories>
<name>Monero GUI</name>
<summary>Monero: the secure, private, untraceable cryptocurrency</summary>

<description>
<p>Monero is a private, secure, untraceable, decentralised digital currency. You
are your bank, you control your funds, and nobody can trace your transfers
unless you allow them to do so.</p>

<p>Privacy: Monero uses a cryptographically sound system to allow you to send
and receive funds without your transactions being easily revealed on the
blockchain (the ledger of transactions that everyone has). This ensures that
your purchases, receipts, and all transfers remain absolutely private by
default.</p>

<p>Security: Using the power of a distributed peer-to-peer consensus network,
every transaction on the network is cryptographically secured. Individual
wallets have a 25 word mnemonic seed that is only displayed once, and can be
written down to backup the wallet. Wallet files are encrypted with a passphrase
to ensure they are useless if stolen.</p>

<p>Untraceability: By taking advantage of ring signatures, a special property of
a certain type of cryptography, Monero is able to ensure that transactions are
not only untraceable, but have an optional measure of ambiguity that ensures
that transactions cannot easily be tied back to an individual user or computer.</p>
</description>

<launchable type="desktop-id">org.getmonero.Monero.desktop</launchable>

<screenshots>
<screenshot type="default">
<caption>A screenshot of the Monero GUI wallet</caption>
<image>https://raw.githubusercontent.com/monero-project/monero-site/master/img/downloads/gui.png</image>
</screenshot>
</screenshots>

<url type="homepage">https://getmonero.org</url>
<url type="bugtracker">https://github.com/monero-project/monero-gui/issues</url>
<url type="donation">https://getmonero.org/get-started/contributing</url>
<url type="faq">https://getmonero.org/get-started/faq</url>
<url type="help">https://getmonero.org/resources/user-guides</url>
<url type="translate">https://translate.getmonero.org</url>
<url type="contact">https://getmonero.org/community/hangouts</url>
<url type="contribute">https://getmonero.org/get-started/contributing</url>

<releases>
<release version="<version>" date="<date>"/>
</releases>

<custom>
<value key="flathub::manifest">https://github.com/monero-project/monero-gui/tree/master/share/org.getmonero.Monero.yaml</value>
</custom>
</component>
133 changes: 133 additions & 0 deletions share/org.getmonero.Monero.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
app-id: org.getmonero.Monero
runtime: org.kde.Platform
runtime-version: 5.15-22.08
sdk: org.kde.Sdk
finish-args:
- --share=network
- --share=ipc
- --socket=x11
- --socket=wayland
- --device=all
- --filesystem=~/Monero:create
- --persist=.bitmonero

cleanup:
- /include
- /etc
- /share/man
- /lib/pkgconfig
- /lib/cmake
- '*.a'
- '*.la'

command: monero-wallet-gui
modules:
- name: protobuf
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: git
url: https://github.com/protocolbuffers/protobuf
tag: v22.4
commit: 40e1daca18708c21c7edf07c489a688355bd297b

- name: boost
buildsystem: simple
build-commands:
- ./bootstrap.sh --prefix=$FLATPAK_DEST --with-libraries=chrono,date_time,filesystem,locale,program_options,regex,serialization,system,thread
- ./b2 headers
- ./b2 -j$FLATPAK_BUILDER_N_JOBS install variant=release --layout=system
sources:
- type: archive
url: https://boostorg.jfrog.io/artifactory/main/release/1.82.0/source/boost_1_82_0.tar.gz
sha256: 66a469b6e608a51f8347236f4912e27dc5c60c60d7d53ae9bfe4683316c6f04c

- name: libunbound
config-opts:
- --with-libunbound-only
sources:
- type: archive
url: https://nlnetlabs.nl/downloads/unbound/unbound-1.17.1.tar.gz
sha256: ee4085cecce12584e600f3d814a28fa822dfaacec1f94c84bfd67f8a5571a5f4

- name: libsodium
sources:
- type: archive
url: https://github.com/jedisct1/libsodium/releases/download/1.0.18-RELEASE/libsodium-1.0.18.tar.gz
sha256: 6f504490b342a4f8a4c4a02fc9b866cbef8622d5df4e5452b46be121e46636c1

- name: libusb
sources:
- type: archive
url: https://github.com/libusb/libusb/releases/download/v1.0.26/libusb-1.0.26.tar.bz2
sha256: 12ce7a61fc9854d1d2a1ffe095f7b5fac19ddba095c259e6067a46500381b5a5

- name: hidapi
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: archive
url: https://github.com/libusb/hidapi/archive/hidapi-0.13.1.tar.gz
sha256: 476a2c9a4dc7d1fc97dd223b84338dbea3809a84caea2dcd887d9778725490e3

- name: libzmq
config-opts:
- --with-libsodium
- --disable-Werror
sources:
- type: archive
url: https://github.com/zeromq/libzmq/releases/download/v4.3.4/zeromq-4.3.4.tar.gz
sha256: c593001a89f5a85dd2ddf564805deb860e02471171b3f204944857336295c3e5

- name: libgss
sources:
- type: archive
url: https://ftp.gnu.org/gnu/gss/gss-1.0.4.tar.gz
sha256: ecceabdef4cae3fce7218b2ecb83eb4227dba44b53b61b8c2b2e88ae02419c73

- name: libuv
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
sources:
- type: archive
url: https://github.com/libuv/libuv/archive/v1.44.2.tar.gz
sha256: e6e2ba8b4c349a4182a33370bb9be5e23c51b32efb9b9e209d0e8556b73a48da

- name: p2pool
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DWITH_LTO=OFF
sources:
- type: git
url: https://github.com/SChernykh/p2pool
tag: v3.2
commit: 92827035e07ff15da6b7645a332f3e59aa0ab1c4
post-install:
- install -Dm755 p2pool $FLATPAK_DEST/bin/p2pool

- name: monero-gui
buildsystem: cmake-ninja
config-opts:
- -DCMAKE_BUILD_TYPE=Release
- -DWITH_DESKTOP_ENTRY=OFF
- -DWITH_UPDATER=OFF
build-options:
arch:
aarch64:
config-opts:
- -DARCH=armv8-a
- -DBUILD_TAG=linux-armv8
x86_64:
config-opts:
- -DARCH=default
sources:
- type: dir
path: ../
post-install:
- install -Dpm644 share/org.getmonero.Monero.desktop $FLATPAK_DEST/share/applications/$FLATPAK_ID.desktop
- install -Dpm644 share/org.getmonero.Monero.metainfo.xml $FLATPAK_DEST/share/metainfo/$FLATPAK_ID.metainfo.xml
- for x in 16 24 32 48 64 96 128 256; do install -Dpm644 images/appicons/${x}x${x}.png $FLATPAK_DEST/share/icons/hicolor/${x}x${x}/apps/$FLATPAK_ID.png; done
Loading