From: AsamK Date: Sun, 12 Sep 2021 17:08:47 +0000 (+0200) Subject: Use official graalvm native-image gradle plugin X-Git-Tag: v0.9.1~59 X-Git-Url: https://git.nmode.ca/signal-cli/commitdiff_plain/627a587952391414c66403e45aa46261f16f0f4f Use official graalvm native-image gradle plugin --- diff --git a/README.md b/README.md index 178573fe..b63733d1 100644 --- a/README.md +++ b/README.md @@ -98,9 +98,9 @@ This is still experimental and will not work in all situations. 2. [Install prerequisites](https://www.graalvm.org/reference-manual/native-image/#prerequisites) 3. Execute Gradle: - ./gradlew assembleNativeImage + ./gradlew nativeCompile - The binary is available at *build/native-image/signal-cli* + The binary is available at *build/native/nativeCompile/signal-cli* ## FAQ and Troubleshooting For frequently asked questions and issues have a look at the [wiki](https://github.com/AsamK/signal-cli/wiki/FAQ) diff --git a/build.gradle.kts b/build.gradle.kts index 37b94492..0ef51bda 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,7 @@ plugins { application eclipse `check-lib-versions` + id("org.graalvm.buildtools.native") version "0.9.5" } version = "0.9.0" @@ -16,6 +17,15 @@ application { mainClass.set("org.asamk.signal.Main") } +graalvmNative { + binaries { + this["main"].run { + configurationFileDirectories.from(file("graalvm-config-dir")) + buildArgs.add("--allow-incomplete-classpath") + } + } +} + repositories { mavenLocal() mavenCentral() @@ -63,42 +73,3 @@ tasks.withType { args = groovy.util.Eval.me(appArgs) as MutableList } } - -val assembleNativeImage by tasks.registering { - dependsOn("assemble") - - var graalVMHome = "" - doFirst { - graalVMHome = System.getenv("GRAALVM_HOME") - ?: throw GradleException("Required GRAALVM_HOME environment variable not set.") - } - - doLast { - val nativeBinaryOutputPath = "$buildDir/native-image" - val nativeBinaryName = "signal-cli" - - mkdir(nativeBinaryOutputPath) - - exec { - workingDir = File(".") - commandLine( - "$graalVMHome/bin/native-image", - "-H:Path=$nativeBinaryOutputPath", - "-H:Name=$nativeBinaryName", - "-H:JNIConfigurationFiles=graalvm-config-dir/jni-config.json", - "-H:DynamicProxyConfigurationFiles=graalvm-config-dir/proxy-config.json", - "-H:ResourceConfigurationFiles=graalvm-config-dir/resource-config.json", - "-H:ReflectionConfigurationFiles=graalvm-config-dir/reflect-config.json", - "--no-fallback", - "--allow-incomplete-classpath", - "--report-unsupported-elements-at-runtime", - "--enable-url-protocols=http,https", - "--enable-https", - "--enable-all-security-services", - "-cp", - sourceSets.main.get().runtimeClasspath.asPath, - application.mainClass.get() - ) - } - } -} diff --git a/run_tests.sh b/run_tests.sh index 5978eed9..d306dfa9 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -11,17 +11,22 @@ if [ ! -z "$GRAALVM_HOME" ]; then export JAVA_HOME=$GRAALVM_HOME export SIGNAL_CLI_OPTS='-agentlib:native-image-agent=config-merge-dir=graalvm-config-dir/' fi -export SIGNAL_CLI="$PWD/build/install/signal-cli/bin/signal-cli" NUMBER_1="$1" NUMBER_2="$2" TEST_PIN_1=456test_pin_foo123 +NATIVE=1 PATH_TEST_CONFIG="$PWD/build/test-config" PATH_MAIN="$PATH_TEST_CONFIG/main" PATH_LINK="$PATH_TEST_CONFIG/link" -./gradlew installDist +if [ "$NATIVE" -eq 1 ]; then + SIGNAL_CLI="$PWD/build/native/nativeCompile/signal-cli" +else + ./gradlew installDist + SIGNAL_CLI="$PWD/build/install/signal-cli/bin/signal-cli" +fi run() { set -x