From 10b1c372cb247189f7cc2b156b9e925f95d4da30 Mon Sep 17 00:00:00 2001 From: Aaron Klotz Date: Wed, 4 Mar 2026 16:16:05 -0700 Subject: [PATCH] 1 Signed-off-by: Aaron Klotz --- tool/gocross/gocross-wrapper.ps1 | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tool/gocross/gocross-wrapper.ps1 b/tool/gocross/gocross-wrapper.ps1 index 23bd6eb27..bdaf0ae93 100644 --- a/tool/gocross/gocross-wrapper.ps1 +++ b/tool/gocross/gocross-wrapper.ps1 @@ -204,7 +204,7 @@ Start-ChildScope -ScriptBlock $bootstrapScriptBlock $repoRoot = Get-RepoRoot $execEnv = Copy-Environment -# Start-Process's -Environment arg applies diffs, so instead of removing +# We're applying diffs to our current environment, so instead of removing # these variables from $execEnv, we must set them to $null to indicate # that they should be cleared. $execEnv['GOROOT'] = $null @@ -223,12 +223,15 @@ if ($Env:TS_USE_GOCROSS -ne '1') { } $procExe = Join-Path $toolchain 'bin' 'go.exe' -Resolve - $proc = Start-Process -FilePath $procExe -WorkingDirectory $repoRoot -Environment $execEnv -ArgumentList $argList -NoNewWindow -PassThru - $proc.WaitForExit() - exit $proc.ExitCode +} +else { + $procExe = Join-Path $repoRoot 'gocross.exe' -Resolve } -$procExe = Join-Path $repoRoot 'gocross.exe' -Resolve -$proc = Start-Process -FilePath $procExe -WorkingDirectory $repoRoot -Environment $execEnv -ArgumentList $argList -NoNewWindow -PassThru -$proc.WaitForExit() -exit $proc.ExitCode +Start-ChildScope -ScriptBlock { + Set-Location -LiteralPath $repoRoot + foreach ($key in $execEnv.Keys) { + Set-Item -Path "Env:$key" -Value $execEnv[$key] + } + & $procExe @argList +}