From 1a494b0deae987b629187de0d9624070c12f979b Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 27 Jul 2023 13:00:26 +0200 Subject: [PATCH 1/3] add buildArgs to include logback at runtime --- .../build.gradle.kts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/layoutparser-service/layoutparser-service-server/build.gradle.kts b/layoutparser-service/layoutparser-service-server/build.gradle.kts index 9e76495..84bb46e 100644 --- a/layoutparser-service/layoutparser-service-server/build.gradle.kts +++ b/layoutparser-service/layoutparser-service-server/build.gradle.kts @@ -6,7 +6,7 @@ plugins { id("io.spring.dependency-management") version "1.1.0" id("org.sonarqube") version "4.2.1.3168" id("io.freefair.lombok") version "8.1.0" - id ("org.graalvm.buildtools.native") version "0.9.23" + id("org.graalvm.buildtools.native") version "0.9.23" } dependencies { @@ -54,6 +54,23 @@ tasks.named("pmdAotTest") { enabled = false } +graalvmNative { + binaries { + all { + resources.autodetect() + buildArgs.add("--verbose") + buildArgs.add("--add-opens=java.base/java.nio=ALL-UNNAMED") + buildArgs.add("--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED") + buildArgs.add("--add-opens=java.base/jdk.internal.ref=ALL-UNNAMED") + buildArgs.add("--trace-class-initialization=ch.qos.logback.classic.Logger") + buildArgs.add("--trace-object-instantiation=ch.qos.logback.core.AsyncAppenderBase\$Worker") + buildArgs.add("--initialize-at-build-time=org.slf4j.LoggerFactory,ch.qos.logback") + buildArgs.add("--initialize-at-run-time=io.netty") + } + + + } +} tasks.named("bootBuildImage") { imageName.set("nexus.knecon.com:5001/ff/${project.name}:${project.version}") if (project.hasProperty("buildbootDockerHostNetwork")) { From c186927e3df4689d895a8d789f46aa970aac44be Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 27 Jul 2023 13:21:01 +0200 Subject: [PATCH 2/3] add reflection config --- .../build.gradle.kts | 6 +- .../src/main/resources/reflection-config.json | 112 ++++++++++++++++++ 2 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 layoutparser-service/layoutparser-service-server/src/main/resources/reflection-config.json diff --git a/layoutparser-service/layoutparser-service-server/build.gradle.kts b/layoutparser-service/layoutparser-service-server/build.gradle.kts index 84bb46e..e49e895 100644 --- a/layoutparser-service/layoutparser-service-server/build.gradle.kts +++ b/layoutparser-service/layoutparser-service-server/build.gradle.kts @@ -67,10 +67,12 @@ graalvmNative { buildArgs.add("--initialize-at-build-time=org.slf4j.LoggerFactory,ch.qos.logback") buildArgs.add("--initialize-at-run-time=io.netty") } - - } } + +nativeBuild { + buildArgs("-H:ReflectionConfigurationFiles=../../../src/main/resources/reflection-config.json") +} tasks.named("bootBuildImage") { imageName.set("nexus.knecon.com:5001/ff/${project.name}:${project.version}") if (project.hasProperty("buildbootDockerHostNetwork")) { diff --git a/layoutparser-service/layoutparser-service-server/src/main/resources/reflection-config.json b/layoutparser-service/layoutparser-service-server/src/main/resources/reflection-config.json new file mode 100644 index 0000000..15a1a7b --- /dev/null +++ b/layoutparser-service/layoutparser-service-server/src/main/resources/reflection-config.json @@ -0,0 +1,112 @@ +[ + { + "name": "ch.qos.logback.classic.AsyncAppender", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.DateConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.LevelConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.LineSeparatorConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.LoggerConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.MessageConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.classic.pattern.ThreadConverter", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.core.ConsoleAppender", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + }, + { + "name": "ch.qos.logback.core.FileAppender", + "allDeclaredConstructors": true, + "allPublicConstructors": true, + "allDeclaredMethods": true, + "allPublicMethods": true, + "allDeclaredFields": true, + "allPublicFields": true, + "allDeclaredClasses": true, + "allPublicClasses": true + } +] From 510ec7ce4508e1e2f0f06f3d37856402a6d75707 Mon Sep 17 00:00:00 2001 From: Kilian Schuettler Date: Thu, 27 Jul 2023 13:29:14 +0200 Subject: [PATCH 3/3] remove native build --- .../layoutparser-service-server/build.gradle.kts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/layoutparser-service/layoutparser-service-server/build.gradle.kts b/layoutparser-service/layoutparser-service-server/build.gradle.kts index e49e895..8c5ff89 100644 --- a/layoutparser-service/layoutparser-service-server/build.gradle.kts +++ b/layoutparser-service/layoutparser-service-server/build.gradle.kts @@ -6,7 +6,7 @@ plugins { id("io.spring.dependency-management") version "1.1.0" id("org.sonarqube") version "4.2.1.3168" id("io.freefair.lombok") version "8.1.0" - id("org.graalvm.buildtools.native") version "0.9.23" + //id("org.graalvm.buildtools.native") version "0.9.23" } dependencies { @@ -38,7 +38,7 @@ description = "layoutparser-service-server" java { withJavadocJar() } - +/* // AOT seems to be the name of the generated classes for native images // They are added as a SourceSet, and therefore checkstyle and pmd try to run on it tasks.named("checkstyleAot") { @@ -67,12 +67,14 @@ graalvmNative { buildArgs.add("--initialize-at-build-time=org.slf4j.LoggerFactory,ch.qos.logback") buildArgs.add("--initialize-at-run-time=io.netty") } + } } nativeBuild { buildArgs("-H:ReflectionConfigurationFiles=../../../src/main/resources/reflection-config.json") } +*/ tasks.named("bootBuildImage") { imageName.set("nexus.knecon.com:5001/ff/${project.name}:${project.version}") if (project.hasProperty("buildbootDockerHostNetwork")) {