mirror of
https://github.com/encounter/engine.git
synced 2026-03-30 11:09:55 -07:00
81 lines
2.8 KiB
Bash
Executable File
81 lines
2.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# felt: a command-line utility for building and testing Flutter web engine.
|
|
# It stands for Flutter Engine Local Tester.
|
|
|
|
FELT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
if [ -z "`which gclient`" ]
|
|
then
|
|
echo "ERROR: gclient is not in your PATH"
|
|
echo "Fix: add the path to your installation of depot_tools to your PATH"
|
|
exit 1
|
|
fi
|
|
GCLIENT_PATH=`which gclient`
|
|
|
|
if [ -z "`which ninja`" ]
|
|
then
|
|
echo "ERROR: ninja is not in your PATH"
|
|
echo "Fix: add the path to your installation of depot_tools to your PATH"
|
|
exit 1
|
|
fi
|
|
NINJA_PATH=`which ninja`
|
|
|
|
ENGINE_SRC_DIR="$(dirname $(dirname $(dirname $(dirname ${FELT_DIR}))))"
|
|
FLUTTER_DIR="${ENGINE_SRC_DIR}/flutter"
|
|
WEB_UI_DIR="${FLUTTER_DIR}/lib/web_ui"
|
|
DEV_DIR="${WEB_UI_DIR}/dev"
|
|
OUT_DIR="${ENGINE_SRC_DIR}/out"
|
|
HOST_DEBUG_UNOPT_DIR="${ENGINE_SRC_DIR}/out/host_debug_unopt"
|
|
DART_SDK_DIR="${ENGINE_SRC_DIR}/out/host_debug_unopt/dart-sdk"
|
|
GN="${FLUTTER_DIR}/tools/gn"
|
|
DART_TOOL_DIR="${WEB_UI_DIR}/.dart_tool"
|
|
SNAPSHOT_PATH="${DART_TOOL_DIR}/felt.snapshot"
|
|
STAMP_PATH="${DART_TOOL_DIR}/felt.snapshot.stamp"
|
|
SCRIPT_PATH="${DEV_DIR}/felt.dart"
|
|
REVISION="$(cd "$FLUTTER_DIR"; git rev-parse HEAD)"
|
|
|
|
if [ ! -d "${OUT_DIR}" ] || [ ! -d "${HOST_DEBUG_UNOPT_DIR}" ]
|
|
then
|
|
echo "Compiling the Dart SDK."
|
|
gclient sync
|
|
$GN --unoptimized --full-dart-sdk
|
|
ninja -C $HOST_DEBUG_UNOPT_DIR
|
|
fi
|
|
|
|
install_deps() {
|
|
echo "Running \`pub get\` in 'engine/src/flutter/lib/web_ui'"
|
|
(cd "$WEB_UI_DIR"; $DART_SDK_DIR/bin/pub get)
|
|
|
|
echo "Running \`pub get\` in 'engine/src/flutter/web_sdk/web_engine_tester'"
|
|
(cd "$FLUTTER_DIR/web_sdk/web_engine_tester"; $DART_SDK_DIR/bin/pub get)
|
|
}
|
|
|
|
if [[ "$FELT_USE_SNAPSHOT" == "false" || "$FELT_USE_SNAPSHOT" == "0" ]]; then
|
|
echo "[Snapshot mode: off]"
|
|
# Running without snapshot means there is high likelyhood of local changes. In
|
|
# that case, let's clear the snapshot to avoid any surprises.
|
|
rm -f "$SNAPSHOT_PATH"
|
|
rm -f "$STAMP_PATH"
|
|
install_deps
|
|
$DART_SDK_DIR/bin/dart "$DEV_DIR/felt.dart" $@
|
|
else
|
|
# Create a new snapshot if any of the following is true:
|
|
# * SNAPSHOT_PATH is not a file, or
|
|
# * STAMP_PATH is not a file with nonzero size, or
|
|
# * Contents of STAMP_PATH is not our local git HEAD revision, or
|
|
# * pubspec.yaml last modified after pubspec.lock
|
|
if [[ ! -f $SNAPSHOT_PATH || ! -s "$STAMP_PATH" || "$(cat "$STAMP_PATH")" != "$REVISION" || "$WEB_UI_DIR/pubspec.yaml" -nt "$WEB_UI_DIR/pubspec.lock" ]]; then
|
|
echo "[Snapshot mode: on] (creating a new snapshot)"
|
|
install_deps
|
|
mkdir -p $DART_TOOL_DIR
|
|
|
|
"$DART_SDK_DIR/bin/dart" --snapshot="$SNAPSHOT_PATH" --packages="$WEB_UI_DIR/.packages" "$SCRIPT_PATH"
|
|
echo "$REVISION" > "$STAMP_PATH"
|
|
fi
|
|
|
|
$DART_SDK_DIR/bin/dart --packages="$WEB_UI_DIR/.packages" "$SNAPSHOT_PATH" $@
|
|
fi
|
|
|