blob: c02acc12250bae771c8ee8a28c2eb904ba126903 [file] [log] [blame]
# Copyright 2020 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Test me with something like:
#
# $Env:GITHUB_ENV="ghenv.txt"
# $Env:GITHUB_PATH="ghpath.txt"
# .\configure_dev_environment.ps1 -bashExePath C:\tools\msys64\usr\bin\bash.exe
param ([Parameter(Mandatory)]$bashExePath)
# Resolve the items we need from the path prior to vcvars mangling it.
$pythonPath = (Get-Command python.exe).Path | Split-Path -Parent
Write-Output "++ Found Python $pythonPath"
# Resolve bash.exe.
if (!(Test-Path $bashExePath -PathType Leaf)) {
Write-Error "-- Could not find bash.exe at $bashExePath"
exit 1
}
$bashPath = $bashExePath | Split-Path -Parent
Write-Output "++ Found bash path $bashPath"
# Use vswhere to find vcvarsall path.
$vsInstallPath = vswhere -property installationPath
$vcvarsFile = "$($vsInstallPath)\VC\Auxiliary\Build\vcvarsall.bat"
if (!(Test-Path $vcvarsFile -PathType Leaf)) {
Write-Error "-- Could not find vcvarsall file: $vcvarsFile"
exit 1
}
Write-Output "++ VCVarsAll Path: $vcvarsFile"
# Get the github environement file.
$githubEnv = $Env:GITHUB_ENV
if (!($githubEnv)) {
Write-Error "-- Not running under GitHub Actions (no GITHUB_ENV var)"
exit 1
}
Write-Output "++ GITHUB_ENV = $githubEnv"
$githubPath = $Env:GITHUB_PATH
if (!($githubPath)) {
Write-Error "-- Not running under GitHub Actions (no GITHUB_PATH var)"
exit 1
}
Write-Output "++ GITHUB_PATH = $githubPath"
# Load it in a sub-shell and dump the variables.
$vcvars = @(cmd.exe /c "call `"$vcvarsFile`" x64 > NUL && set")
foreach ($entry in $vcvars) {
if ($entry -match "^(.*?)=(.*)$") {
$key = "$($matches[1])"
$value = "$($matches[2])"
if($key -eq "Path") {
# Accumulate the existing path.
$existingPathArray = @()
$env:Path.ToString().TrimEnd(';') -split ';' | ForEach-Object {
$existingPathArray += $_
}
# Process the new path.
$newPathArray = $value -split ';'
[array]::Reverse($newPathArray)
# In reverse order, tell GitHub to add any new entries to the path.
# This still may get the order slightly wrong if existing things were
# re-added, but we really have to draw the line somewhere...
foreach ($newPathEntry in $newPathArray) {
if (!$existingPathArray.Contains($newPathEntry)) {
Add-Content $githubPath "$newPathEntry" -Encoding utf8
Write-Output "++ PREPEND PATH: $newPathEntry"
}
}
# Note: High priority override path changes are applied in reverse order.
Add-Content $githubPath "$bashPath" -Encoding utf8
Write-Output "++ PREPEND PATH: $bashPath"
Add-Content $githubPath "$pythonPath" -Encoding utf8
Write-Output "++ PREPEND PATH: $pythonPath"
} else {
Add-Content $githubEnv "$key=$value" -Encoding utf8
Write-Output "++ $key = $value"
}
}
}
# Finally, emit the BAZEL_SH parameter. Because sometimes it doesn't respect
# the path. Because... awesomeness.
Add-Content $githubEnv "BAZEL_SH=$bashExePath" -Encoding utf8