Unverified Commit 6bb63ed0 authored by Christopher Fujino's avatar Christopher Fujino Committed by GitHub

[flutter_tools] port bash script to use sysctl not uname on macOS (#101308)

parent f42f7d19
......@@ -20,12 +20,13 @@ DART_SDK_PATH="$FLUTTER_ROOT/bin/cache/dart-sdk"
DART_SDK_PATH_OLD="$DART_SDK_PATH.old"
ENGINE_STAMP="$FLUTTER_ROOT/bin/cache/engine-dart-sdk.stamp"
ENGINE_VERSION=`cat "$FLUTTER_ROOT/bin/internal/engine.version"`
OS="$(uname -s)"
if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; then
command -v curl > /dev/null 2>&1 || {
>&2 echo
>&2 echo 'Missing "curl" tool. Unable to download Dart SDK.'
case "$(uname -s)" in
case "$OS" in
Darwin)
>&2 echo 'Consider running "brew install curl".'
;;
......@@ -42,7 +43,7 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; t
command -v unzip > /dev/null 2>&1 || {
>&2 echo
>&2 echo 'Missing "unzip" tool. Unable to extract Dart SDK.'
case "$(uname -s)" in
case "$OS" in
Darwin)
echo 'Consider running "brew install unzip".'
;;
......@@ -56,20 +57,43 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; t
echo
exit 1
}
>&2 echo "Downloading Dart SDK from Flutter engine $ENGINE_VERSION..."
# On x64 stdout is "uname -m: x86_64"
# On arm64 stdout is "uname -m: aarch64, arm64_v8a"
case "$(uname -m)" in
x86_64)
ARCH="x64"
;;
*)
ARCH="arm64"
;;
esac
# `uname -m` may be running in Rosetta mode, instead query sysctl
if [ "$OS" = 'Darwin' ]; then
# Allow non-zero exit so we can do control flow
set +e
# -n means only print value, not key
QUERY="sysctl -n hw.optional.arm64"
# Do not wrap $QUERY in double quotes, otherwise the args will be treated as
# part of the command
QUERY_RESULT=$($QUERY 2>/dev/null)
if [ $? -eq 1 ]; then
# If this command fails, we're certainly not on ARM
ARCH='x64'
elif [ "$QUERY_RESULT" = '0' ]; then
# If this returns 0, we are also not on ARM
ARCH='x64'
elif [ "$QUERY_RESULT" = '1' ]; then
ARCH='arm64'
else
>&2 echo "'$QUERY' returned unexpected output: '$QUERY_RESULT'"
exit 1
fi
set -e
else
# On x64 stdout is "uname -m: x86_64"
# On arm64 stdout is "uname -m: aarch64, arm64_v8a"
case "$(uname -m)" in
x86_64)
ARCH="x64"
;;
*)
ARCH="arm64"
;;
esac
fi
case "$(uname -s)" in
case "$OS" in
Darwin)
DART_ZIP_NAME="dart-sdk-darwin-${ARCH}.zip"
IS_USER_EXECUTABLE="-perm +100"
......@@ -88,6 +112,8 @@ if [ ! -f "$ENGINE_STAMP" ] || [ "$ENGINE_VERSION" != `cat "$ENGINE_STAMP"` ]; t
;;
esac
>&2 echo "Downloading $OS $ARCH Dart SDK from Flutter engine $ENGINE_VERSION..."
# Use the default find if possible.
if [ -e /usr/bin/find ]; then
FIND=/usr/bin/find
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment