From 61158e9750dc1e68522107245e89cfd1efaa697c Mon Sep 17 00:00:00 2001 From: TheTollingBell <39654861+TheTollingBell@users.noreply.github.com> Date: Wed, 2 Oct 2024 10:36:29 -0400 Subject: [PATCH] support AppImage packaging (#1270) --- .github/workflows/build.yml | 13 +++- desktop/package/linux/Haveno.AppDir/.DirIcon | 1 + .../exchange.haveno.Haveno.desktop | 1 + .../package/linux/Haveno.AppDir/haveno.svg | 1 + desktop/package/linux/Haveno.desktop | 13 ++++ desktop/package/linux/haveno.png | Bin 0 -> 19931 bytes desktop/package/linux/haveno.svg | 1 + desktop/package/package.gradle | 66 ++++++++++++++++++ 8 files changed, 94 insertions(+), 2 deletions(-) create mode 120000 desktop/package/linux/Haveno.AppDir/.DirIcon create mode 120000 desktop/package/linux/Haveno.AppDir/exchange.haveno.Haveno.desktop create mode 120000 desktop/package/linux/Haveno.AppDir/haveno.svg create mode 100644 desktop/package/linux/Haveno.desktop create mode 100644 desktop/package/linux/haveno.png create mode 100644 desktop/package/linux/haveno.svg diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 62ea36f9..ad18dea6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -40,7 +40,7 @@ jobs: if: ${{ matrix.os == 'ubuntu-22.04' }} run: | sudo apt update - sudo apt install -y rpm + sudo apt install -y rpm fuse - name: Install WiX Toolset if: ${{ matrix.os == 'windows-latest' }} run: | @@ -73,14 +73,17 @@ jobs: if [ "${{ matrix.os }}" == "ubuntu-22.04" ]; then mkdir ${{ github.workspace }}/release-rpm mkdir ${{ github.workspace }}/release-deb + mkdir ${{ github.workspace }}/release-appimage mv desktop/build/temp-*/binaries/haveno-*.rpm ${{ github.workspace }}/release-rpm/Haveno-${{ env.VERSION }}-x86_64.rpm mv desktop/build/temp-*/binaries/haveno_*.deb ${{ github.workspace }}/release-deb/Haveno-${{ env.VERSION }}-x86_64.deb + mv desktop/build/temp-*/binaries/haveno_*.AppImage ${{ github.workspace }}/release-appimage/Haveno-${{ env.VERSION }}-x86_64.AppImage else mv desktop/build/temp-*/binaries/Haveno-*.dmg ${{ github.workspace }}/release/Haveno-${{ env.VERSION }}.dmg fi cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-deb cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-rpm + cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-appimage shell: bash - name: Move Release Files on Windows if: ${{ matrix.os == 'windows-latest' }} @@ -116,4 +119,10 @@ jobs: if: ${{ matrix.os == 'ubuntu-22.04' }} with: name: haveno-linux-rpm - path: ${{ github.workspace }}/release-rpm \ No newline at end of file + path: ${{ github.workspace }}/release-rpm + - uses: actions/upload-artifact@v3 + name: "Linux - AppImage artifact" + if: ${{ matrix.os == 'ubuntu-22.04' }} + with: + name: haveno-linux-appimage + path: ${{ github.workspace }}/release-appimage diff --git a/desktop/package/linux/Haveno.AppDir/.DirIcon b/desktop/package/linux/Haveno.AppDir/.DirIcon new file mode 120000 index 00000000..37b10e39 --- /dev/null +++ b/desktop/package/linux/Haveno.AppDir/.DirIcon @@ -0,0 +1 @@ +../haveno.png \ No newline at end of file diff --git a/desktop/package/linux/Haveno.AppDir/exchange.haveno.Haveno.desktop b/desktop/package/linux/Haveno.AppDir/exchange.haveno.Haveno.desktop new file mode 120000 index 00000000..3507a5b0 --- /dev/null +++ b/desktop/package/linux/Haveno.AppDir/exchange.haveno.Haveno.desktop @@ -0,0 +1 @@ +../Haveno.desktop \ No newline at end of file diff --git a/desktop/package/linux/Haveno.AppDir/haveno.svg b/desktop/package/linux/Haveno.AppDir/haveno.svg new file mode 120000 index 00000000..3fe12c49 --- /dev/null +++ b/desktop/package/linux/Haveno.AppDir/haveno.svg @@ -0,0 +1 @@ +../haveno.svg \ No newline at end of file diff --git a/desktop/package/linux/Haveno.desktop b/desktop/package/linux/Haveno.desktop new file mode 100644 index 00000000..82add174 --- /dev/null +++ b/desktop/package/linux/Haveno.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Comment=A decentralized, Tor-based, P2P Monero exchange network. +Exec=sh -c "PATH=\"\\$HOME/.local/bin:\\$PATH\"; bin/Haveno %u" +GenericName[en_US]=Monero Exchange +GenericName=Monero Exchange +Icon=haveno +Categories=Office;Finance;Java;P2P; +Name[en_US]=Haveno +Name=Haveno +Terminal=false +Type=Application +MimeType= +X-AppImage-Name=Haveno diff --git a/desktop/package/linux/haveno.png b/desktop/package/linux/haveno.png new file mode 100644 index 0000000000000000000000000000000000000000..681ac6acdb7f163ace019e523b741a360671f750 GIT binary patch literal 19931 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 literal 0 HcmV?d00001 diff --git a/desktop/package/linux/haveno.svg b/desktop/package/linux/haveno.svg new file mode 100644 index 00000000..6c94a5b6 --- /dev/null +++ b/desktop/package/linux/haveno.svg @@ -0,0 +1 @@ +haveno_logo_icon \ No newline at end of file diff --git a/desktop/package/package.gradle b/desktop/package/package.gradle index fd1fc81f..df41edb8 100644 --- a/desktop/package/package.gradle +++ b/desktop/package/package.gradle @@ -113,6 +113,8 @@ task getJavaBinariesDownloadURLs { } } + ext.osKey = osKey + ext.jdk21Binary_DownloadURL = jdk21Binaries[osKey] ext.jdk21Binary_SHA256Hash = jdk21Binaries[osKey + '-sha256'] } @@ -321,6 +323,69 @@ task packageInstallers { " --linux-deb-maintainer noreply@haveno.exchange" + " --type deb") + // Clean jpackage temp folder, needs to be empty for the next packaging step (AppImage) + jpackageTempDir.deleteDir() + jpackageTempDir.mkdirs() + + executeCmd(jPackageFilePath + commonOpts + + " --dest \"${jpackageTempDir}\"" + + " --type app-image") + + // Path to the app-image directory: THIS IS NOT THE ACTUAL .AppImage FILE. + // See JPackage documentation on --type app-image for more. + String appImagePath = new String( + "\"${binariesFolderPath}/${appNameAndVendor}\"" + ) + + // Which version of AppImageTool to use + String AppImageToolVersion = "13"; + + // Download AppImageTool + Map AppImageToolBinaries = [ + 'linux' : "https://github.com/AppImage/AppImageKit/releases/download/${AppImageToolVersion}/appimagetool-x86_64.AppImage", + 'linux-aarch64' : "https://github.com/AppImage/AppImageKit/releases/download/${AppImageToolVersion}/appimagetool-aarch64.AppImage", + ] + + String osKey = getJavaBinariesDownloadURLs.property('osKey') + + File appDir = new File("${jpackageTempDir}/Haveno") + File templateAppDir = new File("${project(':desktop').projectDir}/package/linux/Haveno.AppDir") + File jpackDir = appDir + + appDir.mkdirs() + + File AppImageToolBinary = new File("${jpackageTempDir}/appimagetool.AppImage") + + // Adding a platform to the AppImageToolBinaries essentially adds it to the "supported" list of platforms able to make AppImages + // However, be warned that any platform that doesn't support unix `ln` and `chmod` will not work with the current method. + if (AppImageToolBinaries.containsKey(osKey)) { + println "Downloading ${AppImageToolBinaries[osKey]}" + ant.get(src: AppImageToolBinaries[osKey], dest: AppImageToolBinary) + println 'Download saved to ' + jpackageTempDir + + project.exec { + commandLine('chmod', '+x', AppImageToolBinary) + } + + copy { + from templateAppDir + into appDir + boolean includeEmptyDirs = true + } + + project.exec { + workingDir appDir + commandLine 'ln', '-s', 'bin/Haveno', 'AppRun' + } + + project.exec { + commandLine "${AppImageToolBinary}", appDir, "${binariesFolderPath}/haveno_${appVersion}.AppImage" + } + } else { + println "Your platform does not support AppImageTool ${AppImageToolVersion}" + } + + // Clean jpackage temp folder, needs to be empty for the next packaging step (rpm) jpackageTempDir.deleteDir() jpackageTempDir.mkdirs() @@ -345,6 +410,7 @@ task packageInstallers { from binariesFolderPath into envVariableSharedFolder } + executeCmd("open " + envVariableSharedFolder) } }