From ea7c6487079cff4b0e8ed218b35e06d4f3543cac Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 25 Nov 2025 22:31:02 +0100 Subject: [PATCH] Add binaries for linux-aarch64 (#1484) Co-authored-by: Guillaume Nodet Co-authored-by: Per Abich <409466+flyhard@users.noreply.github.com> Co-authored-by: Per Abich --- .github/workflows/early-access.yaml | 18 +++++++++++++----- .github/workflows/release.yaml | 20 ++++++++++++++------ build/publish-on-homebrew.sh | 19 ++++++++++++------- build/publish-on-sdkman.sh | 1 + 4 files changed, 40 insertions(+), 18 deletions(-) diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml index cc3aa4ca..65c2cead 100644 --- a/.github/workflows/early-access.yaml +++ b/.github/workflows/early-access.yaml @@ -74,13 +74,21 @@ jobs: include-hidden-files: 'true' native-build: - name: 'Build with GraalVM on ${{ matrix.os }}' + name: 'Build with GraalVM on ${{ matrix.os }}-${{ matrix.arch }}' if: startsWith(github.event.head_commit.message, '[release] Release ') != true strategy: fail-fast: false matrix: # binaries wanted: linux amd64, mac M1, mac intel, windows x86 - os: [ ubuntu-latest, macos-latest, macos-13, windows-latest ] + os: [ ubuntu-latest, macos-latest, macos-15-intel, windows-latest ] + arch: [ x64, arm64 ] + exclude: + - os: macos-latest + arch: x64 + - os: macos-15-intel + arch: arm64 + - os: windows-latest + arch: arm64 runs-on: ${{ matrix.os }} steps: @@ -90,7 +98,7 @@ jobs: - name: 'Set vars' shell: bash run: | - ARCH=$(echo '${{ runner.arch }}' | awk '{print tolower($0)}') + ARCH=$(echo '${{ matrix.arch }}' | awk '{print tolower($0)}') if [[ $ARCH == 'x64' ]] then echo "ARCH=amd64" >> $GITHUB_ENV @@ -172,14 +180,14 @@ jobs: if: always() uses: actions/upload-artifact@v5 with: - name: daemon-test-logs-${{ env.OS }}-${{ env.ARCH }} + name: daemon-test-logs-${{ matrix.os }}-${{ env.ARCH }} path: integration-tests/target/mvnd-tests/**/daemon*.log include-hidden-files: 'true' - name: 'Upload artifact' uses: actions/upload-artifact@v5 with: - name: mvnd-${{ env.OS }}-${{ env.ARCH }} + name: mvnd-${{ matrix.os }}-${{ env.ARCH }} path: dist/target/maven-mvnd-*.zip site-build: diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 4f5ac42e..2a2d5b31 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -30,12 +30,20 @@ env: jobs: build: - name: 'Build with GraalVM on ${{ matrix.os }}' + name: 'Build with GraalVM on ${{ matrix.os }}-${{ matrix.arch }}' strategy: fail-fast: true matrix: - # binaries wanted: linux amd64, mac intel, mac M1, windows x86 - os: [ ubuntu-latest, macos-13, macos-14, windows-latest ] + # binaries wanted + os: [ ubuntu-latest, macos-latest, macos-15-intel, windows-latest ] + arch: [ x64, arm64 ] + exclude: + - os: macos-latest + arch: x64 + - os: macos-15-intel + arch: arm64 + - os: windows-latest + arch: arm64 runs-on: ${{ matrix.os }} steps: @@ -45,7 +53,7 @@ jobs: - name: 'Set vars' shell: bash run: | - ARCH=$(echo '${{ runner.arch }}' | awk '{print tolower($0)}') + ARCH=$(echo '${{ matrix.arch }}' | awk '{print tolower($0)}') if [[ $ARCH == 'x64' ]] then echo "ARCH=amd64" >> $GITHUB_ENV @@ -62,7 +70,7 @@ jobs: else echo "OS=$OS" >> $GITHUB_ENV fi - echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV + echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout --raw-streams)" >> $GITHUB_ENV - name: 'Set up GraalVM' uses: graalvm/setup-graalvm@v1 @@ -193,7 +201,7 @@ jobs: - name: Set environment run: | - echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV + echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout | grep -v '^\[' | tail -1)" >> $GITHUB_ENV - name: Create Release id: create_release diff --git a/build/publish-on-homebrew.sh b/build/publish-on-homebrew.sh index 154cee06..a69e9ba2 100755 --- a/build/publish-on-homebrew.sh +++ b/build/publish-on-homebrew.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash # -# Copyright 2019 the original author or authors. +# Copyright 2019-2025 the original author or authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -32,8 +32,10 @@ darwinAmdZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-$ darwinAmdSha256="$(curl -L --silent "${darwinAmdZipUrl}.sha256")" darwinArmZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-darwin-aarch64.zip" darwinArmSha256="$(curl -L --silent "${darwinArmZipUrl}.sha256")" -linuxZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-linux-amd64.zip" -linuxSha256="$(curl -L --silent "${linuxZipUrl}.sha256")" +linuxAmdZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-linux-amd64.zip" +linuxAmdSha256="$(curl -L --silent "${linuxAmdZipUrl}.sha256")" +linuxArmZipUrl="https://downloads.apache.org/maven/mvnd/${VERSION}/maven-mvnd-${VERSION}-linux-aarch64.zip" +linuxArmSha256="$(curl -L --silent "${linuxArmZipUrl}.sha256")" echo "Updating Formula/mvnd.rb with" echo "version: ${VERSION}" @@ -41,8 +43,10 @@ echo "darwin-amd-url: ${darwinAmdZipUrl}" echo "darwin-amd-sha256: ${darwinAmdSha256}" echo "darwin-arm-url: ${darwinArmZipUrl}" echo "darwin-arm-sha256: ${darwinArmSha256}" -echo "linux-url: ${linuxZipUrl}" -echo "linux-sha256: ${linuxSha256}" +echo "linux-url: ${linuxAmdZipUrl}" +echo "linux-sha256: ${linuxAmdSha256}" +echo "linux-arm-url: ${linuxArmZipUrl}" +echo "linux-arm-sha256: ${linuxArmSha256}" rm -Rf homebrew-mvnd git clone https://github.com/mvndaemon/homebrew-mvnd.git @@ -50,7 +54,8 @@ cd homebrew-mvnd perl -i -0pe 's|(on_macos do[\s\S\n]+on_intel do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${darwinAmdZipUrl}'\"$3\"'${darwinAmdSha256}'\"|g' Formula/mvnd.rb perl -i -0pe 's|(on_macos do[\s\S\n]+on_arm do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${darwinArmZipUrl}'\"$3\"'${darwinArmSha256}'\"|g' Formula/mvnd.rb -perl -i -0pe 's|(on_linux do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${linuxZipUrl}'\"$3\"'${linuxSha256}'\"|g' Formula/mvnd.rb +perl -i -0pe 's|(on_linux do[\s\S\n]+on_intel do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${linuxAmdZipUrl}'\"$3\"'${linuxAmdSha256}'\"|g' Formula/mvnd.rb +perl -i -0pe 's|(on_linux do[\s\S\n]+on_arm do\n\s+url )\"([^\"]+)\"(\n\s+sha256 )\"([^\"]+)\"|$1\"'${linuxArmZipUrl}'\"$3\"'${linuxArmSha256}'\"|g' Formula/mvnd.rb perl -i -0pe 's|(version )"([^\"]+)"|$1\"'${VERSION}'\"|g' Formula/mvnd.rb if [ -n "$(git status --porcelain)" ]; then @@ -64,4 +69,4 @@ else echo "Nothing to commit" fi -popd \ No newline at end of file +popd diff --git a/build/publish-on-sdkman.sh b/build/publish-on-sdkman.sh index 32292fa0..271a9f45 100755 --- a/build/publish-on-sdkman.sh +++ b/build/publish-on-sdkman.sh @@ -59,6 +59,7 @@ function publishRelease() { } publishRelease ${VERSION} LINUX_64 linux-amd64 +publishRelease ${VERSION} LINUX_ARM64 linux-aarch64 publishRelease ${VERSION} MAC_OSX darwin-amd64 publishRelease ${VERSION} MAC_ARM64 darwin-aarch64 publishRelease ${VERSION} WINDOWS_64 windows-amd64