116 lines
4.2 KiB
Bash
Executable file
116 lines
4.2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
set -eou pipefail
|
|
|
|
BABASHKA_XMX=${BABASHKA_XMX:-"-J-Xmx4500m"}
|
|
|
|
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
|
|
|
|
if [[ ! -x "$GRAALVM_HOME/bin/native-image" ]]; then
|
|
"$GRAALVM_HOME/bin/gu" install native-image
|
|
fi
|
|
|
|
export JAVA_HOME=$GRAALVM_HOME
|
|
export PATH=$GRAALVM_HOME/bin:$PATH
|
|
|
|
rm -rf resources/*.class
|
|
# SVM_JAR=$(find -L "$GRAALVM_HOME" | grep svm.jar)
|
|
# "$GRAALVM_HOME/bin/javac" -cp "$SVM_JAR" resources/CutOffCoreServicesDependencies.java
|
|
# "$GRAALVM_HOME/bin/javac" -cp "$SVM_JAR" resources/CutOffSunAwtWwwContentAudioAiff.java
|
|
# "$GRAALVM_HOME/bin/javac" -cp "$SVM_JAR" resources/CutOffMisc.java
|
|
if [ -z "$BABASHKA_JAR" ]; then
|
|
lein with-profiles +reflection,+native-image "do" run
|
|
lein "do" clean, uberjar, metabom
|
|
BABASHKA_JAR=${BABASHKA_JAR:-"target/babashka-$BABASHKA_VERSION-standalone.jar"}
|
|
fi
|
|
|
|
# because script/test cleans target during ci before the jar can we saved
|
|
cp target/metabom.jar .
|
|
|
|
BABASHKA_BINARY=${BABASHKA_BINARY:-"bb"}
|
|
|
|
args=("-jar" "$BABASHKA_JAR"
|
|
"-H:Name=$BABASHKA_BINARY"
|
|
"-H:+ReportExceptionStackTraces"
|
|
# "-H:+PrintAnalysisCallTree"
|
|
# "-H:+DashboardAll"
|
|
# "-H:DashboardDump=reports/dump"
|
|
# "-H:+DashboardPretty"
|
|
# "-H:+DashboardJson"
|
|
"-H:ReportAnalysisForbiddenType=java.awt.Toolkit:InHeap,Allocated"
|
|
"--verbose"
|
|
"--no-fallback"
|
|
"--native-image-info"
|
|
# --trace-class-initialization=jdk.internal.net.http.common.DebugLogger,jdk.internal.net.http.websocket.WebSocketImpl,jdk.internal.net.http.common.Utils
|
|
"$BABASHKA_XMX")
|
|
|
|
BABASHKA_STATIC=${BABASHKA_STATIC:-}
|
|
BABASHKA_MUSL=${BABASHKA_MUSL:-}
|
|
|
|
if [ "$BABASHKA_STATIC" = "true" ]; then
|
|
args+=("--static")
|
|
if [ "$BABASHKA_MUSL" = "true" ]; then
|
|
args+=("--libc=musl"
|
|
# see https://github.com/oracle/graal/issues/3398
|
|
"-H:CCompilerOption=-Wl,-z,stack-size=2097152")
|
|
else
|
|
# see https://github.com/oracle/graal/issues/3737
|
|
args+=("-H:+StaticExecutableWithDynamicLibC")
|
|
fi
|
|
fi
|
|
|
|
BABASHKA_FEATURE_HSQLDB=${BABASHKA_FEATURE_HSQLDB:-}
|
|
|
|
if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ]; then
|
|
args+=("-H:IncludeResources=org/hsqldb/.*\.properties" "-H:IncludeResources=org/hsqldb/.*\.sql")
|
|
fi
|
|
|
|
BABASHKA_FEATURE_POSTGRESQL=${BABASHKA_FEATURE_POSTGRESQL:-}
|
|
|
|
if [ "$BABASHKA_FEATURE_POSTGRESQL" = "true" ]; then
|
|
args+=("--initialize-at-build-time=org.postgresql.PGProperty")
|
|
fi
|
|
|
|
BABASHKA_FEATURE_SELMER=${BABASHKA_FEATURE_SELMER:-}
|
|
|
|
if [ "$BABASHKA_FEATURE_SELMER" = "true" ]; then
|
|
args+=("-H:IncludeResources=json.human.css")
|
|
fi
|
|
|
|
BABASHKA_LEAN=${BABASHKA_LEAN:-}
|
|
|
|
if [ "$BABASHKA_LEAN" = "true" ]
|
|
then
|
|
# Remove all the default features, unless explicitly set to true:
|
|
export BABASHKA_FEATURE_XML="${BABASHKA_FEATURE_XML:-false}"
|
|
export BABASHKA_FEATURE_YAML="${BABASHKA_FEATURE_YAML:-false}"
|
|
export BABASHKA_FEATURE_CSV="${BABASHKA_FEATURE_CSV:-false}"
|
|
export BABASHKA_FEATURE_TRANSIT="${BABASHKA_FEATURE_TRANSIT:-false}"
|
|
export BABASHKA_FEATURE_JAVA_TIME="${BABASHKA_FEATURE_JAVA_TIME:-false}"
|
|
export BABASHKA_FEATURE_JAVA_NET_HTTP="${BABASHKA_FEATURE_JAVA_NET_HTTP:-false}"
|
|
export BABASHKA_FEATURE_JAVA_NIO="${BABASHKA_FEATURE_JAVA_NIO:-false}"
|
|
export BABASHKA_FEATURE_HTTPKIT_CLIENT="${BABASHKA_FEATURE_HTTPKIT_CLIENT:-false}"
|
|
export BABASHKA_FEATURE_HTTPKIT_SERVER="${BABASHKA_FEATURE_HTTPKIT_SERVER:-false}"
|
|
export BABASHKA_FEATURE_CORE_MATCH="${BABASHKA_FEATURE_CORE_MATCH:-false}"
|
|
export BABASHKA_FEATURE_HICCUP="${BABASHKA_FEATURE_HICCUP:-false}"
|
|
export BABASHKA_FEATURE_TEST_CHECK="${BABASHKA_FEATURE_TEST_CHECK:-false}"
|
|
export BABASHKA_FEATURE_SPEC_ALPHA="${BABASHKA_FEATURE_SPEC_ALPHA:-false}"
|
|
export BABASHKA_FEATURE_SELMER="${BABASHKA_FEATURE_SELMER:-false}"
|
|
export BABASHKA_FEATURE_LOGGING="${BABASHKA_FEATURE_LOGGING:-false}"
|
|
export BABASHKA_FEATURE_PRIORITY_MAP="${BABASHKA_FEATURE_PRIORITY_MAP:-false}"
|
|
fi
|
|
|
|
"$GRAALVM_HOME/bin/native-image" "${args[@]}"
|