2019-08-09 12:51:42 +00:00
#!/usr/bin/env bash
2020-04-28 10:03:01 +00:00
set -eou pipefail
2019-08-15 07:02:43 +00:00
2020-05-02 11:25:38 +00:00
BABASHKA_XMX=${BABASHKA_XMX:-"-J-Xmx4500m"}
2020-01-09 10:19:48 +00:00
2020-03-30 18:29:08 +00:00
if [ -z "$GRAALVM_HOME" ]; then
echo "Please set GRAALVM_HOME"
exit 1
2020-03-29 14:07:30 +00:00
fi
2020-04-28 10:03:01 +00:00
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
2021-12-05 11:05:05 +00:00
if [[ ! -x "$GRAALVM_HOME/bin/native-image" ]]; then
"$GRAALVM_HOME/bin/gu" install native-image
fi
2019-08-09 12:51:42 +00:00
2020-01-09 10:11:12 +00:00
export JAVA_HOME=$GRAALVM_HOME
2020-05-23 12:53:28 +00:00
export PATH=$GRAALVM_HOME/bin:$PATH
2020-01-09 10:11:12 +00:00
2022-01-17 14:50:33 +00:00
# because script/test cleans target during ci before the jar can we saved
cp target/metabom.jar .
2020-03-30 18:29:08 +00:00
BABASHKA_BINARY=${BABASHKA_BINARY:-"bb"}
2020-03-29 14:07:30 +00:00
2021-08-22 21:19:28 +00:00
args=("-jar" "$BABASHKA_JAR"
"-H:Name=$BABASHKA_BINARY"
"-H:+ReportExceptionStackTraces"
# "-H:+PrintAnalysisCallTree"
# "-H:+DashboardAll"
# "-H:DashboardDump=reports/dump"
# "-H:+DashboardPretty"
# "-H:+DashboardJson"
2024-10-12 09:28:58 +00:00
# "-H:ReportAnalysisForbiddenType=java.awt.Toolkit:Instantiated"
2021-08-22 21:19:28 +00:00
"--verbose"
"--no-fallback"
"--native-image-info"
2023-04-19 19:55:47 +00:00
"--install-exit-handlers"
2022-03-22 15:41:26 +00:00
# --trace-class-initialization=jdk.internal.net.http.common.DebugLogger,jdk.internal.net.http.websocket.WebSocketImpl,jdk.internal.net.http.common.Utils
2023-02-21 15:23:03 +00:00
"$BABASHKA_XMX"
2023-09-27 10:23:57 +00:00
"--enable-preview"
2023-09-28 09:54:37 +00:00
"-march=compatibility" # necessary for compatibility with older machines, e.g. see https://github.com/borkdude/deps.clj/actions/runs/6337277754/job/17212028399
2023-09-27 10:23:57 +00:00
"-O1")
2020-02-23 11:04:18 +00:00
2020-04-28 10:03:01 +00:00
BABASHKA_STATIC=${BABASHKA_STATIC:-}
2021-05-10 22:10:11 +00:00
BABASHKA_MUSL=${BABASHKA_MUSL:-}
2020-04-28 10:03:01 +00:00
2021-05-10 21:27:54 +00:00
if [ "$BABASHKA_STATIC" = "true" ]; then
2021-05-10 22:10:11 +00:00
if [ "$BABASHKA_MUSL" = "true" ]; then
2024-10-12 09:28:58 +00:00
args+=("--static")
2021-05-10 21:27:54 +00:00
args+=("--libc=musl"
# see https://github.com/oracle/graal/issues/3398
"-H:CCompilerOption=-Wl,-z,stack-size=2097152")
2021-09-11 16:13:12 +00:00
else
# see https://github.com/oracle/graal/issues/3737
2024-10-12 09:28:58 +00:00
args+=("-H:+UnlockExperimentalVMOptions")
2021-09-11 16:13:12 +00:00
args+=("-H:+StaticExecutableWithDynamicLibC")
2021-05-10 21:27:54 +00:00
fi
2020-02-23 11:04:18 +00:00
fi
2020-04-30 10:20:00 +00:00
BABASHKA_FEATURE_HSQLDB=${BABASHKA_FEATURE_HSQLDB:-}
2020-04-26 11:10:30 +00:00
if [ "$BABASHKA_FEATURE_HSQLDB" = "true" ]; then
2020-04-30 10:39:44 +00:00
args+=("-H:IncludeResources=org/hsqldb/.*\.properties" "-H:IncludeResources=org/hsqldb/.*\.sql")
2020-04-26 11:10:30 +00:00
fi
2022-08-23 15:40:28 +00:00
BABASHKA_FEATURE_POSTGRESQL=${BABASHKA_FEATURE_POSTGRESQL:-}
if [ "$BABASHKA_FEATURE_POSTGRESQL" = "true" ]; then
args+=("--initialize-at-build-time=org.postgresql.PGProperty")
fi
2021-05-06 10:53:59 +00:00
BABASHKA_FEATURE_SELMER=${BABASHKA_FEATURE_SELMER:-}
if [ "$BABASHKA_FEATURE_SELMER" = "true" ]; then
args+=("-H:IncludeResources=json.human.css")
fi
2020-04-30 10:39:44 +00:00
BABASHKA_LEAN=${BABASHKA_LEAN:-}
2020-04-30 10:20:00 +00:00
if [ "$BABASHKA_LEAN" = "true" ]
then
2020-11-12 18:59:21 +00:00
# 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}"
2022-07-03 11:02:15 +00:00
export BABASHKA_FEATURE_TRANSIT="${BABASHKA_FEATURE_TRANSIT:-false}"
2020-11-12 18:59:21 +00:00
export BABASHKA_FEATURE_JAVA_TIME="${BABASHKA_FEATURE_JAVA_TIME:-false}"
2021-08-31 15:37:11 +00:00
export BABASHKA_FEATURE_JAVA_NET_HTTP="${BABASHKA_FEATURE_JAVA_NET_HTTP:-false}"
2020-11-12 18:59:21 +00:00
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}"
2021-01-23 13:02:00 +00:00
export BABASHKA_FEATURE_CORE_MATCH="${BABASHKA_FEATURE_CORE_MATCH:-false}"
2021-01-23 21:47:35 +00:00
export BABASHKA_FEATURE_HICCUP="${BABASHKA_FEATURE_HICCUP:-false}"
2021-01-24 20:07:07 +00:00
export BABASHKA_FEATURE_TEST_CHECK="${BABASHKA_FEATURE_TEST_CHECK:-false}"
export BABASHKA_FEATURE_SPEC_ALPHA="${BABASHKA_FEATURE_SPEC_ALPHA:-false}"
2021-05-06 10:53:59 +00:00
export BABASHKA_FEATURE_SELMER="${BABASHKA_FEATURE_SELMER:-false}"
2021-08-29 21:43:53 +00:00
export BABASHKA_FEATURE_LOGGING="${BABASHKA_FEATURE_LOGGING:-false}"
2022-03-11 11:23:31 +00:00
export BABASHKA_FEATURE_PRIORITY_MAP="${BABASHKA_FEATURE_PRIORITY_MAP:-false}"
2020-04-30 10:20:00 +00:00
fi
2024-10-13 18:07:04 +00:00
if [[ -z "$BABASHKA_SHA" ]]
then
sha=$(git rev-parse HEAD)
if [[ $? -eq 0 ]]; then
export BABASHKA_SHA=$sha
fi
fi
2023-02-15 12:30:09 +00:00
"$GRAALVM_HOME/bin/native-image" "${args[@]}" "$@"
2024-10-13 18:07:04 +00:00
./"$BABASHKA_BINARY" describe