From c53f5298caa7783df11cf9279afc66890664ae96 Mon Sep 17 00:00:00 2001 From: Daniel Han <23090290+danielhanchen@users.noreply.github.com> Date: Wed, 18 Mar 2026 05:36:54 +0000 Subject: [PATCH] Guard CUDA env re-sanitization behind GPU check in llama.cpp build The CUDA_PATH re-sanitization block (lines 1020-1033) references $CudaToolkitRoot which is only set when $HasNvidiaSmi is true and the CUDA Toolkit section runs. On CPU-only machines, $CudaToolkitRoot is null, causing Split-Path to throw: Split-Path : Cannot bind argument to parameter 'Path' because it is null. Wrap the entire block in `if ($HasNvidiaSmi -and $CudaToolkitRoot)`. --- studio/setup.ps1 | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/studio/setup.ps1 b/studio/setup.ps1 index c0dde94100..8ad4009bac 100644 --- a/studio/setup.ps1 +++ b/studio/setup.ps1 @@ -1020,17 +1020,19 @@ if (Test-Path $LlamaServerBin) { # Re-sanitize CUDA_PATH_V* vars — Refresh-Environment (called during # Node/Python installs above) may have repopulated conflicting versioned # vars from the Machine registry. - $cudaPathVars2 = @([Environment]::GetEnvironmentVariables('Process').Keys | Where-Object { $_ -match '^CUDA_PATH_V' }) - foreach ($v2 in $cudaPathVars2) { - [Environment]::SetEnvironmentVariable($v2, $null, 'Process') + if ($HasNvidiaSmi -and $CudaToolkitRoot) { + $cudaPathVars2 = @([Environment]::GetEnvironmentVariables('Process').Keys | Where-Object { $_ -match '^CUDA_PATH_V' }) + foreach ($v2 in $cudaPathVars2) { + [Environment]::SetEnvironmentVariable($v2, $null, 'Process') + } + $tkDirName2 = Split-Path $CudaToolkitRoot -Leaf + if ($tkDirName2 -match '^v(\d+)\.(\d+)') { + [Environment]::SetEnvironmentVariable("CUDA_PATH_V$($Matches[1])_$($Matches[2])", $CudaToolkitRoot, 'Process') + } + # Also re-assert CUDA_PATH and CudaToolkitDir in case they were overwritten + [Environment]::SetEnvironmentVariable('CUDA_PATH', $CudaToolkitRoot, 'Process') + [Environment]::SetEnvironmentVariable('CudaToolkitDir', "$CudaToolkitRoot\", 'Process') } - $tkDirName2 = Split-Path $CudaToolkitRoot -Leaf - if ($tkDirName2 -match '^v(\d+)\.(\d+)') { - [Environment]::SetEnvironmentVariable("CUDA_PATH_V$($Matches[1])_$($Matches[2])", $CudaToolkitRoot, 'Process') - } - # Also re-assert CUDA_PATH and CudaToolkitDir in case they were overwritten - [Environment]::SetEnvironmentVariable('CUDA_PATH', $CudaToolkitRoot, 'Process') - [Environment]::SetEnvironmentVariable('CudaToolkitDir', "$CudaToolkitRoot\", 'Process') # -- Step A: Clone or pull llama.cpp --