blob: 9c163a425b3249b24994c705fe8031f8e9ecaf51 [file] [log] [blame]
name: windows
on:
push:
branches:
- 'master'
# Release branches
- '1.*'
paths:
- 'mesonbuild/**'
- 'test cases/**'
- 'unittests/**'
- '.github/workflows/*.yml'
- 'ci/run.ps1'
- 'run_project_tests.py'
- 'run_tests.py'
- 'run_unittests.py'
pull_request:
paths:
- 'mesonbuild/**'
- 'test cases/**'
- 'unittests/**'
- '.github/workflows/*.yml'
- 'ci/run.ps1'
- 'run_project_tests.py'
- 'run_tests.py'
- 'run_unittests.py'
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
vs2022:
runs-on: windows-2022
timeout-minutes: 120
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: vc2022x64vs
arch: x64
compiler: msvc2022
backend: vs2022
# mysteriously, several tests fail because vs cannot find
# executables such as cmd.exe ???
ifort: false
- name: vc2022arm64ninjacross
arch: amd64_arm64
compiler: msvc2022
backend: ninja
extraargs: --cross arm64cl.txt --cross-only
# ifort doesn't support arm64
ifort: false
steps:
- uses: actions/checkout@v6
- name: Setup Python
uses: actions/setup-python@v6
with:
python-version: '3.7'
- name: Setup MSVC
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: Install PyPy
if: matrix.arch == 'x64'
shell: pwsh
run: |
$pypyUrl = "https://downloads.python.org/pypy/pypy3.8-v7.3.9-win64.zip"
$pypyZip = "${{ runner.temp }}\pypy38.zip"
$pypyDir = "${{ runner.temp }}\pypy38"
Invoke-WebRequest -Uri $pypyUrl -OutFile $pypyZip
Expand-Archive $pypyZip -DestinationPath $pypyDir
$pypyPath = "$pypyDir\pypy3.8-v7.3.9-win64"
"PYPY_PATH=$pypyPath" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
& "$pypyPath\pypy3.exe" -m ensurepip
- name: Install Python 2.7
if: matrix.arch == 'x64'
shell: pwsh
run: |
$python27Url = "https://www.python.org/ftp/python/2.7.18/python-2.7.18.amd64.msi"
$python27Msi = "${{ runner.temp }}\python27.msi"
Invoke-WebRequest -Uri $python27Url -OutFile $python27Msi
Start-Process msiexec.exe -Wait -ArgumentList "/I $python27Msi /quiet"
- name: Install pkg-config
shell: pwsh
run: |
$pkgconfigDir = "${{ runner.temp }}\pkgconfig"
New-Item -ItemType Directory -Path $pkgconfigDir -Force
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/mesonbuild/cidata/refs/heads/master/win32/pkg-config.exe" -OutFile "$pkgconfigDir\pkg-config.exe"
echo "$pkgconfigDir" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Install NASM
shell: pwsh
run: choco install -y nasm
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable-x86_64-pc-windows-msvc
components: clippy
- name: Add Rust library path (Windows)
run: |
$rustlib = (rustc --print sysroot) + "\bin"
echo $rustlib | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
shell: pwsh
- name: Install dependencies
shell: pwsh
run: |
python -m pip --disable-pip-version-check install --upgrade pefile pytest-xdist pytest-subtests fastjsonschema cython
- name: Run tests
env:
MESON_CI_JOBNAME: windows-${{ matrix.name }}
shell: pwsh
run: |
# Remove Chocolatey, MinGW, Strawberry Perl from path
$env:Path = ($env:Path.Split(';') | Where-Object { $_ -notmatch 'mingw|Strawberry|Chocolatey|PostgreSQL' }) -join ';'
if ( '${{ matrix.arch }}' -eq 'x64' ) {
$env:Path = $env:Path + ";$env:PYPY_PATH"
}
echo "=== PATH BEGIN ==="
echo ($env:Path).Replace(';',"`n")
echo "=== PATH END ==="
$progs = @("python","ninja","pkg-config","cl","rc","link","pypy3","ifort")
foreach ($prog in $progs) {
echo ""
echo "Locating ${prog}:"
where.exe $prog
}
echo ""
echo "Ninja / MSBuild version:"
if ($env:backend -eq 'ninja') {
ninja --version
} else {
MSBuild /version
}
echo ""
echo "Python version:"
python --version
echo "=== Running tests ==="
python 2>&1 run_tests.py --backend "${{ matrix.backend }}" ${{ matrix.extraargs }}