diff --git a/common/utils/src/main/java/org/graalvm/buildtools/utils/NativeImageUtils.java b/common/utils/src/main/java/org/graalvm/buildtools/utils/NativeImageUtils.java index fe799edbe..ebc09de0f 100644 --- a/common/utils/src/main/java/org/graalvm/buildtools/utils/NativeImageUtils.java +++ b/common/utils/src/main/java/org/graalvm/buildtools/utils/NativeImageUtils.java @@ -59,7 +59,7 @@ public class NativeImageUtils { private static final Pattern requiredVersionPattern = Pattern.compile("^([0-9]+)(?:\\.([0-9]+)?)?(?:\\.([0-9]+)?)?$"); - private static final Pattern graalvmVersionPattern = Pattern.compile("^GraalVM ([0-9]+)\\.([0-9]+)\\.([0-9]+).*"); + private static final Pattern graalvmVersionPattern = Pattern.compile("^(GraalVM|native-image) ([0-9]+)\\.([0-9]+)\\.([0-9]+).*"); public static void maybeCreateConfigureUtilSymlink(File configureUtilFile, Path nativeImageExecutablePath) { if (!configureUtilFile.exists()) { @@ -119,7 +119,7 @@ public static String escapeArg(String arg) { * @throws IllegalStateException when the version is not correct */ public static void checkVersion(String requiredVersion, String versionToCheck) { - if (versionToCheck.startsWith("GraalVM dev")) { + if (versionToCheck.startsWith("GraalVM dev") || versionToCheck.startsWith("native-image dev")) { return; } Matcher requiredMatcher = requiredVersionPattern.matcher(requiredVersion); @@ -131,7 +131,7 @@ public static void checkVersion(String requiredVersion, String versionToCheck) { throw new IllegalArgumentException("Version to check '" + versionToCheck + "' can't be parsed."); } int requiredMajor = Integer.parseInt(requiredMatcher.group(1)); - int checkedMajor = Integer.parseInt(checkedMatcher.group(1)); + int checkedMajor = Integer.parseInt(checkedMatcher.group(2)); if (checkedMajor < requiredMajor) { throw new IllegalStateException("GraalVM version " + requiredMajor + " is required but " + checkedMajor + " has been detected, please upgrade."); @@ -141,7 +141,7 @@ public static void checkVersion(String requiredVersion, String versionToCheck) { } if (requiredMatcher.group(2) != null) { int requiredMinor = Integer.parseInt(requiredMatcher.group(2)); - int checkedMinor = Integer.parseInt(checkedMatcher.group(2)); + int checkedMinor = Integer.parseInt(checkedMatcher.group(3)); if (checkedMinor < requiredMinor) { throw new IllegalStateException("GraalVM version " + requiredMajor + "." + requiredMinor + " is required but " + checkedMajor + "." + checkedMinor + " has been detected, please upgrade."); @@ -151,7 +151,7 @@ public static void checkVersion(String requiredVersion, String versionToCheck) { } if (requiredMatcher.group(3) != null) { int requiredPatch = Integer.parseInt(requiredMatcher.group(3)); - int checkedPatch = Integer.parseInt(checkedMatcher.group(3)); + int checkedPatch = Integer.parseInt(checkedMatcher.group(4)); if (checkedPatch < requiredPatch) { throw new IllegalStateException("GraalVM version " + requiredMajor + "." + requiredMinor + "." + requiredPatch + " is required but " + checkedMajor + "." + checkedMinor + "." + checkedPatch + diff --git a/common/utils/src/test/java/org/graalvm/buildtools/utils/NativeImageUtilsTest.java b/common/utils/src/test/java/org/graalvm/buildtools/utils/NativeImageUtilsTest.java index 95287ad27..1292269d7 100644 --- a/common/utils/src/test/java/org/graalvm/buildtools/utils/NativeImageUtilsTest.java +++ b/common/utils/src/test/java/org/graalvm/buildtools/utils/NativeImageUtilsTest.java @@ -77,6 +77,7 @@ void checkGraalVMCEDevVersion() { NativeImageUtils.checkVersion("22.3.0", "GraalVM 22.3.0-dev Java 17 CE (Java Version 17.0.5+8-LTS)"); NativeImageUtils.checkVersion("22.3.0", "GraalVM 23.0.0-dev Java 17.0.6+2-jvmci-23.0-b04 CE (Java Version 17.0.6+2-jvmci-23.0-b04)"); NativeImageUtils.checkVersion("22.3.0", "GraalVM dev CE (Java Version 19+36-jvmci-23.0-b01)"); + NativeImageUtils.checkVersion("22.3.0", "native-image dev CE (Java Version 19+36-jvmci-23.0-b01)"); } @Test @@ -93,6 +94,7 @@ void checkGreaterVersion() { NativeImageUtils.checkVersion("23.2.0", "GraalVM 23.2.1"); NativeImageUtils.checkVersion("22.3.0", "GraalVM 23.0.0"); NativeImageUtils.checkVersion("22.2.1", "GraalVM 22.3.0"); + NativeImageUtils.checkVersion("22.2.1", "native-image 22.3.0"); } @Test