mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Revert "Copy flutter.bat before execution" (#20678)
This commit is contained in:
parent
ea355c66df
commit
f17bb519b3
@ -7,8 +7,8 @@
|
||||
# ---------------------------------- NOTE ---------------------------------- #
|
||||
#
|
||||
# Please keep the logic in this file consistent with the logic in the
|
||||
# `internal/run_flutter.bat` script for Windows to ensure that Flutter
|
||||
# continues to work across all platforms!
|
||||
# `flutter.bat` script in the same directory to ensure that Flutter continues
|
||||
# to work across all platforms!
|
||||
#
|
||||
# -------------------------------------------------------------------------- #
|
||||
|
||||
|
184
bin/flutter.bat
184
bin/flutter.bat
@ -3,21 +3,183 @@ REM Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
REM Use of this source code is governed by a BSD-style license that can be
|
||||
REM found in the LICENSE file.
|
||||
|
||||
REM This wrapper script copies the actual launch script from internal/ to cache/
|
||||
REM and then executes the copy in cache/. Copying is necessary to prevent
|
||||
REM Flutter from modifying the script while it is executing during a
|
||||
REM "flutter upgrade" or "flutter channel" command. Modifying the script
|
||||
REM mid-execution would cause Windows to throw errors.
|
||||
|
||||
REM ---------------------------------- NOTE ----------------------------------
|
||||
REM
|
||||
REM Please keep the logic in this file consistent with the logic in the
|
||||
REM `flutter` script in the same directory to ensure that Flutter continues to
|
||||
REM work across all platforms!
|
||||
REM
|
||||
REM --------------------------------------------------------------------------
|
||||
|
||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi
|
||||
SET cache_dir=%FLUTTER_ROOT%\bin\cache
|
||||
SET script_src=%FLUTTER_ROOT%\bin\internal\run_flutter.bat
|
||||
SET script_dest=%cache_dir%\run_flutter.bat
|
||||
|
||||
SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
|
||||
SET cache_dir=%FLUTTER_ROOT%\bin\cache
|
||||
SET snapshot_path=%cache_dir%\flutter_tools.snapshot
|
||||
SET stamp_path=%cache_dir%\flutter_tools.stamp
|
||||
SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
|
||||
SET dart_sdk_path=%cache_dir%\dart-sdk
|
||||
SET engine_stamp=%cache_dir%\engine-dart-sdk.stamp
|
||||
SET engine_version_path=%FLUTTER_ROOT%\bin\internal\engine.version
|
||||
SET pub_cache_path=%FLUTTER_ROOT%\.pub-cache
|
||||
|
||||
SET dart=%dart_sdk_path%\bin\dart.exe
|
||||
SET pub=%dart_sdk_path%\bin\pub.bat
|
||||
|
||||
REM If available, add location of bundled mingit to PATH
|
||||
SET mingit_path=%FLUTTER_ROOT%\bin\mingit\cmd
|
||||
IF EXIST "%mingit_path%" SET PATH=%PATH%;%mingit_path%
|
||||
|
||||
REM Test if Git is available on the Host
|
||||
where /q git || ECHO Error: Unable to find git in your PATH. && EXIT /B 1
|
||||
REM Test if the flutter directory is a git clone, otherwise git rev-parse HEAD would fail
|
||||
IF NOT EXIST "%flutter_root%\.git" (
|
||||
ECHO Error: The Flutter directory is not a clone of the GitHub project.
|
||||
ECHO The flutter tool requires Git in order to operate properly;
|
||||
ECHO to set up Flutter, run the following command:
|
||||
ECHO git clone -b beta https://github.com/flutter/flutter.git
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
REM Ensure that bin/cache exists.
|
||||
IF NOT EXIST "%cache_dir%" MKDIR "%cache_dir%"
|
||||
|
||||
COPY "%script_src%" "%script_dest%" 1>NUL
|
||||
"%script_dest%" %*
|
||||
REM The call above REPLACES this process with the cache\run_flutter.bat process.
|
||||
REM If the cache still doesn't exist, fail with an error that we probably don't have permissions.
|
||||
IF NOT EXIST "%cache_dir%" (
|
||||
ECHO Error: Unable to create cache directory at
|
||||
ECHO %cache_dir%
|
||||
ECHO.
|
||||
ECHO This may be because flutter doesn't have write permissions for
|
||||
ECHO this path. Try moving the flutter directory to a writable location,
|
||||
ECHO such as within your home directory.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
|
||||
REM To debug the tool, you can uncomment the following lines to enable checked mode and set an observatory port:
|
||||
REM SET FLUTTER_TOOL_ARGS="--checked %FLUTTER_TOOL_ARGS%"
|
||||
REM SET FLUTTER_TOOL_ARGS="%FLUTTER_TOOL_ARGS% --observe=65432"
|
||||
|
||||
:acquire_lock
|
||||
2>NUL (
|
||||
REM "3" is now stderr because of "2>NUL".
|
||||
CALL :subroutine %* 2>&3 9> "%cache_dir%\flutter.bat.lock" || GOTO acquire_lock
|
||||
)
|
||||
GOTO :after_subroutine
|
||||
|
||||
:subroutine
|
||||
PUSHD "%flutter_root%"
|
||||
FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r
|
||||
POPD
|
||||
|
||||
REM The following IF conditions are all linked with a logical OR. However,
|
||||
REM there is no OR operator in batch and a GOTO construct is used as replacement.
|
||||
|
||||
IF NOT EXIST "%engine_stamp%" GOTO do_sdk_update_and_snapshot
|
||||
SET /P dart_required_version=<"%engine_version_path%"
|
||||
SET /P dart_installed_version=<"%engine_stamp%"
|
||||
IF !dart_required_version! NEQ !dart_installed_version! GOTO do_sdk_update_and_snapshot
|
||||
IF NOT EXIST "%snapshot_path%" GOTO do_snapshot
|
||||
IF NOT EXIST "%stamp_path%" GOTO do_snapshot
|
||||
SET /P stamp_value=<"%stamp_path%"
|
||||
IF !stamp_value! NEQ !revision! GOTO do_snapshot
|
||||
REM Compare "last modified" timestamps
|
||||
SET pubspec_yaml_path=%flutter_tools_dir%\pubspec.yaml
|
||||
SET pubspec_lock_path=%flutter_tools_dir%\pubspec.lock
|
||||
FOR %%i IN ("%pubspec_yaml_path%") DO SET yaml_timestamp=%%~ti
|
||||
FOR %%i IN ("%pubspec_lock_path%") DO SET lock_timestamp=%%~ti
|
||||
IF !yaml_timestamp! EQU !lock_timestamp! GOTO do_snapshot
|
||||
FOR /F %%i IN ('DIR /B /O:D "%pubspec_yaml_path%" "%pubspec_lock_path%"') DO SET newer_file=%%i
|
||||
IF "%newer_file%" EQU "pubspec.yaml" GOTO do_snapshot
|
||||
|
||||
REM Everything is uptodate - exit subroutine
|
||||
EXIT /B
|
||||
|
||||
:do_sdk_update_and_snapshot
|
||||
ECHO Checking Dart SDK version...
|
||||
SET update_dart_bin=%FLUTTER_ROOT%/bin/internal/update_dart_sdk.ps1
|
||||
REM Escape apostrophes from the executable path
|
||||
SET "update_dart_bin=!update_dart_bin:'=''!"
|
||||
CALL PowerShell.exe -ExecutionPolicy Bypass -Command "Unblock-File -Path '%update_dart_bin%'; & '%update_dart_bin%'"
|
||||
IF "%ERRORLEVEL%" NEQ "0" (
|
||||
ECHO Error: Unable to update Dart SDK. Retrying...
|
||||
timeout /t 5 /nobreak
|
||||
GOTO :do_sdk_update_and_snapshot
|
||||
)
|
||||
|
||||
:do_snapshot
|
||||
IF EXIST "%FLUTTER_ROOT%\version" DEL "%FLUTTER_ROOT%\version"
|
||||
ECHO: > "%cache_dir%\.dartignore"
|
||||
ECHO Building flutter tool...
|
||||
PUSHD "%flutter_tools_dir%"
|
||||
|
||||
REM Makes changes to PUB_ENVIRONMENT only visible to commands within SETLOCAL/ENDLOCAL
|
||||
SETLOCAL
|
||||
SET VERBOSITY=--verbosity=error
|
||||
IF "%CI%" == "true" GOTO on_bot
|
||||
IF "%BOT%" == "true" GOTO on_bot
|
||||
IF "%CONTINUOUS_INTEGRATION%" == "true" GOTO on_bot
|
||||
IF "%CHROME_HEADLESS%" == "1" GOTO on_bot
|
||||
GOTO not_on_bot
|
||||
:on_bot
|
||||
SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_bot
|
||||
SET VERBOSITY=--verbosity=normal
|
||||
:not_on_bot
|
||||
SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_install
|
||||
IF "%PUB_CACHE%" == "" (
|
||||
IF EXIST "%pub_cache_path%" SET PUB_CACHE=%pub_cache_path%
|
||||
)
|
||||
|
||||
SET /A total_tries=10
|
||||
SET /A remaining_tries=%total_tries%-1
|
||||
:retry_pub_upgrade
|
||||
ECHO Running pub upgrade...
|
||||
CALL "%pub%" upgrade "%VERBOSITY%" --no-packages-dir
|
||||
IF "%ERRORLEVEL%" EQU "0" goto :upgrade_succeeded
|
||||
ECHO Error Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (%remaining_tries% tries left)
|
||||
timeout /t 5 /nobreak 2>NUL
|
||||
SET /A remaining_tries-=1
|
||||
IF "%remaining_tries%" EQU "0" GOTO upgrade_retries_exhausted
|
||||
GOTO :retry_pub_upgrade
|
||||
:upgrade_retries_exhausted
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
ECHO Error: 'pub upgrade' still failing after %total_tries% tries, giving up.
|
||||
GOTO final_exit
|
||||
:upgrade_succeeded
|
||||
ENDLOCAL
|
||||
|
||||
POPD
|
||||
|
||||
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
|
||||
IF "%ERRORLEVEL%" NEQ "0" (
|
||||
ECHO Error: Unable to create dart snapshot for flutter tool.
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
GOTO :final_exit
|
||||
)
|
||||
>"%stamp_path%" ECHO %revision%
|
||||
|
||||
REM Exit Subroutine
|
||||
EXIT /B
|
||||
|
||||
:after_subroutine
|
||||
|
||||
CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %*
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
|
||||
REM The VM exits with code 253 if the snapshot version is out-of-date.
|
||||
IF "%exit_code%" EQU "253" (
|
||||
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
IF "%exit_code%" EQU "253" (
|
||||
ECHO Error: Unable to create dart snapshot for flutter tool.
|
||||
EXIT /B %exit_code%
|
||||
)
|
||||
CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %*
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
)
|
||||
|
||||
:final_exit
|
||||
EXIT /B %exit_code%
|
||||
|
@ -1,185 +0,0 @@
|
||||
@ECHO off
|
||||
REM Copyright 2018 The Chromium Authors. All rights reserved.
|
||||
REM Use of this source code is governed by a BSD-style license that can be
|
||||
REM found in the LICENSE file.
|
||||
|
||||
|
||||
REM ---------------------------------- NOTE ----------------------------------
|
||||
REM
|
||||
REM Please keep the logic in this file consistent with the logic in the
|
||||
REM `../flutter` script for Linux to ensure that Flutter continues to
|
||||
REM work across all platforms!
|
||||
REM
|
||||
REM --------------------------------------------------------------------------
|
||||
|
||||
SETLOCAL ENABLEDELAYEDEXPANSION
|
||||
|
||||
FOR %%i IN ("%~dp0..\..") DO SET FLUTTER_ROOT=%%~fi
|
||||
|
||||
SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
|
||||
SET cache_dir=%FLUTTER_ROOT%\bin\cache
|
||||
SET snapshot_path=%cache_dir%\flutter_tools.snapshot
|
||||
SET stamp_path=%cache_dir%\flutter_tools.stamp
|
||||
SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
|
||||
SET dart_sdk_path=%cache_dir%\dart-sdk
|
||||
SET engine_stamp=%cache_dir%\engine-dart-sdk.stamp
|
||||
SET engine_version_path=%FLUTTER_ROOT%\bin\internal\engine.version
|
||||
SET pub_cache_path=%FLUTTER_ROOT%\.pub-cache
|
||||
|
||||
SET dart=%dart_sdk_path%\bin\dart.exe
|
||||
SET pub=%dart_sdk_path%\bin\pub.bat
|
||||
|
||||
REM If available, add location of bundled mingit to PATH
|
||||
SET mingit_path=%FLUTTER_ROOT%\bin\mingit\cmd
|
||||
IF EXIST "%mingit_path%" SET PATH=%PATH%;%mingit_path%
|
||||
|
||||
REM Test if Git is available on the Host
|
||||
where /q git || ECHO Error: Unable to find git in your PATH. && EXIT /B 1
|
||||
REM Test if the flutter directory is a git clone, otherwise git rev-parse HEAD would fail
|
||||
IF NOT EXIST "%flutter_root%\.git" (
|
||||
ECHO Error: The Flutter directory is not a clone of the GitHub project.
|
||||
ECHO The flutter tool requires Git in order to operate properly;
|
||||
ECHO to set up Flutter, run the following command:
|
||||
ECHO git clone -b beta https://github.com/flutter/flutter.git
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
REM Ensure that bin/cache exists.
|
||||
IF NOT EXIST "%cache_dir%" MKDIR "%cache_dir%"
|
||||
|
||||
REM If the cache still doesn't exist, fail with an error that we probably don't have permissions.
|
||||
IF NOT EXIST "%cache_dir%" (
|
||||
ECHO Error: Unable to create cache directory at
|
||||
ECHO %cache_dir%
|
||||
ECHO.
|
||||
ECHO This may be because flutter doesn't have write permissions for
|
||||
ECHO this path. Try moving the flutter directory to a writable location,
|
||||
ECHO such as within your home directory.
|
||||
EXIT /B 1
|
||||
)
|
||||
|
||||
|
||||
REM To debug the tool, you can uncomment the following lines to enable checked mode and set an observatory port:
|
||||
REM SET FLUTTER_TOOL_ARGS="--checked %FLUTTER_TOOL_ARGS%"
|
||||
REM SET FLUTTER_TOOL_ARGS="%FLUTTER_TOOL_ARGS% --observe=65432"
|
||||
|
||||
:acquire_lock
|
||||
2>NUL (
|
||||
REM "3" is now stderr because of "2>NUL".
|
||||
CALL :subroutine %* 2>&3 9> "%cache_dir%\flutter.bat.lock" || GOTO acquire_lock
|
||||
)
|
||||
GOTO :after_subroutine
|
||||
|
||||
:subroutine
|
||||
PUSHD "%flutter_root%"
|
||||
FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r
|
||||
POPD
|
||||
|
||||
REM The following IF conditions are all linked with a logical OR. However,
|
||||
REM there is no OR operator in batch and a GOTO construct is used as replacement.
|
||||
|
||||
IF NOT EXIST "%engine_stamp%" GOTO do_sdk_update_and_snapshot
|
||||
SET /P dart_required_version=<"%engine_version_path%"
|
||||
SET /P dart_installed_version=<"%engine_stamp%"
|
||||
IF !dart_required_version! NEQ !dart_installed_version! GOTO do_sdk_update_and_snapshot
|
||||
IF NOT EXIST "%snapshot_path%" GOTO do_snapshot
|
||||
IF NOT EXIST "%stamp_path%" GOTO do_snapshot
|
||||
SET /P stamp_value=<"%stamp_path%"
|
||||
IF !stamp_value! NEQ !revision! GOTO do_snapshot
|
||||
REM Compare "last modified" timestamps
|
||||
SET pubspec_yaml_path=%flutter_tools_dir%\pubspec.yaml
|
||||
SET pubspec_lock_path=%flutter_tools_dir%\pubspec.lock
|
||||
FOR %%i IN ("%pubspec_yaml_path%") DO SET yaml_timestamp=%%~ti
|
||||
FOR %%i IN ("%pubspec_lock_path%") DO SET lock_timestamp=%%~ti
|
||||
IF !yaml_timestamp! EQU !lock_timestamp! GOTO do_snapshot
|
||||
FOR /F %%i IN ('DIR /B /O:D "%pubspec_yaml_path%" "%pubspec_lock_path%"') DO SET newer_file=%%i
|
||||
IF "%newer_file%" EQU "pubspec.yaml" GOTO do_snapshot
|
||||
|
||||
REM Everything is uptodate - exit subroutine
|
||||
EXIT /B
|
||||
|
||||
:do_sdk_update_and_snapshot
|
||||
ECHO Checking Dart SDK version...
|
||||
SET update_dart_bin=%FLUTTER_ROOT%/bin/internal/update_dart_sdk.ps1
|
||||
REM Escape apostrophes from the executable path
|
||||
SET "update_dart_bin=!update_dart_bin:'=''!"
|
||||
CALL PowerShell.exe -ExecutionPolicy Bypass -Command "Unblock-File -Path '%update_dart_bin%'; & '%update_dart_bin%'"
|
||||
IF "%ERRORLEVEL%" NEQ "0" (
|
||||
ECHO Error: Unable to update Dart SDK. Retrying...
|
||||
timeout /t 5 /nobreak
|
||||
GOTO :do_sdk_update_and_snapshot
|
||||
)
|
||||
|
||||
:do_snapshot
|
||||
IF EXIST "%FLUTTER_ROOT%\version" DEL "%FLUTTER_ROOT%\version"
|
||||
ECHO: > "%cache_dir%\.dartignore"
|
||||
ECHO Building flutter tool...
|
||||
PUSHD "%flutter_tools_dir%"
|
||||
|
||||
REM Makes changes to PUB_ENVIRONMENT only visible to commands within SETLOCAL/ENDLOCAL
|
||||
SETLOCAL
|
||||
SET VERBOSITY=--verbosity=error
|
||||
IF "%CI%" == "true" GOTO on_bot
|
||||
IF "%BOT%" == "true" GOTO on_bot
|
||||
IF "%CONTINUOUS_INTEGRATION%" == "true" GOTO on_bot
|
||||
IF "%CHROME_HEADLESS%" == "1" GOTO on_bot
|
||||
GOTO not_on_bot
|
||||
:on_bot
|
||||
SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_bot
|
||||
SET VERBOSITY=--verbosity=normal
|
||||
:not_on_bot
|
||||
SET PUB_ENVIRONMENT=%PUB_ENVIRONMENT%:flutter_install
|
||||
IF "%PUB_CACHE%" == "" (
|
||||
IF EXIST "%pub_cache_path%" SET PUB_CACHE=%pub_cache_path%
|
||||
)
|
||||
|
||||
SET /A total_tries=10
|
||||
SET /A remaining_tries=%total_tries%-1
|
||||
:retry_pub_upgrade
|
||||
ECHO Running pub upgrade...
|
||||
CALL "%pub%" upgrade "%VERBOSITY%" --no-packages-dir
|
||||
IF "%ERRORLEVEL%" EQU "0" goto :upgrade_succeeded
|
||||
ECHO Error Unable to 'pub upgrade' flutter tool. Retrying in five seconds... (%remaining_tries% tries left)
|
||||
timeout /t 5 /nobreak 2>NUL
|
||||
SET /A remaining_tries-=1
|
||||
IF "%remaining_tries%" EQU "0" GOTO upgrade_retries_exhausted
|
||||
GOTO :retry_pub_upgrade
|
||||
:upgrade_retries_exhausted
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
ECHO Error: 'pub upgrade' still failing after %total_tries% tries, giving up.
|
||||
GOTO final_exit
|
||||
:upgrade_succeeded
|
||||
ENDLOCAL
|
||||
|
||||
POPD
|
||||
|
||||
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
|
||||
IF "%ERRORLEVEL%" NEQ "0" (
|
||||
ECHO Error: Unable to create dart snapshot for flutter tool.
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
GOTO :final_exit
|
||||
)
|
||||
>"%stamp_path%" ECHO %revision%
|
||||
|
||||
REM Exit Subroutine
|
||||
EXIT /B
|
||||
|
||||
:after_subroutine
|
||||
|
||||
CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %*
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
|
||||
REM The VM exits with code 253 if the snapshot version is out-of-date.
|
||||
IF "%exit_code%" EQU "253" (
|
||||
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
IF "%exit_code%" EQU "253" (
|
||||
ECHO Error: Unable to create dart snapshot for flutter tool.
|
||||
EXIT /B %exit_code%
|
||||
)
|
||||
CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %*
|
||||
SET exit_code=%ERRORLEVEL%
|
||||
)
|
||||
|
||||
:final_exit
|
||||
EXIT /B %exit_code%
|
Loading…
Reference in New Issue
Block a user