Commit e01470a8 authored by Michael Goderbauer's avatar Michael Goderbauer Committed by GitHub

Lock Cache before downloading Dart SDK on Windows (#7931)

parent af587a15
...@@ -17,6 +17,7 @@ SETLOCAL ENABLEDELAYEDEXPANSION ...@@ -17,6 +17,7 @@ SETLOCAL ENABLEDELAYEDEXPANSION
FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi FOR %%i IN ("%~dp0..") DO SET FLUTTER_ROOT=%%~fi
SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools SET flutter_tools_dir=%FLUTTER_ROOT%\packages\flutter_tools
SET cache_dir=%FLUTTER_ROOT%\bin\cache
SET snapshot_path=%FLUTTER_ROOT%\bin\cache\flutter_tools.snapshot SET snapshot_path=%FLUTTER_ROOT%\bin\cache\flutter_tools.snapshot
SET stamp_path=%FLUTTER_ROOT%\bin\cache\flutter_tools.stamp SET stamp_path=%FLUTTER_ROOT%\bin\cache\flutter_tools.stamp
SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart SET script_path=%flutter_tools_dir%\bin\flutter_tools.dart
...@@ -33,42 +34,57 @@ IF NOT EXIST "%flutter_root%\.git" ( ...@@ -33,42 +34,57 @@ IF NOT EXIST "%flutter_root%\.git" (
EXIT /B EXIT /B
) )
REM Ensure that bin/cache exists.
IF NOT EXIST "%cache_dir%" MKDIR "%cache_dir%"
REM To debug the tool, you can uncomment the following line to enable checked mode and set an observatory port: REM To debug the tool, you can uncomment the following line to enable checked mode and set an observatory port:
REM SET FLUTTER_TOOL_ARGS="--observe=65432 --checked" REM SET FLUTTER_TOOL_ARGS="--observe=65432 --checked"
PUSHD "%flutter_root%" :acquire_lock
FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r 2>NUL (
POPD REM "3" is now stderr because of "2>NUL".
CALL :subroutine %* 2>&3 9> "%cache_dir%\flutter.bat.lock" || GOTO acquire_lock
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. GOTO :after_subroutine
IF NOT EXIST "%snapshot_path%" GOTO do_snapshot
IF NOT EXIST "%stamp_path%" GOTO do_snapshot :subroutine
SET /p stamp_value=<"%stamp_path%" PUSHD "%flutter_root%"
IF !stamp_value! NEQ !revision! GOTO do_snapshot FOR /f %%r IN ('git rev-parse HEAD') DO SET revision=%%r
REM Get modified timestamps
FOR %%f IN ("%flutter_tools_dir%\pubspec.yaml") DO SET yamlt=%%~tf
FOR %%a IN ("%flutter_tools_dir%\pubspec.lock") DO SET lockt=%%~ta
IF !lockt! LSS !yamlt! GOTO do_snapshot
GOTO after_snapshot
:do_snapshot
MKDIR "%FLUTTER_ROOT%\bin\cache" 2> NUL
ECHO: > "%FLUTTER_ROOT%\bin\cache\.dartignore"
ECHO Checking Dart SDK version...
CALL PowerShell.exe -ExecutionPolicy Bypass -Command "& '%FLUTTER_ROOT%/bin/internal/update_dart_sdk.ps1'"
ECHO Updating flutter tool...
del "%flutter_tools_dir%\pubspec.lock"
PUSHD "%flutter_tools_dir%"
CALL "%pub%" get --verbosity=error --no-packages-dir
POPD POPD
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
>"%stamp_path%" ECHO %revision%
:after_snapshot 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 "%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 Get modified timestamps
FOR %%f IN ("%flutter_tools_dir%\pubspec.yaml") DO SET yamlt=%%~tf
FOR %%a IN ("%flutter_tools_dir%\pubspec.lock") DO SET lockt=%%~ta
IF !lockt! LSS !yamlt! GOTO do_snapshot
REM Everything is uptodate - exit subroutine
EXIT /B
:do_snapshot
MKDIR "%FLUTTER_ROOT%\bin\cache" 2> NUL
ECHO: > "%FLUTTER_ROOT%\bin\cache\.dartignore"
ECHO Checking Dart SDK version...
CALL PowerShell.exe -ExecutionPolicy Bypass -Command "& '%FLUTTER_ROOT%/bin/internal/update_dart_sdk.ps1'"
ECHO Updating flutter tool...
del "%flutter_tools_dir%\pubspec.lock"
PUSHD "%flutter_tools_dir%"
CALL "%pub%" get --verbosity=error --no-packages-dir
POPD
CALL "%dart%" --snapshot="%snapshot_path%" --packages="%flutter_tools_dir%\.packages" "%script_path%"
>"%stamp_path%" ECHO %revision%
REM Exit Subroutine
EXIT /B
:after_subroutine
CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %* CALL "%dart%" %FLUTTER_TOOL_ARGS% "%snapshot_path%" %*
......
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