From 9ac96e027ed9807e7140e08dea4c07c98ff033ff Mon Sep 17 00:00:00 2001 From: Robbie Blaine Date: Thu, 8 May 2025 18:30:46 +0200 Subject: [PATCH 1/5] Add `aarch64` architecture support to CI Extend CI workflow to build for both `x86_64` and `aarch64` architectures: - Add ARM variants for Ubuntu and macOS in the build matrix - Skip tests on `aarch64` builds with `-x test` flag as JavaFX 21.x.x doesn't currently support the ARM64 architecture - Update artifact naming to include architecture identifiers - Configure architecture-specific build paths and release outputs This change enables native builds for ARM-based systems like Apple Silicon Macs and ARM servers, improving performance for users on these platforms while maintaining full test coverage on `x86_64` where supported. Make localnet cache OS-specific Prevent Error: Failed to CreateArtifact: Received non-retryable error: Failed request: (409) Conflict: an artifact with this name already exists on the workflow run Add a warning about `linux/aarch64` tests being skipped Simplify GitHub Actions workflow conditions Replace verbose condition syntax with simpler `runner.os` expressions to improve readability and maintainability. This change: - Uses `runner.os` instead of specific `matrix.os` version strings - Removes unnecessary `${{ }}` expression wrappers in if conditions - Consolidates OS-specific conditions (e.g. `ubuntu-22.04` or `ubuntu-22.04-arm`) into simpler checks (`runner.os == 'Linux'`) Fix JavaFX loading on Mac ARM64 architecture JavaFX 21.0.2 supports Mac ARM64 (Apple Silicon) but was failing to load with `UnsatisfiedLinkError` because the build system wasn't detecting ARM architecture properly. This change allows the build system to correctly identify Mac ARM64 systems and use the appropriate JavaFX libraries, resolving the compatibility issues when running on Apple Silicon Macs. Split Build and Package Installer steps Cleaner CI output, split Build and Package installer step into two steps --- .github/workflows/build.yml | 138 +++++++++++++++++++++---------- build.gradle | 5 +- gradle/verification-metadata.xml | 3 + 3 files changed, 102 insertions(+), 44 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f1751c0d360..712bcf0ccfc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,7 +14,25 @@ jobs: build: strategy: matrix: - os: [ubuntu-22.04, macos-13, windows-latest] + os: [ubuntu-22.04, ubuntu-22.04-arm, macos-13, macos-15, windows-latest] + include: + - os: ubuntu-22.04 + arch: x86_64 + skip_tests: false + - os: ubuntu-22.04-arm + arch: aarch64 + # JavaFX 21.x.x doesn't support `linux/aarch64` + # So skip tests until JavaFX is updated + skip_tests: true + - os: macos-13 + arch: x86_64 + skip_tests: false + - os: macos-15 + arch: aarch64 + skip_tests: false + - os: windows-latest + arch: x86_64 + skip_tests: false fail-fast: false runs-on: ${{ matrix.os }} steps: @@ -27,8 +45,16 @@ jobs: java-version: '21' distribution: 'adopt' cache: gradle - - name: Build with Gradle + - name: Build with Gradle with tests + if: matrix.skip_tests == false run: ./gradlew build --stacktrace --scan + - name: Build with Gradle without tests + if: matrix.skip_tests == true + run: | + ./gradlew build --stacktrace --scan -x test + echo "::warning title=Tests Skipped::Tests were intentionally skipped for linux/aarch64 builds \ + as JavaFX 21.x.x doesn't currently support the linux/aarch64 architecture. \ + This should be revisited when JavaFX is next updated." - uses: actions/upload-artifact@v4 if: failure() with: @@ -38,115 +64,127 @@ jobs: uses: actions/upload-artifact@v4 with: include-hidden-files: true - name: cached-localnet + name: cached-localnet-${{ matrix.os }} path: .localnet overwrite: true - name: Install dependencies - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' run: | sudo apt-get update sudo apt-get install -y rpm libfuse2 flatpak flatpak-builder appstream flatpak remote-add --if-not-exists --user flathub https://dl.flathub.org/repo/flathub.flatpakrepo - name: Install WiX Toolset - if: ${{ matrix.os == 'windows-latest' }} + if: runner.os == 'Windows' run: | Invoke-WebRequest -Uri 'https://github.com/wixtoolset/wix3/releases/download/wix314rtm/wix314.exe' -OutFile wix314.exe .\wix314.exe /quiet /norestart shell: powershell - - name: Build Haveno Installer + - name: Build Haveno Installer with tests + if: matrix.skip_tests == false + run: ./gradlew clean build --refresh-keys --refresh-dependencies + working-directory: . + - name: Build Haveno Installer without tests + if: matrix.skip_tests == true run: | - ./gradlew clean build --refresh-keys --refresh-dependencies - ./gradlew packageInstallers + ./gradlew clean build --refresh-keys --refresh-dependencies -x test + echo "::warning title=Tests Skipped::Tests were intentionally skipped for linux/aarch64 builds \ + as JavaFX 21.x.x doesn't currently support the linux/aarch64 architecture. \ + This should be revisited when JavaFX is next updated." + working-directory: . + - name: Package Haveno Installer + run: ./gradlew packageInstallers working-directory: . # get version from jar - name: Set Version Unix - if: ${{ matrix.os == 'ubuntu-22.04' || matrix.os == 'macos-13' }} + if: runner.os != 'Windows' run: | export VERSION=$(ls desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 | grep -Eo 'desktop-[0-9]+\.[0-9]+\.[0-9]+' | sed 's/desktop-//') echo "VERSION=$VERSION" >> $GITHUB_ENV - name: Set Version Windows - if: ${{ matrix.os == 'windows-latest' }} + if: runner.os == 'Windows' run: | $VERSION = (Get-ChildItem -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256).Name -replace 'desktop-', '' -replace '-.*', '' "VERSION=$VERSION" | Out-File -FilePath $env:GITHUB_ENV -Append shell: powershell - name: Move Release Files for Linux - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' run: | mkdir ${{ github.workspace }}/release-linux-rpm mkdir ${{ github.workspace }}/release-linux-deb mkdir ${{ github.workspace }}/release-linux-flatpak mkdir ${{ github.workspace }}/release-linux-appimage - mv desktop/build/temp-*/binaries/haveno-*.rpm ${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-x86_64-installer.rpm - mv desktop/build/temp-*/binaries/haveno_*.deb ${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-x86_64-installer.deb - mv desktop/build/temp-*/binaries/*.flatpak ${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-x86_64.flatpak - mv desktop/build/temp-*/binaries/haveno_*.AppImage ${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-x86_64.AppImage + mv desktop/build/temp-*/binaries/haveno-*.rpm ${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-installer.rpm + mv desktop/build/temp-*/binaries/haveno_*.deb ${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-installer.deb + mv desktop/build/temp-*/binaries/*.flatpak ${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}.flatpak + mv desktop/build/temp-*/binaries/haveno_*.AppImage ${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}.AppImage cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-deb cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-rpm cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-appimage cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-linux-flatpak - cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-x86_64-SNAPSHOT-all.jar.SHA-256 + cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-${{ matrix.arch }}-SNAPSHOT-all.jar.SHA-256 shell: bash - name: Move Release Files for macOS - if: ${{ matrix.os == 'macos-13' }} + if: runner.os == 'MacOS' run: | - mkdir ${{ github.workspace }}/release-macos - mv desktop/build/temp-*/binaries/Haveno-*.dmg ${{ github.workspace }}/release-macos/haveno-v${{ env.VERSION }}-macos-installer.dmg - cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-macos - cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-SNAPSHOT-all.jar.SHA-256 + mkdir ${{ github.workspace }}/release-macos-${{ matrix.arch }} + mv desktop/build/temp-*/binaries/Haveno-*.dmg ${{ github.workspace }}/release-macos-${{ matrix.arch }}/haveno-v${{ env.VERSION }}-macos-${{ matrix.arch }}-installer.dmg + cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/release-macos-${{ matrix.arch }} + cp desktop/build/temp-*/binaries/desktop-*.jar.SHA-256 ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-${{ matrix.arch }}-SNAPSHOT-all.jar.SHA-256 shell: bash - name: Move Release Files on Windows - if: ${{ matrix.os == 'windows-latest' }} + if: runner.os == 'Windows' run: | mkdir ${{ github.workspace }}/release-windows - Move-Item -Path desktop\build\temp-*/binaries\Haveno-*.exe -Destination ${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-installer.exe + Move-Item -Path desktop\build\temp-*/binaries\Haveno-*.exe -Destination ${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-${{ matrix.arch }}-installer.exe Copy-Item -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256 -Destination ${{ github.workspace }}/release-windows Move-Item -Path desktop\build\temp-*/binaries\desktop-*.jar.SHA-256 -Destination ${{ github.workspace }}/haveno-v${{ env.VERSION }}-windows-SNAPSHOT-all.jar.SHA-256 shell: powershell - # win + # Windows artifacts - uses: actions/upload-artifact@v4 name: "Windows artifacts" - if: ${{ matrix.os == 'windows-latest' }} + if: runner.os == 'Windows' with: - name: haveno-windows + name: haveno-windows-${{ matrix.arch }} path: ${{ github.workspace }}/release-windows - # macos + + # macOS artifacts - uses: actions/upload-artifact@v4 name: "macOS artifacts" - if: ${{ matrix.os == 'macos-13' }} + if: runner.os == 'MacOS' with: - name: haveno-macos - path: ${{ github.workspace }}/release-macos - # linux + name: haveno-macos-${{ matrix.arch }} + path: ${{ github.workspace }}/release-macos-${{ matrix.arch }} + + # Linux artifacts - uses: actions/upload-artifact@v4 name: "Linux - deb artifact" - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' with: - name: haveno-linux-deb + name: haveno-linux-${{ matrix.arch }}-deb path: ${{ github.workspace }}/release-linux-deb - uses: actions/upload-artifact@v4 name: "Linux - rpm artifact" - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' with: - name: haveno-linux-rpm + name: haveno-linux-${{ matrix.arch }}-rpm path: ${{ github.workspace }}/release-linux-rpm - uses: actions/upload-artifact@v4 name: "Linux - AppImage artifact" - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' with: - name: haveno-linux-appimage + name: haveno-linux-${{ matrix.arch }}-appimage path: ${{ github.workspace }}/release-linux-appimage - uses: actions/upload-artifact@v4 name: "Linux - flatpak artifact" - if: ${{ matrix.os == 'ubuntu-22.04' }} + if: runner.os == 'Linux' with: - name: haveno-linux-flatpak + name: haveno-linux-${{ matrix.arch }}-flatpak path: ${{ github.workspace }}/release-linux-flatpak - name: Release @@ -154,14 +192,30 @@ jobs: if: startsWith(github.ref, 'refs/tags/') with: files: | + # Linux x86_64 ${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-x86_64-installer.deb ${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-x86_64-installer.rpm ${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-x86_64.AppImage ${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-x86_64.flatpak ${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-x86_64-SNAPSHOT-all.jar.SHA-256 - ${{ github.workspace }}/release-macos/haveno-v${{ env.VERSION }}-macos-installer.dmg - ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-SNAPSHOT-all.jar.SHA-256 - ${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-installer.exe + + # Linux aarch64 + ${{ github.workspace }}/release-linux-deb/haveno-v${{ env.VERSION }}-linux-aarch64-installer.deb + ${{ github.workspace }}/release-linux-rpm/haveno-v${{ env.VERSION }}-linux-aarch64-installer.rpm + ${{ github.workspace }}/release-linux-appimage/haveno-v${{ env.VERSION }}-linux-aarch64.AppImage + ${{ github.workspace }}/release-linux-flatpak/haveno-v${{ env.VERSION }}-linux-aarch64.flatpak + ${{ github.workspace }}/haveno-v${{ env.VERSION }}-linux-aarch64-SNAPSHOT-all.jar.SHA-256 + + # macOS x86_64 + ${{ github.workspace }}/release-macos-x86_64/haveno-v${{ env.VERSION }}-macos-x86_64-installer.dmg + ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-x86_64-SNAPSHOT-all.jar.SHA-256 + + # macOS aarch64 + ${{ github.workspace }}/release-macos-aarch64/haveno-v${{ env.VERSION }}-macos-aarch64-installer.dmg + ${{ github.workspace }}/haveno-v${{ env.VERSION }}-macos-aarch64-SNAPSHOT-all.jar.SHA-256 + + # Windows + ${{ github.workspace }}/release-windows/haveno-v${{ env.VERSION }}-windows-x86_64-installer.exe ${{ github.workspace }}/haveno-v${{ env.VERSION }}-windows-SNAPSHOT-all.jar.SHA-256 # https://git-scm.com/docs/git-tag - git-tag Docu diff --git a/build.gradle b/build.gradle index 2e92cc1428a..bc3c8fb7ada 100644 --- a/build.gradle +++ b/build.gradle @@ -79,7 +79,9 @@ configure(subprojects) { slf4jVersion = '1.7.30' sparkVersion = '2.5.2' - os = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os + def osName = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os + def osArch = System.getProperty("os.arch").toLowerCase() + os = (osName == 'mac' && (osArch.contains('aarch64') || osArch.contains('arm'))) ? 'mac-aarch64' : osName } repositories { @@ -951,4 +953,3 @@ configure(project(':apitest')) { testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$jupiterVersion" } } - diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index cbf82bedeb4..d9fa2c2d569 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -2474,6 +2474,9 @@ + + + From f0d6330a2fb9e5421030f42013a40025ce997c78 Mon Sep 17 00:00:00 2001 From: Robbie Blaine Date: Tue, 5 Aug 2025 15:28:36 +0200 Subject: [PATCH 2/5] Skip Desktop Tests on `linux/aarch64` JavaFX `21.x.x` ships with `x86_64` versions of `libprism_es2.so` and `libprism_s2.so` shared objects. This causes desktop tests to fail on `linux/aarch64`. Instead of skipping all tests (`-x test`), just skip the Desktop tests. --- .github/workflows/build.yml | 39 +++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 712bcf0ccfc..5e021b4247c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,21 +18,14 @@ jobs: include: - os: ubuntu-22.04 arch: x86_64 - skip_tests: false - os: ubuntu-22.04-arm arch: aarch64 - # JavaFX 21.x.x doesn't support `linux/aarch64` - # So skip tests until JavaFX is updated - skip_tests: true - os: macos-13 arch: x86_64 - skip_tests: false - os: macos-15 arch: aarch64 - skip_tests: false - os: windows-latest arch: x86_64 - skip_tests: false fail-fast: false runs-on: ${{ matrix.os }} steps: @@ -46,15 +39,17 @@ jobs: distribution: 'adopt' cache: gradle - name: Build with Gradle with tests - if: matrix.skip_tests == false + if: ${{ !(runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: ./gradlew build --stacktrace --scan - - name: Build with Gradle without tests - if: matrix.skip_tests == true + - name: Build with Gradle, skip Desktop tests + # JavaFX 21.x.x doesn't support `linux/aarch64` + # So skip Desktop tests until JavaFX is updated + if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: | - ./gradlew build --stacktrace --scan -x test - echo "::warning title=Tests Skipped::Tests were intentionally skipped for linux/aarch64 builds \ - as JavaFX 21.x.x doesn't currently support the linux/aarch64 architecture. \ - This should be revisited when JavaFX is next updated." + ./gradlew build --stacktrace --scan -x desktop:test + echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ + intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x doesn't currently support \ + the linux/aarch64 architecture. This should be revisited when JavaFX is next updated." - uses: actions/upload-artifact@v4 if: failure() with: @@ -80,16 +75,18 @@ jobs: .\wix314.exe /quiet /norestart shell: powershell - name: Build Haveno Installer with tests - if: matrix.skip_tests == false + if: ${{ !(runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: ./gradlew clean build --refresh-keys --refresh-dependencies working-directory: . - - name: Build Haveno Installer without tests - if: matrix.skip_tests == true + - name: Build Haveno Installer, skip Desktop tests + # JavaFX 21.x.x doesn't support `linux/aarch64` + # So skip Desktop tests until JavaFX is updated + if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: | - ./gradlew clean build --refresh-keys --refresh-dependencies -x test - echo "::warning title=Tests Skipped::Tests were intentionally skipped for linux/aarch64 builds \ - as JavaFX 21.x.x doesn't currently support the linux/aarch64 architecture. \ - This should be revisited when JavaFX is next updated." + ./gradlew clean build --refresh-keys --refresh-dependencies -x desktop:test + echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ + intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x doesn't currently support \ + the linux/aarch64 architecture. This should be revisited when JavaFX is next updated." working-directory: . - name: Package Haveno Installer run: ./gradlew packageInstallers From 0624898196e3582a5c901f5645223b16c767e3c0 Mon Sep 17 00:00:00 2001 From: Robbie Blaine Date: Tue, 5 Aug 2025 15:47:10 +0200 Subject: [PATCH 3/5] Update comment explaining skipping Desktop tests --- .github/workflows/build.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e021b4247c..541eb71140e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -42,8 +42,9 @@ jobs: if: ${{ !(runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: ./gradlew build --stacktrace --scan - name: Build with Gradle, skip Desktop tests - # JavaFX 21.x.x doesn't support `linux/aarch64` - # So skip Desktop tests until JavaFX is updated + # JavaFX `21.x.x` ships with `x86_64` versions of + # `libprism_es2.so` and `libprism_s2.so` shared objects. + # This causes desktop tests to fail on `linux/aarch64` if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: | ./gradlew build --stacktrace --scan -x desktop:test @@ -79,8 +80,9 @@ jobs: run: ./gradlew clean build --refresh-keys --refresh-dependencies working-directory: . - name: Build Haveno Installer, skip Desktop tests - # JavaFX 21.x.x doesn't support `linux/aarch64` - # So skip Desktop tests until JavaFX is updated + # JavaFX `21.x.x` ships with `x86_64` versions of + # `libprism_es2.so` and `libprism_s2.so` shared objects. + # This causes desktop tests to fail on `linux/aarch64` if: ${{ (runner.os == 'Linux' && matrix.arch == 'aarch64') }} run: | ./gradlew clean build --refresh-keys --refresh-dependencies -x desktop:test From 8b7d30b3973d8b0dd41438aaec6fe911a15e0323 Mon Sep 17 00:00:00 2001 From: Robbie Blaine <4052340+rblaine95@users.noreply.github.com> Date: Tue, 5 Aug 2025 19:43:10 +0200 Subject: [PATCH 4/5] Restore double new-line in `build.gradle` --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index bc3c8fb7ada..b3b97d66c14 100644 --- a/build.gradle +++ b/build.gradle @@ -953,3 +953,4 @@ configure(project(':apitest')) { testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$jupiterVersion" } } + From 06b9aaf6c61afd6e98b1e6e9ca66100d4d308935 Mon Sep 17 00:00:00 2001 From: Robbie Blaine Date: Wed, 6 Aug 2025 15:58:32 +0200 Subject: [PATCH 5/5] Update wording in warning about skipping desktop tests --- .github/workflows/build.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 541eb71140e..3f62788ff11 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,8 +49,9 @@ jobs: run: | ./gradlew build --stacktrace --scan -x desktop:test echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ - intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x doesn't currently support \ - the linux/aarch64 architecture. This should be revisited when JavaFX is next updated." + intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x ships with x86_64 \ + shared objects, causing tests to fail. \ + This should be revisited when JavaFX is next updated." - uses: actions/upload-artifact@v4 if: failure() with: @@ -87,8 +88,9 @@ jobs: run: | ./gradlew clean build --refresh-keys --refresh-dependencies -x desktop:test echo "::warning title=Desktop Tests Skipped::Desktop tests (desktop:test) were \ - intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x doesn't currently support \ - the linux/aarch64 architecture. This should be revisited when JavaFX is next updated." + intentionally skipped for linux/aarch64 builds as JavaFX 21.x.x ships with x86_64 \ + shared objects, causing tests to fail. \ + This should be revisited when JavaFX is next updated." working-directory: . - name: Package Haveno Installer run: ./gradlew packageInstallers