@echo off rem file : etc/bootstrap/bbot-bootstrap-msvc.bat rem license : MIT; see accompanying LICENSE file setlocal EnableExtensions EnableDelayedExpansion goto start @rem Remove a directory recursively. Noop for non-existent directory. @rem @rem Note that the underlying rmdir call periodically fails with the @rem 'directory not empty' diagnostics, in which case we make up to 100 @rem removal attempts. @rem :rmdir_S @if not exist %1\ goto :eof @setlocal EnableDelayedExpansion @set /A "i=0" :rmdir_S_try @rem Note that rmdir doesn't properly set errorlevel, so we check for the @rem directory existence to detect the failure. @rem rmdir /S /Q %1\ @if exist %1\ ( if %i% neq 99 ( set /A "i=%i%+1" goto rmdir_S_try ) echo error: unable to remove %1\ endlocal exit /b 1 ) @endlocal @goto :eof :start rem set "MSVC=C:\Program Files (x86)\Microsoft Visual Studio\2017\Community" set "MSVC=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community" set "VCVARS=VC\Auxiliary\Build\vcvars64.bat" set "BUILD=C:\tmp" set "INSTALL=C:\build2" set "BOOTSTRAP=C:\bootstrap" set "ENVIRONMENTS=C:\environments" set "TFTP=196.254.111.222" rem set "TFTP=10.1.0.1:55123" set "VERBOSE=3" set "TIMEOUT=600" rem If we already have the bbot worker, assume we are bootstrapped. rem if exist %INSTALL%\bin\bbot-worker.exe ( set "PATH=%INSTALL%\bin;%PATH%" bbot-worker.exe --startup --build %BUILD% --environments %ENVIRONMENTS%^ --tftp-host %TFTP% --verbose %VERBOSE% goto end ) rem Setup the compiler for the toolchain. rem call "%MSVC%\%VCVARS%" if errorlevel 1 goto error rem Use bootstrap tools. rem set "PATH=%BOOTSTRAP%\bin;%PATH%" rem Show the steps we are performing. rem @echo on @rem @rem Bootstrap the toolchain and then build bbot. @rem @call :rmdir_S %BUILD%\bootstrap @if errorlevel 1 goto error mkdir %BUILD%\bootstrap @if errorlevel 1 goto error @call :rmdir_S %INSTALL% @if errorlevel 1 goto error cd %BUILD%\bootstrap @rem @rem Get the baseutils. @rem @rem We could be running on a new network which may take Windows some time @rem to digest. And if we start before that happens, we will be hanging @rem forever. @rem :restart curl -s -S -O --connect-timeout 5 --max-time 60^ "tftp://%tftp%/build2-baseutils-x86_64-windows.zip" @if errorlevel 1 goto restart unzip -q build2-baseutils-x86_64-windows.zip @if errorlevel 1 goto error del build2-baseutils-x86_64-windows.zip @if errorlevel 1 goto error move build2-baseutils-*-x86_64-windows %INSTALL% @if errorlevel 1 goto error @rem @rem Get the toolchain. @rem curl -s -S -O "tftp://%tftp%/build2-toolchain.tar.xz" @if errorlevel 1 goto error xz -d build2-toolchain.tar.xz @if errorlevel 1 goto error tar -xf build2-toolchain.tar @if errorlevel 1 goto error del build2-toolchain.tar @if errorlevel 1 goto error @rem @rem Get the repository certificate fingerprint. @rem curl -s -S -O "tftp://%tftp%/trust" @if errorlevel 1 goto error @set /P trust=bootstrap.manifest @if errorlevel 1 goto error curl -s -S --upload-file bootstrap.manifest "tftp://%tftp%/bootstrap.manifest" @if errorlevel 1 goto error shutdown /s /t 5 @if errorlevel 1 goto error @echo off goto end :error @echo off endlocal exit /b 1 :end endlocal