mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
The ulimit logic has been failing for me for months now and felt still ran fine. I think we don't need it any more. Also add the `-i` option for incremental runs of `felt`. It causes felt to start faster because it doesn't run `pub get`. In the future, we can also run felt from the snapshot for even faster start-up.
113 lines
2.6 KiB
Bash
Executable File
113 lines
2.6 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.
|
|
# TODO: Add git fetch --tags step. Tags are critical for the correct Dart
|
|
# version.
|
|
|
|
FELT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
|
|
|
KERNEL_NAME=`uname`
|
|
CPU_NAME=`uname -m`
|
|
ENGINE_SRC_DIR="$(dirname $(dirname $(dirname $(dirname ${FELT_DIR}))))"
|
|
FLUTTER_DIR="${ENGINE_SRC_DIR}/flutter"
|
|
SDK_PREBUILTS_DIR="${FLUTTER_DIR}/prebuilts"
|
|
|
|
# If set to 0 (the default) will run felt non-incrementally. For example, it will
|
|
# run pub get.
|
|
# If set to 1 (via the -i option) will run felt incrementally.
|
|
INCREMENTAL=0
|
|
|
|
# All arguments passed to felt, except -i, if any.
|
|
ARGS=""
|
|
for arg in "$@" ; do
|
|
case "$arg" in
|
|
-i)
|
|
INCREMENTAL=1
|
|
shift
|
|
;;
|
|
*)
|
|
ARGS="${ARGS} ${arg}"
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "${DART_SDK_DIR}" ]
|
|
then
|
|
if [[ $KERNEL_NAME == *"Darwin"* ]]
|
|
then
|
|
TARGET_OS="macos"
|
|
elif [[ $KERNEL_NAME == *"Linux"* ]]
|
|
then
|
|
TARGET_OS="linux"
|
|
else
|
|
echo "Unrecognized kernel name: ${KERNEL_NAME}"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ $CPU_NAME == *"x86_64"* ]]
|
|
then
|
|
TARGET_ARCH="x64"
|
|
elif [[ $CPU_NAME == *"arm64"* ]]
|
|
then
|
|
TARGET_ARCH="arm64"
|
|
else
|
|
echo "Unrecognized architecture: ${CPU_NAME}"
|
|
exit 1
|
|
fi
|
|
|
|
PREBUILT_TARGET="${TARGET_OS}-${TARGET_ARCH}"
|
|
DART_SDK_DIR="${SDK_PREBUILTS_DIR}/${PREBUILT_TARGET}/dart-sdk"
|
|
|
|
if [ ! -d "$DART_SDK_DIR" ]
|
|
then
|
|
echo "Prebuilt dart sdk for ${PREBUILT_TARGET} not found."
|
|
echo "Note: You can specify your own path to a built dart sdk with the DART_SDK_DIR environment variable."
|
|
exit 1
|
|
fi
|
|
|
|
else
|
|
if [ ! -d "$DART_SDK_DIR" ]
|
|
then
|
|
echo "Explicitly specified dart SDK not found at ${DART_SDK_DIR}."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
WEB_UI_DIR="${FLUTTER_DIR}/lib/web_ui"
|
|
DART_PATH="$DART_SDK_DIR/bin/dart"
|
|
|
|
if [[ "$FELT_DEBUG" == "true" || "$FELT_DEBUG" == "1" ]]
|
|
then
|
|
FELT_DEBUG_FLAGS="--enable-vm-service --pause-isolates-on-start"
|
|
fi
|
|
|
|
SILENT_LOG=/tmp/felt_pub_get_silent_log.txt
|
|
trap "rm -f $SILENT_LOG" EXIT
|
|
|
|
verbose_on_failure() {
|
|
echo "FAILED with the following output:"
|
|
cat $SILENT_LOG
|
|
exit 1
|
|
}
|
|
|
|
silent_on_success() {
|
|
COMMAND=${1+"$@"}
|
|
$COMMAND > $SILENT_LOG 2>&1 || verbose_on_failure
|
|
}
|
|
|
|
install_deps() {
|
|
# We need to run pub get here before we actually invoke felt.
|
|
echo "Running \`dart pub get\` in 'engine/src/flutter/lib/web_ui'"
|
|
(cd "$WEB_UI_DIR"; silent_on_success $DART_PATH pub get)
|
|
}
|
|
|
|
cd $WEB_UI_DIR
|
|
if [[ "$INCREMENTAL" == "0" ]]
|
|
then
|
|
install_deps
|
|
fi
|
|
|
|
(cd $WEB_UI_DIR && $DART_SDK_DIR/bin/dart run $FELT_DEBUG_FLAGS dev/felt.dart ${ARGS})
|