mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-06-21 10:22:18 +00:00
fix(install): relax native stderr handling in install.ps1 (#48352)
This commit is contained in:
parent
426f321e84
commit
67316fdc94
2 changed files with 90 additions and 6 deletions
|
|
@ -185,6 +185,18 @@ function Write-Err {
|
|||
Write-Host "[X] $Message" -ForegroundColor Red
|
||||
}
|
||||
|
||||
function Invoke-NativeWithRelaxedErrorAction {
|
||||
param([scriptblock]$Script)
|
||||
|
||||
$prevEAP = $ErrorActionPreference
|
||||
$ErrorActionPreference = "Continue"
|
||||
try {
|
||||
& $Script
|
||||
} finally {
|
||||
$ErrorActionPreference = $prevEAP
|
||||
}
|
||||
}
|
||||
|
||||
# Inspect npm output for a TLS-trust failure and, if found, print actionable
|
||||
# remediation. npm/Node surface corporate MITM proxies and missing root CAs as
|
||||
# "unable to get local issuer certificate" / "self-signed certificate in
|
||||
|
|
@ -1306,7 +1318,7 @@ function Install-Repository {
|
|||
Write-Info "Trying SSH clone..."
|
||||
$env:GIT_SSH_COMMAND = "ssh -o BatchMode=yes -o ConnectTimeout=5"
|
||||
try {
|
||||
git -c windows.appendAtomically=false clone --depth 1 --branch $Branch $RepoUrlSsh $InstallDir
|
||||
Invoke-NativeWithRelaxedErrorAction { git -c windows.appendAtomically=false clone --depth 1 --branch $Branch $RepoUrlSsh $InstallDir }
|
||||
if ($LASTEXITCODE -eq 0) { $cloneSuccess = $true }
|
||||
} catch { }
|
||||
$env:GIT_SSH_COMMAND = $null
|
||||
|
|
@ -1315,7 +1327,7 @@ function Install-Repository {
|
|||
if (Test-Path $InstallDir) { Remove-Item -Recurse -Force $InstallDir -ErrorAction SilentlyContinue }
|
||||
Write-Info "SSH failed, trying HTTPS..."
|
||||
try {
|
||||
git -c windows.appendAtomically=false clone --depth 1 --branch $Branch $RepoUrlHttps $InstallDir
|
||||
Invoke-NativeWithRelaxedErrorAction { git -c windows.appendAtomically=false clone --depth 1 --branch $Branch $RepoUrlHttps $InstallDir }
|
||||
if ($LASTEXITCODE -eq 0) { $cloneSuccess = $true }
|
||||
} catch { }
|
||||
}
|
||||
|
|
@ -1443,8 +1455,11 @@ function Install-Venv {
|
|||
Remove-Item -Recurse -Force "venv"
|
||||
}
|
||||
|
||||
# uv creates the venv and pins the Python version in one step
|
||||
& $UvCmd venv venv --python $PythonVersion
|
||||
# uv creates the venv and pins the Python version in one step. uv emits
|
||||
# normal progress such as "Using CPython ..." on stderr; under Windows
|
||||
# PowerShell 5.1 with EAP=Stop that stderr is a NativeCommandError unless
|
||||
# we temporarily relax EAP and trust $LASTEXITCODE for real failures.
|
||||
Invoke-NativeWithRelaxedErrorAction { & $UvCmd venv venv --python $PythonVersion }
|
||||
|
||||
# Neutralize any inherited UV_PYTHON (e.g. $env:UV_PYTHON = "3.14" left in
|
||||
# the user's shell). uv honours UV_PYTHON over an existing venv for the
|
||||
|
|
@ -1514,7 +1529,7 @@ function Install-Dependencies {
|
|||
# in the wrong directory and imports fail with ModuleNotFoundError.
|
||||
# (Mirrors the same flag in scripts/install.sh::install_deps.)
|
||||
$env:UV_PROJECT_ENVIRONMENT = "$InstallDir\venv"
|
||||
& $UvCmd sync --extra all --locked
|
||||
Invoke-NativeWithRelaxedErrorAction { & $UvCmd sync --extra all --locked }
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Success "Main package installed (hash-verified via uv.lock)"
|
||||
$script:InstalledTier = "hash-verified (uv.lock)"
|
||||
|
|
@ -1589,7 +1604,7 @@ except Exception:
|
|||
if (-not $skipPipFallback) {
|
||||
foreach ($tier in $installTiers) {
|
||||
Write-Info "Trying tier: $($tier.Name) ..."
|
||||
& $UvCmd pip install -e $tier.Spec
|
||||
Invoke-NativeWithRelaxedErrorAction { & $UvCmd pip install -e $tier.Spec }
|
||||
if ($LASTEXITCODE -eq 0) {
|
||||
Write-Success "Main package installed ($($tier.Name))"
|
||||
$script:InstalledTier = $tier.Name
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue