From 0417c107ff1539b670152802c3fc0f425ea57a49 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 20:15:12 +0000 Subject: [PATCH 1/3] Update graalvm to v1 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f4888c20cc42..c1ffb3080959 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ de-mannodermaus-junit5 = "2.0.1" dokka = "2.2.0" eclipse-osgi = "3.24.100" graalvm = "25.0.2" -graalvm-plugin = "0.11.5" +graalvm-plugin = "1.0.0" guava = "33.5.0-jre" hamcrest-library = "3.0" http-client5 = "5.6" From 6d0964661e156729db30e1c38fd37abadc800664 Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Sun, 5 Apr 2026 11:56:41 +0100 Subject: [PATCH 2/3] Fixup nativeImage build --- okcurl/build.gradle.kts | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/okcurl/build.gradle.kts b/okcurl/build.gradle.kts index 3eaf4080a059..fbef093ed42e 100644 --- a/okcurl/build.gradle.kts +++ b/okcurl/build.gradle.kts @@ -1,9 +1,11 @@ import kotlinx.validation.ApiValidationExtension import okhttp3.buildsupport.testJavaVersion import org.graalvm.buildtools.gradle.dsl.GraalVMExtension +import org.graalvm.buildtools.gradle.tasks.BuildNativeImageTask import org.jetbrains.kotlin.gradle.dsl.JvmTarget import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension +import java.nio.file.Files plugins { kotlin("jvm") @@ -90,6 +92,46 @@ configure { } else { buildArgs("--no-fallback") } + + javaLauncher.set( + javaToolchains.launcherFor { + languageVersion.set(JavaLanguageVersion.of(25)) + vendor.set(JvmVendorSpec.GRAAL_VM) + }, + ) + } + } +} + +// https://github.com/gradle/gradle/issues/28583 +tasks.named("nativeCompile") { + // Gradle's "Copy" task cannot handle symbolic links, see https://github.com/gradle/gradle/issues/3982. That is why + // links contained in the GraalVM distribution archive get broken during provisioning and are replaced by empty + // files. Address this by recreating the links in the toolchain directory. + val toolchainDir = + options.get().javaLauncher.get().executablePath.asFile.parentFile.run { + if (name == "bin") parentFile else this + } + + val toolchainFiles = toolchainDir.walkTopDown().filter { it.isFile } + val emptyFiles = toolchainFiles.filter { it.length() == 0L } + + // Find empty toolchain files that are named like other toolchain files and assume these should have been links. + val links = + toolchainFiles.mapNotNull { file -> + emptyFiles.singleOrNull { it != file && it.name == file.name }?.let { + file to it + } + } + + // Fix up symbolic links. + links.forEach { (target, link) -> + logger.quiet("Fixing up '$link' to link to '$target'.") + + if (link.delete()) { + Files.createSymbolicLink(link.toPath(), target.toPath()) + } else { + logger.warn("Unable to delete '$link'.") } } } From f3bdfa7dc30ac77e5dcc83eb9e4f91a1568608be Mon Sep 17 00:00:00 2001 From: Yuri Schimke Date: Sun, 5 Apr 2026 12:16:31 +0100 Subject: [PATCH 3/3] use JDK 25 for GraalVM --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4ce5fa9979d8..420d94959687 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -74,7 +74,7 @@ jobs: - uses: graalvm/setup-graalvm@v1 with: distribution: 'graalvm' - java-version: 21 + java-version: 25 github-token: ${{ secrets.GITHUB_TOKEN }} native-image-job-reports: true @@ -276,7 +276,7 @@ jobs: - uses: graalvm/setup-graalvm@v1 with: distribution: 'graalvm' - java-version: 24 + java-version: 25 github-token: ${{ secrets.GITHUB_TOKEN }} native-image-job-reports: true