Skip to content

Add detection of function multi-versioning in the compiler #533

Add detection of function multi-versioning in the compiler

Add detection of function multi-versioning in the compiler #533

Workflow file for this run

name: Unit tests
on: [push, pull_request]
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
jobs:
test-cxx:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
cxx: g++
extras: yes
- os: ubuntu-22.04
cxx: clang++
extras: yes
- os: macos-12
cxx: clang++
extras: no
runs-on: ${{ matrix.os }}
env:
# Don't error on deprecations: Xcode marks sprintf deprecated and Boost references it
CXX: ${{ matrix.cxx }} -Werror -Wno-error=deprecated-declarations
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ runner.os }}-cxx-ccache-${{ hashFiles('**') }}
restore-keys: |
${{ runner.os }}-cxx-ccache-
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- name: Set up ccache
run: ./.ci/ccache-path.sh
- uses: actions/setup-python@v4
with:
python-version: '3.8'
- run: pip install jinja2 pycparser packaging
- run: ./bootstrap.sh
- name: Run configure
run: ./.ci/configure.sh ${{ matrix.extras }}
- name: Build
run: make -C build -j4
- name: Run tests
run: ./.ci/cxx-tests.sh
- name: Show ccache stats
run: ccache -s
test-python:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-22.04
cc: gcc
cxx: g++
python-version: '3.8'
# Disabled for now because numba/llvmlite (needed for tests)
# doesn't have a pypy wheel, and it's not worth the effect to
# install all the dependencies needed to make that work.
# - os: ubuntu-22.04
# cc: gcc
# cxx: g++
# python-version: pypy-3.7
- os: ubuntu-22.04
cc: gcc
cxx: g++
python-version: '3.11'
- os: ubuntu-22.04
cc: clang
cxx: clang++
python-version: '3.11'
- os: macos-12
cc: clang
cxx: clang++
python-version: '3.11'
runs-on: ${{ matrix.os }}
env:
# Don't error on deprecations: Xcode marks sprintf deprecated and Boost references it
CC: ${{ matrix.cc }} -Werror -Wno-error=deprecated-declarations
CXX: ${{ matrix.cxx }} -Werror -Wno-error=deprecated-declarations
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ runner.os }}-py-ccache-${{ hashFiles('**') }}
restore-keys: |
${{ runner.os }}-py-ccache-
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ hashFiles('requirements*.txt') }}
restore-keys: |
${{ runner.os }}-pip-${{ matrix.python-version }}-
${{ runner.os }}-pip-
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- name: Set up ccache
run: ./.ci/ccache-path.sh
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
env:
CC: ${{ matrix.cc }} # Do not pass -Werror when building dependencies
- run: ./bootstrap.sh
- run: pip install -v .
- name: Run tests
run: ./.ci/py-tests.sh
# Skip pip-compile because not all configurations have a python3.8 binary
- run: SKIP=pip-compile pre-commit run --all-files
- name: Show ccache stats
run: ccache -s
coverage:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ runner.os }}-coverage-ccache-${{ hashFiles('**') }}
restore-keys: |
${{ runner.os }}-coverage-ccache-
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-${{ hashFiles('requirements*.txt') }}
restore-keys: |
${{ runner.os }}-pip-
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- name: Set up ccache
run: ./.ci/ccache-path.sh
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
- run: ./bootstrap.sh
- name: Prepare Python build for coverage
run: |
echo '[build_ext]' >> setup.cfg
echo 'coverage = yes' >> setup.cfg
- run: pip install -v .
- name: Run Python tests
run: ./.ci/py-tests.sh
- name: Run configure
run: ./.ci/configure.sh yes --disable-optimized --enable-coverage
- name: Build
run: make -C build -j4
- name: Run C++ tests
run: ./.ci/cxx-tests.sh
- name: Collect coverage
run: ./.ci/coverage.sh
- uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: lcov.info
- name: Show ccache stats
run: ccache -s
sdist:
needs: [test-cxx, test-python, coverage]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ~/.cache/pip
key: ${{ runner.os }}-pip-3.11-${{ hashFiles('requirements*.txt') }}
restore-keys: |
${{ runner.os }}-pip-3.11-
${{ runner.os }}-pip-
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
- run: ./bootstrap.sh
- run: pip install build==0.10.0
- run: python -m build --sdist .
- uses: actions/upload-artifact@v3
with:
name: sdist
path: ./dist/*.tar.gz
cibuildwheel:
needs: [test-cxx, test-python, coverage]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
- uses: pypa/[email protected]
- uses: actions/upload-artifact@v3
with:
name: wheels
path: ./wheelhouse/*.whl
- name: Tar debug symbols
run: cd wheelhouse && tar -Jcvf "spead2-$(sed 's/.*"\(.*\)"/\1/' ../src/spead2/_version.py)-debug.tar.xz" _spead2*.debug
- uses: actions/upload-artifact@v3
with:
name: debug_symbols
path: ./wheelhouse/spead2-*-debug.tar.xz