xref: /aosp_15_r20/external/crosvm/tools/install-deps.ps1 (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard Worker <#
2*bb4ee6a4SAndroid Build Coastguard Worker .Description
3*bb4ee6a4SAndroid Build Coastguard Worker The script installs binaries needed to build and run crosvm, including rust toolchain and protoc,
4*bb4ee6a4SAndroid Build Coastguard Worker in User's temp directory and sets up system environment variables.
5*bb4ee6a4SAndroid Build Coastguard Worker .PARAMETER BASE_DIR
6*bb4ee6a4SAndroid Build Coastguard Worker Determines where the binaries will be installed. This defaults to user's temp directory.
7*bb4ee6a4SAndroid Build Coastguard Worker #>
8*bb4ee6a4SAndroid Build Coastguard Worker param (
9*bb4ee6a4SAndroid Build Coastguard Worker     [Parameter(
10*bb4ee6a4SAndroid Build Coastguard Worker         Position = 0
11*bb4ee6a4SAndroid Build Coastguard Worker     )]
12*bb4ee6a4SAndroid Build Coastguard Worker     [string]$BASE_DIR = $Env:TEMP  ##
13*bb4ee6a4SAndroid Build Coastguard Worker )
14*bb4ee6a4SAndroid Build Coastguard Worker 
15*bb4ee6a4SAndroid Build Coastguard Worker $BASE_DIR = $BASE_DIR + "\"
16*bb4ee6a4SAndroid Build Coastguard Worker $PROTOC_VERSION = '21.12'
17*bb4ee6a4SAndroid Build Coastguard Worker $PROTOC_SHA256 = "71852A30CF62975358EDFCBBFF93086E8857A079C8E4D6904881AA968D65C7F9"
18*bb4ee6a4SAndroid Build Coastguard Worker $PROTOC_URL = "https://github.com/protocolbuffers/protobuf/releases/download/v$PROTOC_VERSION/protoc-$PROTOC_VERSION-win64.zip"
19*bb4ee6a4SAndroid Build Coastguard Worker $PROTOC_ZIP = $BASE_DIR + 'protoc.zip'
20*bb4ee6a4SAndroid Build Coastguard Worker $PROTOC_DIR = $BASE_DIR + 'protoc\'
21*bb4ee6a4SAndroid Build Coastguard Worker 
22*bb4ee6a4SAndroid Build Coastguard Worker 
23*bb4ee6a4SAndroid Build Coastguard Worker $RUSTUP_INIT_VERSION = '1.25.1'
24*bb4ee6a4SAndroid Build Coastguard Worker $RUSTUP_INIT_SHA256 = "2220DDB49FEA0E0945B1B5913E33D66BD223A67F19FD1C116BE0318DE7ED9D9C"
25*bb4ee6a4SAndroid Build Coastguard Worker $RUSTUP_INIT_URL = "https://static.rust-lang.org/rustup/archive/$RUSTUP_INIT_VERSION/x86_64-pc-windows-msvc/rustup-init.exe"
26*bb4ee6a4SAndroid Build Coastguard Worker $RUSTUP_INIT = $BASE_DIR + 'rustup-init.exe'
27*bb4ee6a4SAndroid Build Coastguard Worker 
28*bb4ee6a4SAndroid Build Coastguard Worker $CARGO_BINSTALL_VERSION = 'v0.19.3'
29*bb4ee6a4SAndroid Build Coastguard Worker $CARGO_BINSTALL_URL = "https://github.com/cargo-bins/cargo-binstall/releases/download/$CARGO_BINSTALL_VERSION/cargo-binstall-x86_64-pc-windows-msvc.zip"
30*bb4ee6a4SAndroid Build Coastguard Worker 
31*bb4ee6a4SAndroid Build Coastguard Worker Write-Host "Installing in $BASE_DIR"
32*bb4ee6a4SAndroid Build Coastguard Worker 
33*bb4ee6a4SAndroid Build Coastguard Worker if (!(Test-Path $BASE_DIR -PathType Container)) {
34*bb4ee6a4SAndroid Build Coastguard Worker     New-Item -ItemType Directory -Force -Path $BASE_DIR
35*bb4ee6a4SAndroid Build Coastguard Worker }
36*bb4ee6a4SAndroid Build Coastguard Worker 
37*bb4ee6a4SAndroid Build Coastguard Worker Set-Location $BASE_DIR
38*bb4ee6a4SAndroid Build Coastguard Worker 
39*bb4ee6a4SAndroid Build Coastguard Worker # Install protobuf compiler
40*bb4ee6a4SAndroid Build Coastguard Worker Invoke-WebRequest $PROTOC_URL -Out $PROTOC_ZIP
41*bb4ee6a4SAndroid Build Coastguard Worker Write-Host "Verifying protoc integrity"
42*bb4ee6a4SAndroid Build Coastguard Worker if ((Get-FileHash $PROTOC_ZIP -Algorithm SHA256).Hash -ne $PROTOC_SHA256)
43*bb4ee6a4SAndroid Build Coastguard Worker {
44*bb4ee6a4SAndroid Build Coastguard Worker     Write-Host "$PROTOC_ZIP sha did not match"
45*bb4ee6a4SAndroid Build Coastguard Worker     Break
46*bb4ee6a4SAndroid Build Coastguard Worker }
47*bb4ee6a4SAndroid Build Coastguard Worker Expand-Archive -Path $PROTOC_ZIP -DestinationPath $PROTOC_DIR
48*bb4ee6a4SAndroid Build Coastguard Worker $Env:PATH = $Env:PATH  + ";" + $PROTOC_DIR + "bin\"
49*bb4ee6a4SAndroid Build Coastguard Worker 
50*bb4ee6a4SAndroid Build Coastguard Worker # Update PATH to contain protobuf and depot_tools directory
51*bb4ee6a4SAndroid Build Coastguard Worker [Environment]::SetEnvironmentVariable("Path", $Env:PATH, [System.EnvironmentVariableTarget]::User)
52*bb4ee6a4SAndroid Build Coastguard Worker 
53*bb4ee6a4SAndroid Build Coastguard Worker # Download rustup-init that helps setting up rustup and rust toolchain.
54*bb4ee6a4SAndroid Build Coastguard Worker # Install protobuf compiler
55*bb4ee6a4SAndroid Build Coastguard Worker Invoke-WebRequest $RUSTUP_INIT_URL -Out $RUSTUP_INIT
56*bb4ee6a4SAndroid Build Coastguard Worker Write-Host "Verifying rustup_init integrity"
57*bb4ee6a4SAndroid Build Coastguard Worker if ((Get-FileHash $RUSTUP_INIT -Algorithm SHA256).Hash -ne $RUSTUP_INIT_SHA256)
58*bb4ee6a4SAndroid Build Coastguard Worker {
59*bb4ee6a4SAndroid Build Coastguard Worker     Write-Host "$RUSTUP_INIT sha did not match"
60*bb4ee6a4SAndroid Build Coastguard Worker     Break
61*bb4ee6a4SAndroid Build Coastguard Worker }
62*bb4ee6a4SAndroid Build Coastguard Worker 
63*bb4ee6a4SAndroid Build Coastguard Worker # Install rustup and rust toolchain
64*bb4ee6a4SAndroid Build Coastguard Worker & $RUSTUP_INIT
65*bb4ee6a4SAndroid Build Coastguard Worker 
66*bb4ee6a4SAndroid Build Coastguard Worker # Update PATH to to contain cargo home directory.
67*bb4ee6a4SAndroid Build Coastguard Worker [Environment]::SetEnvironmentVariable("Path", $Env:PATH, [System.EnvironmentVariableTarget]::User)
68*bb4ee6a4SAndroid Build Coastguard Worker 
69*bb4ee6a4SAndroid Build Coastguard Worker # Cargo extension to install binary packages from github
70*bb4ee6a4SAndroid Build Coastguard Worker $BINSTALL_ZIP = New-TemporaryFile
71*bb4ee6a4SAndroid Build Coastguard Worker Invoke-WebRequest $CARGO_BINSTALL_URL -Out $BINSTALL_ZIP
72*bb4ee6a4SAndroid Build Coastguard Worker $BINSTALL_DEST=((Get-Command cargo) | Get-Item).DirectoryName
73*bb4ee6a4SAndroid Build Coastguard Worker Expand-Archive -Path $BINSTALL_ZIP -DestinationPath $BINSTALL_DEST
74*bb4ee6a4SAndroid Build Coastguard Worker 
75*bb4ee6a4SAndroid Build Coastguard Worker # Nextest is an improved test runner for cargo
76*bb4ee6a4SAndroid Build Coastguard Worker cargo binstall --no-confirm cargo-nextest --version "0.9.49"
77*bb4ee6a4SAndroid Build Coastguard Worker 
78