Skip to content

CI: Add libxml2 build #25

CI: Add libxml2 build

CI: Add libxml2 build #25

Workflow file for this run

name: Test Matrix - Windows
on:
push:
paths-ignore:
- 'docs/**'
- appveyor.yml
- readme.*
- README.*
- '*.md'
- '*.svg'
- '*.png'
- .github/workflows/testmatrix.yml
- .github/workflows/testreporting.yml
branches: [ "master" ]
pull_request:
paths-ignore:
- 'docs/**'
- appveyor.yml
- readme.*
- README.*
- '*.md'
- '*.svg'
- '*.png'
- .github/workflows/testmatrix.yml
- .github/workflows/testreporting.yml
branches: [ "master", "v2" ]
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: Release
jobs:
windows_build:
runs-on: ${{matrix.os}}
defaults:
run:
shell: bash
strategy:
fail-fast: true
matrix:
include:
- python-version: ["3.11"]
os: [windows-latest]
c_compiler: [cl]
platform:
VS_VERSION: Visual Studio 17
VS_VER: 2022
SDK: release-1911
MSVC_VER: 1920
ZLIB_URL: "https://github.com/madler/zlib/releases/download/v1.3/zlib13.zip"
LIBXML2_URL: "https://gitlab.gnome.org/GNOME/libxml2/-/archive/v2.12.0/libxml2-v2.12.0.zip"
HDF5_URL: "https://github.com/HDFGroup/hdf5/releases/download/hdf5-1_12_3/hdf5-1_12_3.zip"
CATCH2_URL: "https://github.com/catchorg/Catch2/archive/refs/tags/v3.4.0.zip"
env:
ARCHITECTURE: "amd64"
VS_VERSION: ${{ matrix.VS_VERSION }}
VS_VER: ${{ matrix.VS_VER }}
SDK: ${{ matrix.SDK }}
MSVC_VER: ${{ matrix.MSVC_VER }}
platform: ${{ matrix.platform }}
ZLIB_URL: ${{ matrix.ZLIB_URL }}
LIBXML2_URL: ${{ matrix.LIBXML2_URL }}
HDF5_URL: ${{ matrix.HDF5_URL }}
CATCH2_URL: ${{ matrix.CATCH2_URL }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set compiler environment
shell: cmd
run: |
if "%VS_VER%" == "2022" CALL "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\Common7\Tools\VsDevCmd.bat" -arch=%ARCHITECTURE%
echo PATH=%PATH%>> %GITHUB_ENV%
echo INCLUDE=%INCLUDE%>> %GITHUB_ENV%
echo LIB=%LIB%>> %GITHUB_ENV%
echo LIBPATH=%LIBPATH%>> %GITHUB_ENV%
- name: Build
shell: pwsh
run: |
$ErrorActionPreference = 'continue'
function exec
{
param ( [ScriptBlock] $ScriptBlock )
& $ScriptBlock 2>&1 | ForEach-Object -Process { "$_" }
if ($LastExitCode -ne 0) { exit $LastExitCode }
}
Install-Module Pscx -AllowClobber
Install-Module VSSetup -Scope CurrentUser
# Download dependencies
if(-Not (Test-Path -Path downloads)) { mkdir downloads }
cd downloads
$env:ZLIB_ZIP="zlib.zip"
if(-Not (Test-Path -Path $env:ZLIB_ZIP -PathType Leaf)) { Invoke-WebRequest "$env:ZLIB_URL" -OutFile "$env:ZLIB_ZIP" }
$env:LIBXML2_ZIP="libxml2.zip"
if(-Not (Test-Path -Path $env:LIBXML2_ZIP -PathType Leaf)) { Invoke-WebRequest "$env:LIBXML2_URL" -OutFile "$env:LIBXML2_ZIP" }
# TODO: HDF5_URL, CATCH2_URL
# Unzip and build dependencies
cd ..
mkdir lib
mkdir src
cd src
# zlib
exec { 7z x ..\downloads\$env:ZLIB_ZIP }
cd zlib-1.3
if(-Not (Test-Path -Path build)) { mkdir build }
dir
pwd
cmake -B build -G $env:VS_VERSION -S . -DCMAKE_INSTALL_PREFIX=..\..\src -DCMAKE_BUILD_TYPE=Release
cmake --build build --target install
cd ..
dir -r .
# libxml2
exec { 7z x ..\downloads\$env:LIBXML2_ZIP }
cd libxml2-v2.12.0
if(-Not (Test-Path -Path build)) { mkdir build }
dir
pwd
cmake -B build -G $env:VS_VERSION -S . -DCMAKE_INSTALL_PREFIX=..\..\src -DCMAKE_BUILD_TYPE=Release -DLIBXML2_WITH_ZLIB=ON -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF
cmake --build build --target install
cd ..
dir -r .