This is an automated email from the ASF dual-hosted git repository. cstamas pushed a commit to branch update-graalvm in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git
commit fcaf2e6f8bffda2f92797f02ed064507712e263e Author: Tamas Cservenak <ta...@cservenak.net> AuthorDate: Thu Jun 20 17:29:54 2024 +0200 Forward port GraalVM changes, diag option Changes: * add client --diag option * update graalvm toolchain * update GH actions --- .github/workflows/early-access.yaml | 11 ++++---- .github/workflows/release.yaml | 12 ++++---- client/pom.xml | 5 ++-- .../org/mvndaemon/mvnd/client/DefaultClient.java | 6 ++++ .../mvnd/client/svm/ReflectionRegistration.java | 33 ---------------------- .../org/mvndaemon/mvnd/common/Environment.java | 2 ++ dist/src/main/distro/bin/mvnd-bash-completion.bash | 2 +- pom.xml | 8 +----- 8 files changed, 22 insertions(+), 57 deletions(-) diff --git a/.github/workflows/early-access.yaml b/.github/workflows/early-access.yaml index 67ae4439..b46db955 100644 --- a/.github/workflows/early-access.yaml +++ b/.github/workflows/early-access.yaml @@ -26,7 +26,7 @@ on: pull_request: env: - JAVA_VERSION: '17' + JAVA_VERSION: '22' concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -34,7 +34,7 @@ concurrency: jobs: default-build: - name: 'Default build (without Graal)' + name: 'Default build (without GraalVM)' if: startsWith(github.event.head_commit.message, '[release] Release ') != true runs-on: ubuntu-latest steps: @@ -57,7 +57,7 @@ jobs: path: integration-tests/target/mvnd-tests/**/daemon*.log native-build: - name: 'Build with Graal on ${{ matrix.os }}' + name: 'Build with GraalVM on ${{ matrix.os }}' if: startsWith(github.event.head_commit.message, '[release] Release ') != true strategy: fail-fast: false @@ -92,18 +92,17 @@ jobs: fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - - name: 'Set up Graal' + - name: 'Set up GraalVM' uses: graalvm/setup-graalvm@v1 with: java-version: ${{ env.JAVA_VERSION }} distribution: 'graalvm' - components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} - name: 'Maven clean' run: ./mvnw clean -Dmrm=false -V -B -ntp -e - - name: 'Patch Graal libs for only requiring glibc 2.12' + - name: 'Patch GraalVM libs for only requiring glibc 2.12' if: ${{ env.OS == 'linux' }} shell: bash run: | diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index c3831ee5..04a77d45 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -26,11 +26,11 @@ on: - '*' env: - JAVA_VERSION: '17' + JAVA_VERSION: '22' jobs: build: - name: 'Build with Graal on ${{ matrix.os }}' + name: 'Build with GraalVM on ${{ matrix.os }}' strategy: fail-fast: true matrix: @@ -64,18 +64,17 @@ jobs: fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - - name: 'Set up Graal' + - name: 'Set up GraalVM' uses: graalvm/setup-graalvm@v1 with: java-version: ${{ env.JAVA_VERSION }} distribution: 'graalvm' - components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} - name: 'Maven clean' run: ./mvnw clean -Dmrm=false -B -ntp -e - - name: 'Patch Graal libs for only requiring glibc 2.12' + - name: 'Patch GraalVM libs for only requiring glibc 2.12' if: ${{ env.OS == 'linux' }} shell: bash run: | @@ -145,12 +144,11 @@ jobs: fi echo "VERSION=$(./mvnw help:evaluate -Dexpression=project.version -q -DforceStdout)" >> $GITHUB_ENV - - name: 'Set up Graal' + - name: 'Set up GraalVM' uses: graalvm/setup-graalvm@v1 with: version: ${{ env.GRAALVM_VERSION }} java-version: ${{ env.JAVA_VERSION }} - components: 'native-image' github-token: ${{ secrets.GITHUB_TOKEN }} - name: 'Build source distribution' diff --git a/client/pom.xml b/client/pom.xml index 120a9347..af1c672a 100644 --- a/client/pom.xml +++ b/client/pom.xml @@ -195,9 +195,8 @@ <skip>false</skip> <mainClass>org.mvndaemon.mvnd.client.DefaultClient</mainClass> <imageName>mvnd</imageName> - <buildArgs>--no-server - --no-fallback - --allow-incomplete-classpath + <buildArgs>--no-fallback + -H:+UnlockExperimentalVMOptions ${graalvm-native-static-opt} ${graalvm-native-glibc-opt} -H:IncludeResources=org/mvndaemon/mvnd/.* diff --git a/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java b/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java index c76cc9ac..2f4b1463 100644 --- a/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java +++ b/client/src/main/java-mvnd/org/mvndaemon/mvnd/client/DefaultClient.java @@ -85,6 +85,12 @@ public class DefaultClient implements Client { } } + // Diag + if (Environment.DIAG.removeCommandLineOption(args) != null) { + org.jline.terminal.impl.Diag.diag(System.out); + return; + } + // Serial if (Environment.SERIAL.removeCommandLineOption(args) != null) { System.setProperty(Environment.SERIAL.getProperty(), Boolean.toString(true)); diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java b/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java deleted file mode 100644 index 3f46b716..00000000 --- a/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.mvndaemon.mvnd.client.svm; - -import com.oracle.svm.core.annotate.AutomaticFeature; -import org.graalvm.nativeimage.hosted.Feature; - -@AutomaticFeature -public class ReflectionRegistration implements Feature { - public void beforeAnalysis(BeforeAnalysisAccess access) { - // try { - // RuntimeReflection.register(AsiExtraField.class.getConstructors()); - // } catch (SecurityException e) { - // throw new RuntimeException(e); - // } - } -} diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java index 29faa6af..3132006f 100644 --- a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java +++ b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java @@ -59,6 +59,8 @@ public enum Environment { STATUS(null, null, null, OptionType.VOID, Flags.OPTIONAL, "mvnd:--status"), /** Stop all daemon instances registered in the registry specified by <code>mvnd.registry</code> */ STOP(null, null, null, OptionType.VOID, Flags.OPTIONAL, "mvnd:--stop"), + /** Terminal diagnosis */ + DIAG(null, null, null, OptionType.VOID, Flags.OPTIONAL, "mvnd:--diag"), /** Use one thread, no log buffering and the default project builder to behave like a standard maven */ SERIAL("mvnd.serial", null, Boolean.FALSE, OptionType.VOID, Flags.OPTIONAL, "mvnd:-1", "mvnd:--serial"), diff --git a/dist/src/main/distro/bin/mvnd-bash-completion.bash b/dist/src/main/distro/bin/mvnd-bash-completion.bash index ade2f771..692534a0 100755 --- a/dist/src/main/distro/bin/mvnd-bash-completion.bash +++ b/dist/src/main/distro/bin/mvnd-bash-completion.bash @@ -217,7 +217,7 @@ _mvnd() _get_comp_words_by_ref -n : cur prev local mvnd_opts="-1" - local mvnd_long_opts="--color|--completion|--purge|--raw-streams|--serial|--status|--stop" + local mvnd_long_opts="--color|--completion|--diag|--purge|--raw-streams|--serial|--status|--stop" local mvnd_properties="-Djava.home|-Djdk.java.options|-Dmaven.multiModuleProjectDirectory|-Dmaven.repo.local|-Dmaven.settings|-Dmvnd.buildTime|-Dmvnd.builder|-Dmvnd.cancelConnectTimeout|-Dmvnd.connectTimeout|-Dmvnd.coreExtensionsExclude|-Dmvnd.daemonStorage|-Dmvnd.debug|-Dmvnd.debug.address|-Dmvnd.duplicateDaemonGracePeriod|-Dmvnd.enableAssertions|-Dmvnd.expirationCheckDelay|-Dmvnd.home|-Dmvnd.idleTimeout|-Dmvnd.jvmArgs|-Dmvnd.keepAlive|-Dmvnd.logPurgePeriod|-Dmvnd.maxHeapSize|-Dmvnd [...] local opts="-am|-amd|-B|-C|-c|-cpu|-D|-e|-emp|-ep|-f|-fae|-ff|-fn|-gs|-h|-l|-N|-npr|-npu|-nsu|-o|-P|-pl|-q|-rf|-s|-T|-t|-U|-up|-V|-v|-X|${mvnd_opts}" local long_opts="--also-make|--also-make-dependents|--batch-mode|--strict-checksums|--lax-checksums|--check-plugin-updates|--define|--errors|--encrypt-master-password|--encrypt-password|--file|--fail-at-end|--fail-fast|--fail-never|--global-settings|--help|--log-file|--non-recursive|--no-plugin-registry|--no-plugin-updates|--no-snapshot-updates|--offline|--activate-profiles|--projects|--quiet|--resume-from|--settings|--threads|--toolchains|--update-snapshots|--update-plugins|--show-v [...] diff --git a/pom.xml b/pom.xml index 58dfcb78..d7e8da8a 100644 --- a/pom.xml +++ b/pom.xml @@ -79,7 +79,7 @@ <assertj.version>3.26.0</assertj.version> <commons-compress.version>1.26.2</commons-compress.version> <!-- cannot upgrade graalvm to 23.0.0 which requires JDK >= 20 --> - <graalvm.version>22.3.1</graalvm.version> + <graalvm.version>23.1.3</graalvm.version> <graalvm.plugin.version>0.10.2</graalvm.plugin.version> <groovy.version>4.0.21</groovy.version> <jakarta.inject.version>1.0</jakarta.inject.version> @@ -128,12 +128,6 @@ <version>${commons-compress.version}</version> </dependency> - <dependency> - <groupId>org.graalvm.sdk</groupId> - <artifactId>graal-sdk</artifactId> - <version>${graalvm.version}</version> - </dependency> - <dependency> <groupId>org.apache.groovy</groupId> <artifactId>groovy</artifactId>