Relocate spack_cmd and scripts from installer to root bin (#24651)

Relocate spack_cmd and scripts from installer
to root bin

Refactor documentation, installer, and launcher
to facilitate that change
This commit is contained in:
John W. Parent 2021-07-07 08:32:47 -04:00 committed by Peter Scheibel
parent 4a73bfc3b9
commit e65d3d14b4
6 changed files with 63 additions and 81 deletions

View file

@ -1,16 +1,18 @@
@ECHO OFF @ECHO OFF
setlocal EnableDelayedExpansion setlocal EnableDelayedExpansion
:: (c) 2021 Lawrence Livermore National Laboratory :: (c) 2021 Lawrence Livermore National Laboratory
:: To use this file independently of Spack's installer, please copy this file, and the :: To use this file independently of Spack's installer, execute this script in its directory, or add the
:: 'scripts' directory, to be adjacent to your spack directory. You must have python on :: associated bin directory to your PATH. Invoke to launch Spack Shell.
:: your path for Spack to locate it. ::
:: source_dir -------- spack :: source_dir/spack/bin/spack_cmd.bat
:: |--- scripts ::
:: |--- spack_cmd.bat pushd %~dp0..
pushd %~dp0 set SPACK_ROOT=%CD%
pushd %CD%\..
set spackinstdir=%CD% set spackinstdir=%CD%
popd popd
:: Check if Python is on the PATH :: Check if Python is on the PATH
(for /f "delims=" %%F in ('where python.exe') do (set python_pf_ver=%%F) ) 2> NUL (for /f "delims=" %%F in ('where python.exe') do (set python_pf_ver=%%F) ) 2> NUL
@ -38,17 +40,13 @@ if not defined python_pf_ver (
) )
:exitpoint :exitpoint
set "PATH=%SPACK_ROOT%\bin\;%PATH%"
for /f "tokens=*" %%g in ('dir /b /a:d "%spackinstdir%\spack*"') do (set spack_ver=%%g)
set "SPACK_ROOT=%spackinstdir%\%spack_ver%"
set "PATH=%spackinstdir%\scripts\;%PATH%"
if defined py_path ( if defined py_path (
set "PATH=%py_path%;%PATH%" set "PATH=%py_path%;%PATH%"
) )
if defined py_exe ( if defined py_exe (
"%py_exe%" "%spackinstdir%\scripts\haspywin.py" "%py_exe%" "%SPACK_ROOT%\bin\haspywin.py"
"%py_exe%" "%SPACK_ROOT%\bin\spack" external find python >NUL "%py_exe%" "%SPACK_ROOT%\bin\spack" external find python >NUL
) )

View file

@ -1616,44 +1616,26 @@ Step 2: Install and setup Spack
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We are now ready to get the Spack environment set up on our machine. We We are now ready to get the Spack environment set up on our machine. We
begin by creating a top-level directory to do our work in: we will call begin by using Git to clone the Spack repo, hosted at https://github.com/spack/spack.git
it ``spack_install`` in this tutorial. Inside this directory, use Git to into a desired directory, for our purposes today, called ``spack_install``.
clone the Spack repo, hosted at https://github.com/spack/spack.git.
The files and scripts used for Windows installation are on the The files and scripts used for Windows installation are on the
``features/windows-support`` branch; ``cd`` into the repo and use ``features/windows-support`` branch; ``cd`` into the repo and use
``git checkout`` to switch to it. Then navigate to ``git checkout`` to switch to it.
``lib\spack\spack\cmd\installer`` and copy the ``scripts`` directory and
``spack_cmd.bat`` up to the top-level ``spack_install`` directory. In a
Windows console, you can do both of these things by executing the following
commands from the ``spack_install`` level:
.. code-block:: console
xcopy lib\spack\spack\cmd\installer\scripts\ scripts\
xcopy lib\spack\spack\cmd\installer\spack_cmd.bat .
Your file structure should look like this after following the above
steps:
.. code-block:: console
spack_install
|--------spack
|--------scripts
|--------spack_cmd.bat
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Step 3: Run and configure Spack Step 3: Run and configure Spack
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
To use Spack, run ``spack_cmd.bat`` (you may need to Run as Administrator). To use Spack, run ``bin\spack_cmd.bat`` (you may need to Run as Administrator)
This will provide a Windows command prompt with an environment properly set from the spack source tree root. This will provide a Windows command prompt
up with Spack and its prerequisites. If you receive a warning message that with an environment properly set up with Spack and its prerequisites.
Python is not in your ``PATH`` (which may happen if you installed Python If you receive a warning message that Python is not in your ``PATH``
from the website and not the Windows Store), add the location of the Python (which may happen if you installed Python from the website and not
executable to your ``PATH`` now. the Windows Store), add the location of the Python executable to your
``PATH`` now.
To configure Spack, first run the following command inside the Spack console: To configure Spack, first run the following command inside the Spack console:

View file

