Add detection of function multi-versioning in the compiler #531
Workflow file for this run
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: 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 |