From 0dd4421dcdd9aa27deefae084cc900553822a16a Mon Sep 17 00:00:00 2001 From: Michal Karm Babacek Date: Wed, 22 May 2024 13:15:55 +0200 Subject: [PATCH] Ported to older native-image 23.0.x --- .../http/deployment/VertxHttpProcessor.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/VertxHttpProcessor.java b/extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/VertxHttpProcessor.java index 71be04b9a2f60..698e8bcb751a0 100644 --- a/extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/VertxHttpProcessor.java +++ b/extensions/vertx-http/deployment/src/main/java/io/quarkus/vertx/http/deployment/VertxHttpProcessor.java @@ -1,5 +1,6 @@ package io.quarkus.vertx.http.deployment; +import static io.quarkus.deployment.pkg.steps.GraalVM.Version.CURRENT; import static io.quarkus.runtime.TemplateHtmlBuilder.adjustRoot; import static io.quarkus.vertx.http.deployment.RequireBodyHandlerBuildItem.getBodyHandlerRequiredConditions; import static io.quarkus.vertx.http.deployment.RouteBuildItem.RouteType.FRAMEWORK_ROUTE; @@ -44,7 +45,10 @@ import io.quarkus.deployment.builditem.nativeimage.RuntimeInitializedClassBuildItem; import io.quarkus.deployment.builditem.nativeimage.ServiceProviderBuildItem; import io.quarkus.deployment.logging.LogCleanupFilterBuildItem; +import io.quarkus.deployment.pkg.builditem.NativeImageRunnerBuildItem; +import io.quarkus.deployment.pkg.steps.GraalVM; import io.quarkus.deployment.pkg.steps.NativeOrNativeSourcesBuild; +import io.quarkus.deployment.pkg.steps.NoopNativeImageBuildRunner; import io.quarkus.kubernetes.spi.KubernetesPortBuildItem; import io.quarkus.netty.runtime.virtual.VirtualServerChannel; import io.quarkus.runtime.LaunchMode; @@ -515,7 +519,8 @@ private static boolean isSslConfigured() { @BuildStep(onlyIf = NativeOrNativeSourcesBuild.class) void brotliResources(HttpBuildTimeConfig httpBuildTimeConfig, BuildProducer resources, - BuildProducer runtimeInitializedClasses) throws BuildException { + BuildProducer runtimeInitializedClasses, + NativeImageRunnerBuildItem nativeImageRunnerBuildItem) throws BuildException { if (httpBuildTimeConfig.compressors.isPresent() && httpBuildTimeConfig.compressors.get().stream().anyMatch(s -> s.equalsIgnoreCase("br"))) { @@ -561,6 +566,18 @@ void brotliResources(HttpBuildTimeConfig httpBuildTimeConfig, // Static initializer tries to load the native library in Brotli4jLoader; must be done at runtime. runtimeInitializedClasses .produce(new RuntimeInitializedClassBuildItem("com.aayushatharva.brotli4j.Brotli4jLoader")); + final GraalVM.Version v; + if (nativeImageRunnerBuildItem.getBuildRunner() instanceof NoopNativeImageBuildRunner) { + v = CURRENT; + logger.warnf("native-image is not installed. " + + "Using the default %s version as a reference to build native-sources step.", v.getVersionAsString()); + } else { + v = nativeImageRunnerBuildItem.getBuildRunner().getGraalVMVersion(); + } + if (v.compareTo(GraalVM.Version.VERSION_23_1_0) <= 0) { + runtimeInitializedClasses + .produce(new RuntimeInitializedClassBuildItem("io.netty.handler.codec.compression.Brotli")); + } } } }