@ -85,8 +85,6 @@ install(DIRECTORY "${SPACK_SOURCE}/"
DESTINATION "${SPACK_DIR}") DESTINATION "${SPACK_DIR}")
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python-${PYTHON_VERSION}-win64/" install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/Python-${PYTHON_VERSION}-win64/"
DESTINATION "${PYTHON_DIR}") DESTINATION "${PYTHON_DIR}")
install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/scripts/" DESTINATION "scripts")
#install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/spack_cmd.bat/" DESTINATION ".")
# CPACK Installer Instructions # CPACK Installer Instructions
set(CPACK_PACKAGE_NAME "Spack") set(CPACK_PACKAGE_NAME "Spack")
@ -100,6 +98,7 @@ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf") set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_BINARY_DIR}/LICENSE.rtf")
#set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE") #set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_CURRENT_SOURCE_DIR}/NOTICE")
# WIX options (the default) # WIX options (the default)
set(CPACK_GENERATOR "WIX") set(CPACK_GENERATOR "WIX")
set(CPACK_WIX_PRODUCT_ICON "${SPACK_LOGO}") set(CPACK_WIX_PRODUCT_ICON "${SPACK_LOGO}")
set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/banner493x58.bmp") set(CPACK_WIX_UI_BANNER "${CMAKE_CURRENT_SOURCE_DIR}/banner493x58.bmp")
@ -107,8 +106,9 @@ set(CPACK_WIX_PATCH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/patch.xml")
set(CPACK_WIX_UPGRADE_GUID "D2C703E4-721D-44EC-8016-BCB96BB64E0B") set(CPACK_WIX_UPGRADE_GUID "D2C703E4-721D-44EC-8016-BCB96BB64E0B")
set(CPACK_WIX_SKIP_PROGRAM_FOLDER TRUE) set(CPACK_WIX_SKIP_PROGRAM_FOLDER TRUE)
set(SHORTCUT_GUID "099213BC-0D37-4F29-B758-60CA2A7E6DDA")
# Set full path to icon, shortcut in spack.wxs # Set full path to icon, shortcut in spack.wxs
set(SPACK_SHORTCUT "${CMAKE_CURRENT_SOURCE_DIR}/spack_cmd.bat") set(SPACK_SHORTCUT "spack_cmd.bat")
configure_file("spack.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs") configure_file("spack.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs")
configure_file("bundle.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/bundle.wxs") configure_file("bundle.wxs.in" "${CMAKE_CURRENT_BINARY_DIR}/bundle.wxs")
set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs") set(CPACK_WIX_EXTRA_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/spack.wxs")

View file

@ -1,48 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="TARGETDIR">
<Directory Id="DesktopFolder" Name="Desktop" />
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ApplicationProgramsFolder" Name="Spack">
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall"/>
<RegistryValue Root="HKMU" Key="Software\LLNL\Spack"
Type="integer" Value="1" Name="installed" KeyPath="yes" />
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment> <Fragment>
<Icon Id="icon.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@"/> <Icon Id="icon.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@"/>
<Property Id="ARPPRODUCTICON" Value="icon.ico" /> <Property Id="ARPPRODUCTICON" Value="icon.ico" />
</Fragment> </Fragment>
<Fragment> <Fragment>
<!-- Add the shortcut to installer package --> <DirectoryRef Id="TARGETDIR">
<ComponentGroup Id="ProductComponents" Directory="INSTALL_ROOT"> <Directory Id="DesktopFolder" Name="Desktop" >
<Component Id="ApplicationShortcut" Guid="@CPACK_WIX_UPGRADE_GUID@"> <Component Id="SpackDesktopShortCut" Guid="@CPACK_WIX_UPGRADE_GUID@">
<File Source="@SPACK_SHORTCUT@" KeyPath="yes"> <Shortcut Id="SpackDesktopShortCut"
<Shortcut Id="SpackStartMenuShortcut" Name="Spack Package Manager"
Directory="DesktopFolder" Description="Spack package manager"
Advertise="yes" Target="[INSTALL_ROOT]/@SPACK_DIR@/bin/@SPACK_SHORTCUT@"
Name="Spack Package Manager" Icon="icon1.ico">
Description="Spack package manager"
WorkingDirectory="INSTALL_ROOT"
Icon="icon1.ico">
<Icon Id="icon1.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@" /> <Icon Id="icon1.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@" />
</Shortcut> </Shortcut>
<Shortcut Id="startMenuShotcut" <RegistryValue Root="HKCU" Key="Software\LLNL\Spack"
Directory="ApplicationProgramsFolder" Type="integer" Value="1" Name="SpackDesktopShortCut" KeyPath="yes" />
Name="Spack Package Manager" </Component>
WorkingDirectory="INSTALL_ROOT" </Directory>
Icon="icon2.ico" <Directory Id="ProgramMenuFolder" Name="Programs">
IconIndex="0" <Directory Id="ApplicationProgramsFolder" Name="Spack">
Advertise="yes"> <Component Id="SpackStartShortCut" Guid="@SHORTCUT_GUID@">
<Icon Id="icon2.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@" /> <Shortcut Id="SpackStartMenuShortCut"
</Shortcut> Name="Spack Package Manager"
</File> Description="Spack package manager"
</Component> Target="[INSTALL_ROOT]/@SPACK_DIR@/bin/@SPACK_SHORTCUT@"
Icon="icon2.ico">
<Icon Id="icon2.ico" SourceFile="@CPACK_WIX_PRODUCT_ICON@" />
</Shortcut>
<RegistryValue Root="HKCU" Key="Software/LLNL/Spack"
Type="integer" Value="1" Name="SpackStartMenuShortCut" KeyPath="yes" />
</Component>
<Component Id="ProgramMenuDir" Guid="*">
<RemoveFolder Id="ProgramMenuDir" On="uninstall"/>
<RegistryValue Root="HKMU" Key="Software\LLNL\Spack"
Type="integer" Value="1" Name="installed" KeyPath="yes" />
</Component>
</Directory>
</Directory>
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents">
<ComponentRef Id="SpackStartShortCut"/>
<ComponentRef Id="SpackDesktopShortCut"/>
</ComponentGroup> </ComponentGroup>
</Fragment> </Fragment>
</Wix> </Wix>