Add building for Python 3.11 & 3.12 x64 in CI #41
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Windows-CI | |
on: [push, pull_request] | |
jobs: | |
build: | |
runs-on: ${{ matrix.platform.image }} | |
strategy: | |
matrix: | |
platform: | |
- { image: windows-2022, generator: Visual Studio 17 2022, toolset: v143, cmake-arch: x64, arch: x64, python: "3.12", unity: ON, str: windows-x64-v143 } | |
- { image: windows-2022, generator: Visual Studio 17 2022, toolset: v143, cmake-arch: x64, arch: x64, python: "3.11", unity: ON, str: windows-x64-v143 } | |
- { image: windows-2022, generator: Visual Studio 17 2022, toolset: v143, cmake-arch: x64, arch: x64, python: "3.10", unity: ON, str: windows-x64-v143 } | |
- { image: windows-2019, generator: Visual Studio 16 2019, toolset: v142, cmake-arch: Win32, arch: x86, python: 3.9, unity: ON, str: windows-x86-v142 } | |
- { image: windows-2019, generator: Visual Studio 16 2019, toolset: v142, cmake-arch: x64, arch: x64, python: 3.8, unity: OFF, str: windows-x64-v142 } | |
# The windows-2016 image with VS 2017 is going the way of the dodo, so just use VS2019 with the 2017 compiler. | |
- { image: windows-2019, generator: Visual Studio 16 2019, toolset: v141, cmake-arch: Win32, arch: x86, python: 3.7, unity: OFF, str: windows-x86-v141 } | |
- { image: windows-2019, generator: Visual Studio 16 2019, toolset: v141, cmake-arch: x64, arch: x64, python: 3.6, unity: ON, str: windows-x64-v141 } | |
env: | |
VCPKG_BINARY_SOURCES: 'clear' | |
VCPKG_DEFAULT_HOST_TRIPLET: windows-hsplasma | |
VCPKG_OVERLAY_TRIPLETS: '${{ github.workspace }}/overlay-triplets' | |
steps: | |
- name: Checkout HSPlasma | |
uses: actions/checkout@v4 | |
- name: Checkout vcpkg | |
uses: actions/checkout@v4 | |
with: | |
repository: microsoft/vcpkg | |
path: vcpkg | |
# Write out a custom vcpkg triplet for the toolset hackery we will do. | |
- name: Generate Triplet | |
run: | | |
mkdir -p overlay-triplets | Out-Null | |
Set-Content -Path "overlay-triplets/windows-hsplasma.cmake" @" | |
set(VCPKG_TARGET_ARCHITECTURE ${{ matrix.platform.arch }}) | |
set(VCPKG_CRT_LINKAGE dynamic) | |
set(VCPKG_LIBRARY_LINKAGE static) | |
set(VCPKG_PLATFORM_TOOLSET ${{ matrix.platform.toolset }}) | |
"@ | |
# Use actions/cache for our library cache because we use multiple compilers per triplet. | |
# This would cause package hash collisions in the NuGet store, triggering upload race failures. | |
- name: Determine vcpkg rev | |
id: vcpkg-rev | |
run: | | |
Set-Location vcpkg | |
"ref=$(git rev-parse HEAD)" >> $env:GITHUB_OUTPUT | |
- name: Restore Dependency Libraries | |
uses: actions/cache@v4 | |
with: | |
path: build/vcpkg_installed | |
key: vcpkg-${{ matrix.platform.str }} ${{ steps.vcpkg-rev.outputs.ref }} ${{ hashFiles('vcpkg.json') }} | |
restore-keys: | | |
vcpkg-${{ matrix.platform.str }} ${{ steps.vcpkg-rev.outputs.ref }} | |
vcpkg-${{ matrix.platform.str }} | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.platform.python }} | |
architecture: ${{ matrix.platform.arch }} | |
- name: Configure | |
run: | | |
cmake ` | |
-G "${{ matrix.platform.generator }}" -A "${{ matrix.platform.cmake-arch }}" -T "${{ matrix.platform.toolset }}" ` | |
-DCMAKE_TOOLCHAIN_FILE="${{ github.workspace }}"/vcpkg/scripts/buildsystems/vcpkg.cmake ` | |
-DCMAKE_INSTALL_PREFIX="${{ github.workspace }}/build/install" ` | |
-DCMAKE_UNITY_BUILD=${{ matrix.platform.unity }} ` | |
-DVCPKG_TARGET_TRIPLET=windows-hsplasma ` | |
-DPython3_EXECUTABLE="${{ env.pythonLocation }}/python.exe" ` | |
-DPython3_LIBRARY="${{ env.pythonLocation }}/libs/python$("${{ matrix.platform.python }}".replace('.', '')).lib" ` | |
-DPython3_INCLUDE_DIR="${{ env.pythonLocation }}/include" ` | |
-S . -B build | |
- name: Build | |
run: | | |
cmake --build build --config Release -j 2 | |
- name: Install | |
run: | | |
cmake --build build --target INSTALL --config Release -j 2 | |
- name: Test | |
run: | | |
Set-Location build/install/bin | |
python -c "import PyHSPlasma; print(dir(PyHSPlasma))" | |
- name: Upload Artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: libhsplasma-${{ matrix.platform.str }}-py${{ matrix.platform.python }} | |
path: build/install |