You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Batchfile
		
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Batchfile
		
	
@echo off
 | 
						|
:: Copyright (c) 2017 The Chromium Authors. All rights reserved.
 | 
						|
:: Use of this source code is governed by a BSD-style license that can be
 | 
						|
:: found in the LICENSE file.
 | 
						|
 | 
						|
:: This script will determine if python or git binaries need updates. It
 | 
						|
:: returns !0 as failure
 | 
						|
 | 
						|
:: Note: we set EnableDelayedExpansion so we can perform string manipulations
 | 
						|
:: in our manifest parsing loop. This only works on Windows XP+.
 | 
						|
setlocal EnableDelayedExpansion
 | 
						|
 | 
						|
:: Get absolute root directory (.js scripts don't handle relative paths well).
 | 
						|
pushd %~dp0..
 | 
						|
set BOOTSTRAP_ROOT_DIR=%CD%
 | 
						|
popd
 | 
						|
 | 
						|
:: Extra arguments to pass to our "win_tools.py" script.
 | 
						|
set BOOTSTRAP_EXTRA_ARGS=
 | 
						|
 | 
						|
:: Determine if we're running a bleeding-edge installation.
 | 
						|
if not exist "%BOOTSTRAP_ROOT_DIR%\.bleeding_edge" (
 | 
						|
  set CIPD_MANIFEST=manifest.txt
 | 
						|
) else (
 | 
						|
  set CIPD_MANIFEST=manifest_bleeding_edge.txt
 | 
						|
)
 | 
						|
 | 
						|
:: Parse our CIPD manifest and identify the "cpython" version. We do this by
 | 
						|
:: reading it line-by-line, identifying the line containing "cpython", and
 | 
						|
:: stripping all text preceding "version:". This leaves us with the version
 | 
						|
:: string.
 | 
						|
::
 | 
						|
:: This method requires EnableDelayedExpansion, and extracts the Python version
 | 
						|
:: from our CIPD manifest. Variables referenced using "!" instead of "%" are
 | 
						|
:: delayed expansion variables.
 | 
						|
for /F "tokens=*" %%A in (%~dp0%CIPD_MANIFEST%) do (
 | 
						|
  set LINE=%%A
 | 
						|
  if not "x!LINE:cpython/=!" == "x!LINE!" set PYTHON_VERSION=!LINE:*version:=!
 | 
						|
  if not "x!LINE:cpython3/=!" == "x!LINE!" set PYTHON3_VERSION=!LINE:*version:=!
 | 
						|
)
 | 
						|
if "%PYTHON_VERSION%" == "" (
 | 
						|
  @echo Could not extract Python version from manifest.
 | 
						|
  set ERRORLEVEL=1
 | 
						|
  goto :END
 | 
						|
)
 | 
						|
if "%PYTHON3_VERSION%" == "" (
 | 
						|
  @echo Could not extract Python version from manifest.
 | 
						|
  set ERRORLEVEL=1
 | 
						|
  goto :END
 | 
						|
)
 | 
						|
 | 
						|
:: We will take the version string, replace "." with "_", and surround it with
 | 
						|
:: "bootstrap-<PYTHON3_VERSION>_bin" so that it matches "win_tools.py"'s cleanup
 | 
						|
:: expression and ".gitignore".
 | 
						|
::
 | 
						|
:: We incorporate PYTHON3_VERSION into the "win_tools" directory name so that
 | 
						|
:: new installations don't interfere with long-running Python processes if
 | 
						|
:: Python is upgraded.
 | 
						|
set BOOTSTRAP_NAME=bootstrap-%PYTHON3_VERSION:.=_%_bin
 | 
						|
set BOOTSTRAP_PATH=%BOOTSTRAP_ROOT_DIR%\%BOOTSTRAP_NAME%
 | 
						|
set BOOTSTRAP_EXTRA_ARGS=--bootstrap-name "%BOOTSTRAP_NAME%"
 | 
						|
 | 
						|
:: Install our CIPD packages. The CIPD client self-bootstraps.
 | 
						|
:: See "//cipd.bat" and "//cipd.ps1" for more information.
 | 
						|
set CIPD_EXE=%BOOTSTRAP_ROOT_DIR%\cipd.bat
 | 
						|
call "%CIPD_EXE%" ensure -log-level warning -ensure-file "%~dp0%CIPD_MANIFEST%" -root "%BOOTSTRAP_PATH%"
 | 
						|
if errorlevel 1 goto :END
 | 
						|
 | 
						|
:: This executes "win_tools.py" using the bundle's Python interpreter.
 | 
						|
set BOOTSTRAP_PYTHON_BIN=%BOOTSTRAP_PATH%\python3\bin\python3.exe
 | 
						|
call "%BOOTSTRAP_PYTHON_BIN%" "%~dp0bootstrap.py" %BOOTSTRAP_EXTRA_ARGS%
 | 
						|
 | 
						|
 | 
						|
:END
 | 
						|
set EXPORT_ERRORLEVEL=%ERRORLEVEL%
 | 
						|
endlocal & (
 | 
						|
  set ERRORLEVEL=%EXPORT_ERRORLEVEL%
 | 
						|
)
 | 
						|
exit /b %ERRORLEVEL%
 |