Normalize Spack Win entry points (#38648)
* Normalize Spack Win entrypoints Currently Spack has multiple entrypoints on Windows that in addition to differing from *nix implementations, differ from shell to shell on Windows. This is a bit confusing for new users and in general unnecessary. This PR adds a normal setup script for the batch shell while preserving the previous "click from file explorer for spack shell" behavior. Additionally adds a shell title to both powershell and cmd letting users know this is a Spack shell * remove doskeys
This commit is contained in:
parent
ad0b256407
commit
7b27aed4c8
@ -1,71 +1,11 @@
|
|||||||
@ECHO OFF
|
@ECHO OFF
|
||||||
setlocal EnableDelayedExpansion
|
|
||||||
:: (c) 2021 Lawrence Livermore National Laboratory
|
:: (c) 2021 Lawrence Livermore National Laboratory
|
||||||
:: To use this file independently of Spack's installer, execute this script in its directory, or add the
|
:: To use this file independently of Spack's installer, execute this script in its directory, or add the
|
||||||
:: associated bin directory to your PATH. Invoke to launch Spack Shell.
|
:: associated bin directory to your PATH. Invoke to launch Spack Shell.
|
||||||
::
|
::
|
||||||
:: source_dir/spack/bin/spack_cmd.bat
|
:: source_dir/spack/bin/spack_cmd.bat
|
||||||
::
|
::
|
||||||
pushd %~dp0..
|
|
||||||
set SPACK_ROOT=%CD%
|
|
||||||
pushd %CD%\..
|
|
||||||
set spackinstdir=%CD%
|
|
||||||
popd
|
|
||||||
|
|
||||||
|
call "%~dp0..\share\spack\setup-env.bat"
|
||||||
:: Check if Python is on the PATH
|
pushd %SPACK_ROOT%
|
||||||
if not defined python_pf_ver (
|
%comspec% /K
|
||||||
(for /f "delims=" %%F in ('where python.exe') do (
|
|
||||||
set "python_pf_ver=%%F"
|
|
||||||
goto :found_python
|
|
||||||
) ) 2> NUL
|
|
||||||
)
|
|
||||||
:found_python
|
|
||||||
if not defined python_pf_ver (
|
|
||||||
:: If not, look for Python from the Spack installer
|
|
||||||
:get_builtin
|
|
||||||
(for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do (
|
|
||||||
set "python_ver=%%g")) 2> NUL
|
|
||||||
|
|
||||||
if not defined python_ver (
|
|
||||||
echo Python was not found on your system.
|
|
||||||
echo Please install Python or add Python to your PATH.
|
|
||||||
) else (
|
|
||||||
set "py_path=!spackinstdir!\!python_ver!"
|
|
||||||
set "py_exe=!py_path!\python.exe"
|
|
||||||
)
|
|
||||||
goto :exitpoint
|
|
||||||
) else (
|
|
||||||
:: Python is already on the path
|
|
||||||
set "py_exe=!python_pf_ver!"
|
|
||||||
(for /F "tokens=* USEBACKQ" %%F in (
|
|
||||||
`"!py_exe!" --version`) do (set "output=%%F")) 2>NUL
|
|
||||||
if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin
|
|
||||||
goto :exitpoint
|
|
||||||
)
|
|
||||||
:exitpoint
|
|
||||||
|
|
||||||
set "PATH=%SPACK_ROOT%\bin\;%PATH%"
|
|
||||||
if defined py_path (
|
|
||||||
set "PATH=%py_path%;%PATH%"
|
|
||||||
)
|
|
||||||
|
|
||||||
if defined py_exe (
|
|
||||||
"%py_exe%" "%SPACK_ROOT%\bin\haspywin.py"
|
|
||||||
)
|
|
||||||
|
|
||||||
set "EDITOR=notepad"
|
|
||||||
|
|
||||||
DOSKEY spacktivate=spack env activate $*
|
|
||||||
|
|
||||||
@echo **********************************************************************
|
|
||||||
@echo ** Spack Package Manager
|
|
||||||
@echo **********************************************************************
|
|
||||||
|
|
||||||
IF "%1"=="" GOTO CONTINUE
|
|
||||||
set
|
|
||||||
GOTO:EOF
|
|
||||||
|
|
||||||
:continue
|
|
||||||
set PROMPT=[spack] %PROMPT%
|
|
||||||
%comspec% /k
|
|
||||||
|
@ -48,8 +48,6 @@ def activate_header(env, shell, prompt=None, view: Optional[str] = None):
|
|||||||
cmds += 'set "SPACK_ENV=%s"\n' % env.path
|
cmds += 'set "SPACK_ENV=%s"\n' % env.path
|
||||||
if view:
|
if view:
|
||||||
cmds += 'set "SPACK_ENV_VIEW=%s"\n' % view
|
cmds += 'set "SPACK_ENV_VIEW=%s"\n' % view
|
||||||
# TODO: despacktivate
|
|
||||||
# TODO: prompt
|
|
||||||
elif shell == "pwsh":
|
elif shell == "pwsh":
|
||||||
cmds += "$Env:SPACK_ENV='%s'\n" % env.path
|
cmds += "$Env:SPACK_ENV='%s'\n" % env.path
|
||||||
if view:
|
if view:
|
||||||
|
77
share/spack/setup-env.bat
Normal file
77
share/spack/setup-env.bat
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
@ECHO OFF
|
||||||
|
setlocal EnableDelayedExpansion
|
||||||
|
:: (c) 2021 Lawrence Livermore National Laboratory
|
||||||
|
:: To use this file independently of Spack's installer, execute this script in its directory, or add the
|
||||||
|
:: associated bin directory to your PATH. Invoke to launch Spack Shell.
|
||||||
|
::
|
||||||
|
:: source_dir/spack/bin/spack_cmd.bat
|
||||||
|
::
|
||||||
|
pushd %~dp0..\..
|
||||||
|
set SPACK_ROOT=%CD%
|
||||||
|
pushd %CD%\..
|
||||||
|
set spackinstdir=%CD%
|
||||||
|
popd
|
||||||
|
|
||||||
|
|
||||||
|
:: Check if Python is on the PATH
|
||||||
|
if not defined python_pf_ver (
|
||||||
|
(for /f "delims=" %%F in ('where python.exe') do (
|
||||||
|
set "python_pf_ver=%%F"
|
||||||
|
goto :found_python
|
||||||
|
) ) 2> NUL
|
||||||
|
)
|
||||||
|
:found_python
|
||||||
|
if not defined python_pf_ver (
|
||||||
|
:: If not, look for Python from the Spack installer
|
||||||
|
:get_builtin
|
||||||
|
(for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do (
|
||||||
|
set "python_ver=%%g")) 2> NUL
|
||||||
|
|
||||||
|
if not defined python_ver (
|
||||||
|
echo Python was not found on your system.
|
||||||
|
echo Please install Python or add Python to your PATH.
|
||||||
|
) else (
|
||||||
|
set "py_path=!spackinstdir!\!python_ver!"
|
||||||
|
set "py_exe=!py_path!\python.exe"
|
||||||
|
)
|
||||||
|
goto :exitpoint
|
||||||
|
) else (
|
||||||
|
:: Python is already on the path
|
||||||
|
set "py_exe=!python_pf_ver!"
|
||||||
|
(for /F "tokens=* USEBACKQ" %%F in (
|
||||||
|
`"!py_exe!" --version`) do (set "output=%%F")) 2>NUL
|
||||||
|
if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin
|
||||||
|
goto :exitpoint
|
||||||
|
)
|
||||||
|
:exitpoint
|
||||||
|
endlocal & (
|
||||||
|
set "SPACK_ROOT=%SPACK_ROOT%"
|
||||||
|
set "spackinstdir=%spackinstdir%"
|
||||||
|
set "py_path=%py_path%"
|
||||||
|
set "py_exe=%py_exe%"
|
||||||
|
)
|
||||||
|
|
||||||
|
set "PATH=%SPACK_ROOT%\bin\;%PATH%"
|
||||||
|
if defined py_path (
|
||||||
|
set "PATH=%py_path%;%PATH%"
|
||||||
|
)
|
||||||
|
|
||||||
|
if defined py_exe (
|
||||||
|
"%py_exe%" "%SPACK_ROOT%\bin\haspywin.py"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not defined EDITOR (
|
||||||
|
set EDITOR=notepad
|
||||||
|
)
|
||||||
|
|
||||||
|
@echo **********************************************************************
|
||||||
|
@echo ** Spack Package Manager
|
||||||
|
@echo **********************************************************************
|
||||||
|
|
||||||
|
IF "%1"=="" GOTO CONTINUE
|
||||||
|
set
|
||||||
|
GOTO:EOF
|
||||||
|
|
||||||
|
:continue
|
||||||
|
title Spack
|
||||||
|
set PROMPT=[spack] %PROMPT%
|
@ -60,5 +60,6 @@ function global:prompt
|
|||||||
$pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf
|
$pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf
|
||||||
"[spack] PS $pth>"
|
"[spack] PS $pth>"
|
||||||
}
|
}
|
||||||
|
[system.console]::title = "Spack"
|
||||||
Pop-Location
|
Pop-Location
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user