From 7765b8b4625fe3cd079eec26615dc4d5c8cbdf41 Mon Sep 17 00:00:00 2001 From: BigmenPixel0 Date: Tue, 15 Aug 2023 19:18:45 +0500 Subject: [PATCH] flatpak: Add workflow --- .github/workflows/flatpak.yml | 170 ++++++++++++++++++++++++ share/org.getmonero.Monero.desktop | 10 ++ share/org.getmonero.Monero.metainfo.xml | 65 +++++++++ share/org.getmonero.Monero.yaml | 133 ++++++++++++++++++ 4 files changed, 378 insertions(+) create mode 100644 .github/workflows/flatpak.yml create mode 100644 share/org.getmonero.Monero.desktop create mode 100644 share/org.getmonero.Monero.metainfo.xml create mode 100644 share/org.getmonero.Monero.yaml diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml new file mode 100644 index 0000000000..032fcfb00e --- /dev/null +++ b/.github/workflows/flatpak.yml @@ -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 + 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//${{ github.event.release.tag_name }}/g' $GITHUB_WORKSPACE/share/org.getmonero.Monero.metainfo.xml + sed -i 's//'"$(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_ }} diff --git a/share/org.getmonero.Monero.desktop b/share/org.getmonero.Monero.desktop new file mode 100644 index 0000000000..75acaab014 --- /dev/null +++ b/share/org.getmonero.Monero.desktop @@ -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 diff --git a/share/org.getmonero.Monero.metainfo.xml b/share/org.getmonero.Monero.metainfo.xml new file mode 100644 index 0000000000..31bc2fc8eb --- /dev/null +++ b/share/org.getmonero.Monero.metainfo.xml @@ -0,0 +1,65 @@ + + + org.getmonero.Monero + CC0-1.0 + BSD-3-Clause + + The Monero Project + + Network + Qt + Finance + Office + + Monero GUI + Monero: the secure, private, untraceable cryptocurrency + + +

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.

+ +

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.

+ +

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.

+ +

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.

+
+ + org.getmonero.Monero.desktop + + + + A screenshot of the Monero GUI wallet + https://raw.githubusercontent.com/monero-project/monero-site/master/img/downloads/gui.png + + + + https://getmonero.org + https://github.com/monero-project/monero-gui/issues + https://getmonero.org/get-started/contributing + https://getmonero.org/get-started/faq + https://getmonero.org/resources/user-guides + https://translate.getmonero.org + https://getmonero.org/community/hangouts + https://getmonero.org/get-started/contributing + + + + + + + https://github.com/monero-project/monero-gui/tree/master/share/org.getmonero.Monero.yaml + +
diff --git a/share/org.getmonero.Monero.yaml b/share/org.getmonero.Monero.yaml new file mode 100644 index 0000000000..0d83c8b5eb --- /dev/null +++ b/share/org.getmonero.Monero.yaml @@ -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