222cef9b7c
Changes to improve locating shared libraries on Windows, which in turn enables the use of Clingo. This PR attempts to establish a proper distinction between linking on Windows vs. Linux/Mac: on Windows, linking is always done with .lib files (never .dll files). This somewhat complicates the model since the Spec.lib method could return libraries that were used for both linking and loading, but since these are not always the same on Windows, it was decided to treat Spec.libs as being for link-time libraries. Additional functions are added to help dependents locate run-time libraries. * Clingo is now the default concretizer on Windows * Clingo is now the concretizer used for unit tests on Windows * Fix a permissions issue that can occur while moving Git files during fetching/staging * Packages can now implement "win_add_library_dependent" to register files/directories that include libraries that would need to link to dependency dlls * Packages can now implement "win_add_rpath" to register the locations of dlls that dependents would want to load * "Spec.libs" on Windows is updated to return link-time libraries (i.e. .lib files, rather than .dll files) * PackageBase.rpath on Windows is now updated to return the most-likely locations where .dlls will be found (which is generally in the bin/ directory)
158 lines
5.5 KiB
YAML
158 lines
5.5 KiB
YAML
name: windows
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
concurrency:
|
|
group: windows-${{github.ref}}-${{github.event.pull_request.number || github.run_number}}
|
|
cancel-in-progress: true
|
|
|
|
defaults:
|
|
run:
|
|
shell:
|
|
powershell Invoke-Expression -Command ".\share\spack\qa\windows_test_setup.ps1"; {0}
|
|
jobs:
|
|
unit-tests:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov pytest-cov clingo
|
|
- 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
|
|
cd spack
|
|
dir
|
|
spack unit-test -x --verbose --cov --cov-config=pyproject.toml --ignore=lib/spack/spack/test/cmd
|
|
coverage combine -a
|
|
coverage xml
|
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
|
with:
|
|
flags: unittests,windows
|
|
unit-tests-cmd:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools codecov coverage pytest-cov clingo
|
|
- 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
|
|
cd spack
|
|
spack unit-test -x --verbose --cov --cov-config=pyproject.toml lib/spack/spack/test/cmd
|
|
coverage combine -a
|
|
coverage xml
|
|
- uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70
|
|
with:
|
|
flags: unittests,windows
|
|
build-abseil:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
|
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 -d install abseil-cpp
|
|
make-installer:
|
|
runs-on: windows-latest
|
|
steps:
|
|
- name: Disable Windows Symlinks
|
|
run: |
|
|
git config --global core.symlinks false
|
|
shell:
|
|
powershell
|
|
- uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
|
|
with:
|
|
fetch-depth: 0
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools
|
|
- 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@3cea5372237819ed00197afe530f5a7ea3e805c8
|
|
with:
|
|
name: Windows Spack Installer Bundle
|
|
path: ${{ env.installer_root }}\pkg\Spack.exe
|
|
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8
|
|
with:
|
|
name: Windows Spack Installer
|
|
path: ${{ env.installer_root}}\pkg\Spack.msi
|
|
execute-installer:
|
|
needs: make-installer
|
|
runs-on: windows-latest
|
|
defaults:
|
|
run:
|
|
shell: pwsh
|
|
steps:
|
|
- uses: actions/setup-python@13ae5bb136fac2878aff31522b9efb785519f984
|
|
with:
|
|
python-version: 3.9
|
|
- name: Install Python packages
|
|
run: |
|
|
python -m pip install --upgrade pip six pywin32 setuptools
|
|
- 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@v3
|
|
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@v3
|
|
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
|