#!/usr/bin/env bash set -eou pipefail if [ -z "$BABASHKA_XMX" ]; then export BABASHKA_XMX="-J-Xmx4500m" fi if [ -z "$GRAALVM_HOME" ]; then echo "Please set GRAALVM_HOME" exit 1 fi BABASHKA_VERSION=$(cat resources/BABASHKA_VERSION) BABASHKA_JAR=${BABASHKA_JAR:-"target/babashka-$BABASHKA_VERSION-standalone.jar"} if [[ ! -f "$BABASHKA_JAR" ]] then echo "Please run script/uberjar first." exit 1 fi $GRAALVM_HOME/bin/gu install native-image export JAVA_HOME=$GRAALVM_HOME SVM_JAR=$(find "$GRAALVM_HOME" | grep svm.jar) $GRAALVM_HOME/bin/javac -cp "$SVM_JAR" resources/CutOffCoreServicesDependencies.java BABASHKA_LEIN_PROFILES="" BABASHKA_FEATURE_HSQLDB=${BABASHKA_FEATURE_HSQLDB:-} if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ] then BABASHKA_LEIN_PROFILES+="+feature/hsqldb" else BABASHKA_LEIN_PROFILES+="-feature/hsqldb" fi BABASHKA_FEATURE_XML=${BABASHKA_FEATURE_XML:-} if [ "$BABASHKA_FEATURE_XML" != "false" ] then BABASHKA_LEIN_PROFILES+=",+feature/xml" else BABASHKA_LEIN_PROFILES+=",-feature/xml" fi BABASHKA_BINARY=${BABASHKA_BINARY:-"bb"} args=( -jar $BABASHKA_JAR \ -H:Name=$BABASHKA_BINARY \ -H:+ReportExceptionStackTraces \ -J-Dclojure.spec.skip-macros=true \ -J-Dclojure.compiler.direct-linking=true \ "-H:IncludeResources=BABASHKA_VERSION" \ "-H:IncludeResources=SCI_VERSION" \ -H:ReflectionConfigurationFiles=reflection.json \ --initialize-at-run-time=java.lang.Math\$RandomNumberGeneratorHolder \ --initialize-at-build-time \ -H:Log=registerResource: \ -H:EnableURLProtocols=http,https \ --enable-all-security-services \ -H:+JNI \ --verbose \ --no-fallback \ --no-server \ --report-unsupported-elements-at-runtime \ "--initialize-at-run-time=org.postgresql.sspi.SSPIClient" \ "$BABASHKA_XMX" ) BABASHKA_STATIC=${BABASHKA_STATIC:-} if [ "$BABASHKA_STATIC" = "true" ]; then args+=("--static") fi if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ]; then args+=("-H:IncludeResources=org/hsqldb/.*\.properties", "-H:IncludeResources=org/hsqldb/.*\.sql") fi $GRAALVM_HOME/bin/native-image "${args[@]}"