Add Github Actions for Windows (#24504)
Setup Installer CI (#25184), (#25191) Co-authored-by: Zack Galbreath <zack.galbreath@kitware.com> Co-authored-by: lou.lawrence@kitware.com <lou.lawrence@kitware.com> Co-authored-by: Betsy McPhail <betsy.mcphail@kitware.com>
This commit is contained in:
parent
e65d3d14b4
commit
90c773488c
11 changed files with 262 additions and 8 deletions
7
.github/workflows/execute_installer.ps1
vendored
Normal file
7
.github/workflows/execute_installer.ps1
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
$ proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
|
||||||
|
$handle = $proc.Handle # cache proc.Handle
|
||||||
|
$proc.WaitForExit();
|
||||||
|
|
||||||
|
if ($proc.ExitCode -ne 0) {
|
||||||
|
Write-Warning "$_ exited with status code $($proc.ExitCode)"
|
||||||
|
}
|
16
.github/workflows/setup_git.ps1
vendored
Normal file
16
.github/workflows/setup_git.ps1
vendored
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
# (c) 2021 Lawrence Livermore National Laboratory
|
||||||
|
|
||||||
|
Set-Location spack
|
||||||
|
|
||||||
|
git config --global user.email "spack@example.com"
|
||||||
|
git config --global user.name "Test User"
|
||||||
|
|
||||||
|
if ($(git branch --show-current) -ne "develop")
|
||||||
|
{
|
||||||
|
git branch develop origin/develop
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(git branch --show-current) -ne "features/windows-support")
|
||||||
|
{
|
||||||
|
git branch features/windows-support origin/features/windows-support
|
||||||
|
}
|
4
.github/workflows/system_shortcut_check.ps1
vendored
Normal file
4
.github/workflows/system_shortcut_check.ps1
vendored
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
param ($systemFolder, $shortcut)
|
||||||
|
|
||||||
|
$start = [System.Environment]::GetFolderPath("$systemFolder")
|
||||||
|
Invoke-Item "$start\Programs\Spack\$shortcut"
|
185
.github/workflows/windows_python.yml
vendored
Normal file
185
.github/workflows/windows_python.yml
vendored
Normal file
|
@ -0,0 +1,185 @@
|
||||||
|
name: windows tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- features/windows-support
|
||||||
|
- windows-ci*
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- features/windows-support
|
||||||
|
- windows-ci*
|
||||||
|
- develop
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell:
|
||||||
|
powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0}
|
||||||
|
jobs:
|
||||||
|
validate:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python Packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
python -m pip install --upgrade vermin
|
||||||
|
- name: vermin (Spack's Core)
|
||||||
|
run: vermin --backport argparse --backport typing -t='2.6-' -t='3.5-' -v spack/lib/spack/spack/ spack/lib/spack/llnl/ spack/bin/
|
||||||
|
- name: vermin (Repositories)
|
||||||
|
run: vermin --backport argparse --backport typing -t='2.6-' -t='3.5-' -v spack/var/spack/repos
|
||||||
|
# Run style checks on the files that have been changed
|
||||||
|
style:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six setuptools flake8 isort>=4.3.5 mypy>=0.800 black pywin32 types-python-dateutil
|
||||||
|
- name: Create local develop
|
||||||
|
run: |
|
||||||
|
.\spack\.github\workflows\setup_git.ps1
|
||||||
|
- name: Run style tests
|
||||||
|
run: |
|
||||||
|
spack style
|
||||||
|
- name: Verify license headers
|
||||||
|
run: |
|
||||||
|
python spack\bin\spack license verify
|
||||||
|
unittest:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
||||||
|
- name: Create local develop
|
||||||
|
run: |
|
||||||
|
.\spack\.github\workflows\setup_git.ps1
|
||||||
|
- name: Unit Test
|
||||||
|
run: |
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
spack unit-test -x --verbose --ignore=lib/spack/spack/test/cmd
|
||||||
|
unittest-cmd:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
||||||
|
- name: Create local develop
|
||||||
|
run: |
|
||||||
|
.\spack\.github\workflows\setup_git.ps1
|
||||||
|
- name: Command Unit Test
|
||||||
|
run: |
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
spack unit-test lib/spack/spack/test/cmd -x --verbose
|
||||||
|
buildtest:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
||||||
|
- name: Build Test
|
||||||
|
run: |
|
||||||
|
spack compiler find
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
spack external find cmake
|
||||||
|
spack external find ninja
|
||||||
|
spack install abseil-cpp
|
||||||
|
generate-installer-test:
|
||||||
|
runs-on: windows-latest
|
||||||
|
steps:
|
||||||
|
- name: Disable Windows Symlinks
|
||||||
|
run: |
|
||||||
|
git config --global core.symlinks false
|
||||||
|
shell:
|
||||||
|
powershell
|
||||||
|
- uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
||||||
|
- name: Add Light and Candle to Path
|
||||||
|
run: |
|
||||||
|
$env:WIX >> $GITHUB_PATH
|
||||||
|
- name: Run Installer
|
||||||
|
run: |
|
||||||
|
.\spack\share\spack\qa\setup_spack.ps1
|
||||||
|
spack make-installer -s spack -g SILENT pkg
|
||||||
|
echo "installer_root=$((pwd).Path)" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
env:
|
||||||
|
ProgressPreference: SilentlyContinue
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Windows Spack Installer Bundle
|
||||||
|
path: ${{ env.installer_root }}\pkg\Spack.exe
|
||||||
|
- uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Windows Spack Installer
|
||||||
|
path: ${{ env.installer_root}}\pkg\Spack.msi
|
||||||
|
execute-installer:
|
||||||
|
needs: generate-installer-test
|
||||||
|
runs-on: windows-latest
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: pwsh
|
||||||
|
steps:
|
||||||
|
- uses: actions/setup-python@v2
|
||||||
|
with:
|
||||||
|
python-version: 3.9
|
||||||
|
- name: Install Python packages
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage
|
||||||
|
- name: Setup installer directory
|
||||||
|
run: |
|
||||||
|
mkdir -p spack_installer
|
||||||
|
echo "spack_installer=$((pwd).Path)\spack_installer" | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Windows Spack Installer Bundle
|
||||||
|
path: ${{ env.spack_installer }}
|
||||||
|
- name: Execute Bundled Installer
|
||||||
|
run: |
|
||||||
|
$proc = Start-Process ${{ env.spack_installer }}\spack.exe "/install /quiet" -Passthru
|
||||||
|
$handle = $proc.Handle # cache proc.Handle
|
||||||
|
$proc.WaitForExit();
|
||||||
|
$LASTEXITCODE
|
||||||
|
env:
|
||||||
|
ProgressPreference: SilentlyContinue
|
||||||
|
- uses: actions/download-artifact@v2
|
||||||
|
with:
|
||||||
|
name: Windows Spack Installer
|
||||||
|
path: ${{ env.spack_installer }}
|
||||||
|
- name: Execute MSI
|
||||||
|
run: |
|
||||||
|
$proc = Start-Process ${{ env.spack_installer }}\spack.msi "/quiet" -Passthru
|
||||||
|
$handle = $proc.Handle # cache proc.Handle
|
||||||
|
$proc.WaitForExit();
|
||||||
|
$LASTEXITCODE
|
|
@ -187,7 +187,7 @@ python "%spack%" %_sp_flags% %_sp_subcommand% %_sp_args%
|
||||||
goto :end_switch
|
goto :end_switch
|
||||||
|
|
||||||
:end_switch
|
:end_switch
|
||||||
exit /B 0
|
exit /B %ERRORLEVEL%
|
||||||
|
|
||||||
|
|
||||||
::########################################################################
|
::########################################################################
|
||||||
|
@ -220,4 +220,4 @@ for %%I in (%~2) do (
|
||||||
:pathadd "%~1" "%%I\%%Z"
|
:pathadd "%~1" "%%I\%%Z"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
exit /B 0
|
exit /B %ERRORLEVEL%
|
|
@ -14,8 +14,9 @@ popd
|
||||||
|
|
||||||
|
|
||||||
:: Check if Python is on the PATH
|
:: 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) ) 2> NUL
|
(for /f "delims=" %%F in ('where python.exe') do (set python_pf_ver=%%F) ) 2> NUL
|
||||||
|
)
|
||||||
if not defined python_pf_ver (
|
if not defined python_pf_ver (
|
||||||
:: If not, look for Python from the Spack installer
|
:: If not, look for Python from the Spack installer
|
||||||
:get_builtin
|
:get_builtin
|
||||||
|
@ -58,4 +59,9 @@ DOSKEY spacktivate=spack env activate $*
|
||||||
@echo ** Spack Package Manager
|
@echo ** Spack Package Manager
|
||||||
@echo **********************************************************************
|
@echo **********************************************************************
|
||||||
|
|
||||||
|
IF "%1"=="" GOTO CONTINUE
|
||||||
|
set
|
||||||
|
GOTO:EOF
|
||||||
|
|
||||||
|
:continue
|
||||||
%comspec% /k
|
%comspec% /k
|
||||||
|
|
8
share/spack/qa/configuration/windows_config.yaml
Normal file
8
share/spack/qa/configuration/windows_config.yaml
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
config:
|
||||||
|
locks: false
|
||||||
|
install_tree:
|
||||||
|
root: $spack\opt\spack
|
||||||
|
projections:
|
||||||
|
all: '${ARCHITECTURE}\${COMPILERNAME}-${COMPILERVER}\${PACKAGE}-${VERSION}-${HASH}'
|
||||||
|
build_stage:
|
||||||
|
- ~/.spack/stage
|
3
share/spack/qa/setup_spack.ps1
Normal file
3
share/spack/qa/setup_spack.ps1
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
spack compiler find
|
||||||
|
echo F|xcopy .\spack\share\spack\qa\configuration\windows_config.yaml $env:USERPROFILE\.spack\windows\config.yaml
|
||||||
|
spack external find cmake
|
14
share/spack/qa/vcvarsall.ps1
Normal file
14
share/spack/qa/vcvarsall.ps1
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
$erroractionpreference = "stop"
|
||||||
|
|
||||||
|
$VCVARSALL="C:\\Program Files (x86)\\MicroSoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvars64.bat"
|
||||||
|
$VCVARSPLATFORM="x64"
|
||||||
|
$VCVARSVERSION="14.29.30038"
|
||||||
|
|
||||||
|
|
||||||
|
cmd /c "`"$VCVARSALL`" $VCVARSPLATFORM -vcvars_ver=$VCVARSVERSION & set" |
|
||||||
|
foreach {
|
||||||
|
if ($_ -match "=") {
|
||||||
|
$v = $_.split("=")
|
||||||
|
[Environment]::SetEnvironmentVariable($v[0], $v[1])
|
||||||
|
}
|
||||||
|
}
|
11
share/spack/qa/windows_test_setup.ps1
Normal file
11
share/spack/qa/windows_test_setup.ps1
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
Set-Location ../
|
||||||
|
|
||||||
|
$env:python_pf_ver="C:\hostedtoolcache\windows\Python\3.9.5\x64\python.exe"
|
||||||
|
|
||||||
|
cmd /c "`"spack\bin\spack_cmd.bat`" print " |
|
||||||
|
foreach {
|
||||||
|
if ($_ -match "=") {
|
||||||
|
$v = $_.split("=")
|
||||||
|
[Environment]::SetEnvironmentVariable($v[0], $v[1])
|
||||||
|
}
|
||||||
|
}
|
|
@ -919,14 +919,14 @@ _spack_env() {
|
||||||
_spack_env_activate() {
|
_spack_env_activate() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help --sh --csh --fish -v --with-view -V --without-view -p --prompt --temp -d --dir"
|
SPACK_COMPREPLY="-h --help --sh --csh --fish --bat -v --with-view -V --without-view -p --prompt --temp -d --dir"
|
||||||
else
|
else
|
||||||
_environments
|
_environments
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
_spack_env_deactivate() {
|
_spack_env_deactivate() {
|
||||||
SPACK_COMPREPLY="-h --help --sh --csh --fish"
|
SPACK_COMPREPLY="-h --help --sh --csh --fish --bat"
|
||||||
}
|
}
|
||||||
|
|
||||||
_spack_env_create() {
|
_spack_env_create() {
|
||||||
|
@ -1205,7 +1205,7 @@ _spack_list() {
|
||||||
_spack_load() {
|
_spack_load() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help --sh --csh --fish --first --only --list"
|
SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --first --only --list"
|
||||||
else
|
else
|
||||||
_installed_packages
|
_installed_packages
|
||||||
fi
|
fi
|
||||||
|
@ -1241,7 +1241,7 @@ _spack_maintainers() {
|
||||||
_spack_make_installer() {
|
_spack_make_installer() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help -v --spack_version -s --spack_source"
|
SPACK_COMPREPLY="-h --help -v --spack_version -s --spack_source -g --git-installer-verbosity"
|
||||||
else
|
else
|
||||||
SPACK_COMPREPLY=""
|
SPACK_COMPREPLY=""
|
||||||
fi
|
fi
|
||||||
|
@ -1809,7 +1809,7 @@ _spack_unit_test() {
|
||||||
_spack_unload() {
|
_spack_unload() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help --sh --csh --fish -a --all"
|
SPACK_COMPREPLY="-h --help --sh --csh --fish --bat -a --all"
|
||||||
else
|
else
|
||||||
_installed_packages
|
_installed_packages
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in a new issue