refactor powershell setup to make it sourceable (#29987)
* refactor powershell setup to make it sourceable * only set editor if it is unset * change directory to spack root in subshell * Update share/spack/setup-env.ps1 Co-authored-by: John W. Parent <45471568+johnwparent@users.noreply.github.com> Co-authored-by: John W. Parent <45471568+johnwparent@users.noreply.github.com>
This commit is contained in:
parent
0abc4564ae
commit
4905a71d6d
2 changed files with 66 additions and 54 deletions
|
@ -3,57 +3,8 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
Push-Location $PSScriptRoot/..
|
$Env:SPACK_PS1_PATH="$PSScriptRoot\..\share\spack\setup-env.ps1"
|
||||||
$Env:SPACK_ROOT = $PWD.Path
|
& (Get-Process -Id $pid).Path -NoExit {
|
||||||
Push-Location $PWD/..
|
. $Env:SPACK_PS1_PATH ;
|
||||||
$Env:spackinstdir = $PWD.Path
|
Push-Location $ENV:SPACK_ROOT
|
||||||
Pop-Location
|
|
||||||
|
|
||||||
Set-Variable -Name python_pf_ver -Value (Get-Command -Name python -ErrorAction SilentlyContinue).Path
|
|
||||||
|
|
||||||
# If python_pf_ver is not defined, we cannot find Python on the Path
|
|
||||||
# We next look for Spack vendored copys
|
|
||||||
if ($null -eq $python_pf_ver)
|
|
||||||
{
|
|
||||||
$python_pf_ver_list = Resolve-Path -Path "$PWD\Python*"
|
|
||||||
if ($python_pf_ver_list.Length -gt 0)
|
|
||||||
{
|
|
||||||
$py_path = $python_pf_ver_list[$python_pf_ver_list.Length-1].Path
|
|
||||||
$py_exe = "$py_path\python.exe"
|
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
Write-Error -Message "Python was not found on system"
|
|
||||||
Write-Output "Please install Python or add Python to the PATH"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
Set-Variable -Name py_exe -Value $python_pf_ver
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$null -eq $py_path)
|
|
||||||
{
|
|
||||||
$Env:Path = "$py_path;$Env:Path"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$null -eq $py_exe)
|
|
||||||
{
|
|
||||||
Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\haspywin.py"
|
|
||||||
Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\spack external find python" | Out-Null
|
|
||||||
}
|
|
||||||
|
|
||||||
$Env:Path = "$Env:SPACK_ROOT\bin;$Env:Path"
|
|
||||||
$Env:EDITOR = "notepad"
|
|
||||||
|
|
||||||
|
|
||||||
Write-Output "*****************************************************************"
|
|
||||||
Write-Output "**************** Spack Package Manager **************************"
|
|
||||||
Write-Output "*****************************************************************"
|
|
||||||
|
|
||||||
$command = 'function global:prompt
|
|
||||||
{
|
|
||||||
$pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf
|
|
||||||
"[spack] PS $pth>"
|
|
||||||
}'
|
|
||||||
$bytesc = [System.Text.Encoding]::Unicode.GetBytes($command)
|
|
||||||
$encoded_command = [Convert]::ToBase64String($bytesc)
|
|
||||||
powershell.exe -NoLogo -encodedCommand $encoded_command -NoExit
|
|
||||||
|
|
61
share/spack/setup-env.ps1
Normal file
61
share/spack/setup-env.ps1
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
|
||||||
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
|
Push-Location $PSScriptRoot/../..
|
||||||
|
$Env:SPACK_ROOT = $PWD.Path
|
||||||
|
Push-Location $PWD/..
|
||||||
|
$Env:spackinstdir = $PWD.Path
|
||||||
|
Pop-Location
|
||||||
|
|
||||||
|
Set-Variable -Name python_pf_ver -Value (Get-Command -Name python -ErrorAction SilentlyContinue).Path
|
||||||
|
|
||||||
|
# If python_pf_ver is not defined, we cannot find Python on the Path
|
||||||
|
# We next look for Spack vendored copys
|
||||||
|
if ($null -eq $python_pf_ver)
|
||||||
|
{
|
||||||
|
$python_pf_ver_list = Resolve-Path -Path "$PWD\Python*"
|
||||||
|
if ($python_pf_ver_list.Length -gt 0)
|
||||||
|
{
|
||||||
|
$py_path = $python_pf_ver_list[$python_pf_ver_list.Length-1].Path
|
||||||
|
$py_exe = "$py_path\python.exe"
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
Write-Error -Message "Python was not found on system"
|
||||||
|
Write-Output "Please install Python or add Python to the PATH"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
Set-Variable -Name py_exe -Value $python_pf_ver
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$null -eq $py_path)
|
||||||
|
{
|
||||||
|
$Env:Path = "$py_path;$Env:Path"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$null -eq $py_exe)
|
||||||
|
{
|
||||||
|
Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\haspywin.py"
|
||||||
|
Invoke-Expression "$py_exe $Env:SPACK_ROOT\bin\spack external find python" | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
$Env:Path = "$Env:SPACK_ROOT\bin;$Env:Path"
|
||||||
|
if ($null -eq $Env:EDITOR)
|
||||||
|
{
|
||||||
|
$Env:EDITOR = "notepad"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Write-Output "*****************************************************************"
|
||||||
|
Write-Output "**************** Spack Package Manager **************************"
|
||||||
|
Write-Output "*****************************************************************"
|
||||||
|
|
||||||
|
function global:prompt
|
||||||
|
{
|
||||||
|
$pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf
|
||||||
|
"[spack] PS $pth>"
|
||||||
|
}
|
||||||
|
Pop-Location
|
||||||
|
|
Loading…
Reference in a new issue