# 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