Merge branch 'stable' #794
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: CI | |
on: | |
push: | |
branches-ignore: | |
- 'dependabot/**' | |
pull_request: | |
workflow_dispatch: | |
inputs: | |
tmate: | |
type: boolean | |
description: 'Start tmate session on failure' | |
required: false | |
default: false | |
jobs: | |
tests: | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
- runs-on: ubuntu-latest | |
python: '3.8' | |
arch: x64 | |
- runs-on: ubuntu-latest | |
python: '3.9' | |
arch: x64 | |
- runs-on: ubuntu-latest | |
python: '3.10' | |
arch: x64 | |
- runs-on: ubuntu-latest | |
python: '3.11' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-latest | |
python: '3.12' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-latest | |
python: 'pypy-3.8' | |
arch: x64 | |
- runs-on: ubuntu-latest | |
python: 'pypy-3.9' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-latest | |
python: 'pypy-3.10' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: ubuntu-24.04 | |
python: '3.11' | |
arch: x64 | |
gcc: 13 | |
name-extra: ' (GCC 13)' | |
- runs-on: ubuntu-24.04 | |
python: '3.11' | |
arch: x64 | |
clang: 18 | |
name-extra: ' (Clang 18)' | |
- runs-on: ubuntu-latest | |
python: '3.11' | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
- runs-on: macos-13 | |
python: '3.8' | |
arch: x64 | |
- runs-on: macos-latest | |
python: '3.11' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: macos-latest | |
python: '3.12' | |
arch: x64 | |
- runs-on: macos-latest | |
python: '3.11' | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
- runs-on: macos-13 | |
python: 'pypy-3.10' | |
arch: x64 | |
- runs-on: windows-latest | |
python: '3.8' | |
arch: x64 | |
- runs-on: windows-latest | |
python: '3.11' | |
arch: x64 | |
run-praat-tests: true | |
name-extra: ' (with Praat tests)' | |
- runs-on: windows-latest | |
python: '3.12' | |
arch: x64 | |
- runs-on: windows-latest | |
python: '3.8' | |
arch: x86 | |
name-extra: ' (32-bit)' | |
- runs-on: windows-latest | |
python: '3.11' | |
arch: x86 | |
name-extra: ' (32-bit)' | |
- runs-on: windows-latest | |
python: '3.11' | |
arch: x64 | |
release: true | |
name-extra: ' (Release)' | |
- runs-on: windows-latest | |
python: 'pypy-3.10' | |
arch: x64 | |
name: Python ${{ matrix.python }}${{ matrix.name-extra }} • ${{ matrix.runs-on }} | |
runs-on: ${{ matrix.runs-on }} | |
if: startsWith(github.ref_name, 'docs') != true | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Python ${{ matrix.python }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python }} | |
architecture: ${{ matrix.arch }} | |
allow-prereleases: true | |
check-latest: true | |
- name: Setup CMake | |
uses: jwlawson/[email protected] | |
- name: Setup ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-${{ matrix.runs-on }}-${{ matrix.arch }}-${{ matrix.release }}-${{ matrix.gcc }}-${{ matrix.clang }} | |
- name: Enable MSVC for meson when building NumPy | |
if : startsWith(matrix.python, 'pypy-3.10') && matrix.runs-on == 'windows-latest' | |
uses: ilammy/msvc-dev-cmd@v1 | |
- name: Install NumPy without OpenBLAS for PyPy 3.10 | |
if: startsWith(matrix.python, 'pypy-3.10') | |
run: | | |
pip install numpy --config-settings=setup-args="-Dallow-noblas=true" | |
- name: Install requirements | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade setuptools wheel | |
pip install --upgrade -r tests/requirements.txt | |
- name: Select GCC | |
if: matrix.gcc | |
shell: bash | |
run: | | |
echo "CC=gcc-${{ matrix.gcc }}" >> $GITHUB_ENV | |
echo "CXX=g++-${{ matrix.gcc }}" >> $GITHUB_ENV | |
- name: Select Clang | |
if: matrix.clang | |
shell: bash | |
run: | | |
echo "CC=clang-${{ matrix.clang }}" >> $GITHUB_ENV | |
echo "CXX=clang++-${{ matrix.clang }}" >> $GITHUB_ENV | |
- name: Setup pytest annotations | |
run: | | |
pip install pytest-github-actions-annotate-failures | |
- name: Setup GCC annotations | |
uses: ammaraskar/gcc-problem-matcher@master | |
- name: Setup MSVC annotations | |
uses: ammaraskar/msvc-problem-matcher@master | |
- name: Configure | |
shell: bash | |
run: | | |
CMAKE_ARCH="${{ (runner.os == 'Windows' && matrix.arch == 'x86') && '-A Win32' || '' }}" | |
CMAKE_BUILD_TYPE="${{ matrix.release && 'Release' || 'Debug' }}" | |
CCACHE_BASEDIR="$GITHUB_WORKSPACE" | |
cmake -S . -B build $CMAKE_ARCH -DCMAKE_BUILD_TYPE=$CMAKE_BUILD_TYPE -DPython_EXECUTABLE="$(which python)" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Compile | |
run: | | |
cmake --build build -j 2 | |
- name: Select Praat tests to run | |
if: matrix.run-praat-tests | |
shell: bash | |
run: | | |
echo "PYTEST_ADDOPTS=--run-praat-tests -v" >> $GITHUB_ENV | |
- name: Run tests | |
run: | | |
cmake --build build --target tests | |
- name: Setup tmate session | |
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate && failure() }} | |
uses: mxschmitt/action-tmate@v3 | |
docs: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Setup Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.11' | |
- name: Setup CMake | |
uses: jwlawson/[email protected] | |
- name: Setup ccache | |
uses: hendrikmuhs/[email protected] | |
with: | |
key: ${{ github.job }}-ubuntu-latest-x64 | |
- name: Install requirements | |
run: | | |
pip install -r docs/requirements.txt | |
sudo apt install pandoc | |
- name: Configure | |
shell: bash | |
run: | | |
cmake -S . -B build -DPython_EXECUTABLE="$(which python)" -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache | |
- name: Build | |
run: | | |
cmake --build build -j 2 | |
- name: Build documentation | |
run: | | |
cmake --build build --target docs | |
- name: Check links | |
run: | | |
cmake --build build --target docs_linkcheck | |
- name: Setup tmate session | |
if: ${{ github.event_name == 'workflow_dispatch' && inputs.tmate && failure() }} | |
uses: mxschmitt/action-tmate@v3 |