Skip to content

Hack: remove check for packet size consistency #1139

Hack: remove check for packet size consistency

Hack: remove check for packet size consistency #1139

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-20.04
cxx: g++-9
extras: enabled
- os: ubuntu-22.04
cxx: g++-12
extras: enabled
- os: ubuntu-20.04
cxx: clang++-10
extras: enabled
- os: ubuntu-22.04
cxx: clang++-14
extras: enabled
- os: macos-14
cxx: clang++
extras: disabled
runs-on: ${{ matrix.os }}
env:
SCCACHE_GHA_ENABLED: "true"
CXX: sccache ${{ matrix.cxx }}
# Don't error on deprecations: Xcode marks sprintf deprecated and Boost references it
CXXFLAGS: -Wno-error=deprecated-declarations
steps:
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- uses: actions/setup-python@v5
with:
# 3.10 is the minimum version supported on macos-14 builders
python-version: '3.10'
cache: 'pip'
- name: Install build requirements
run: ./.ci/py-build-requirements.sh
- name: Set up build directory
run: >-
meson setup build
--native-file=ci.ini
-Dwerror=true
-Dauto_features=${{ matrix.extras }}
-Dcuda=disabled
-Dgdrapi=disabled
-Dfmv="$(if [[ '${{ matrix.cxx }}' == g++* ]]; then echo enabled; else echo disabled; fi)"
- name: Build
run: meson compile -C build
- name: Run tests
run: meson test -C build
test-python:
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-20.04
cc: gcc-9
cxx: g++-9
python-version: '3.8'
extras: enabled
# 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
# cxx: g++
# python-version: pypy-3.7
- os: ubuntu-22.04
cc: gcc-12
cxx: g++-12
python-version: '3.12'
extras: enabled
- os: ubuntu-20.04
cc: clang-10
cxx: clang++-10
python-version: '3.12'
extras: enabled
- os: ubuntu-22.04
cc: clang-14
cxx: clang++-14
python-version: '3.12'
extras: enabled
- os: macos-14
cc: clang
cxx: clang++
python-version: '3.12'
extras: disabled
runs-on: ${{ matrix.os }}
env:
SCCACHE_GHA_ENABLED: "true"
CXX: sccache ${{ matrix.cxx }}
# Don't error on deprecations: Xcode marks sprintf deprecated and Boost references it
CXXFLAGS: -Wno-error=deprecated-declarations
steps:
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: 'pip'
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
env:
CC: ${{ matrix.cc }} # Do not pass -Werror when building dependencies
- name: Install Python package
run: >-
pip install -v
--config-settings=setup-args=--native-file=ci.ini
--config-settings=setup-args=-Dwerror=true
--config-settings=setup-args=-Dauto_features=${{ matrix.extras }}
--config-settings=setup-args=-Dfmv="$(if [[ '${{ matrix.cxx }}' == g++* ]]; then echo enabled; else echo disabled; fi)"
.
- name: Run tests
run: pytest -v -ra # -ra summarises the reasons for skipping or failing tests
- name: Run shutdown tests
run: ./.ci/py-tests-shutdown.sh
lint:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- uses: actions/setup-python@v5
with:
python-version: '3.8'
cache: 'pip'
- run: pip install pre-commit
- run: pre-commit run --all-files
coverage:
runs-on: ubuntu-22.04
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
- name: Install build requirements
run: ./.ci/py-build-requirements.sh
- name: Install Python package
# Build isolation tends to delete the .gcno files which end up in
# the ephemeral build directory. So do a non-isolated editable
# install instead.
run: >-
pip install -v
--config-settings=setup-args=-Dwerror=true
--config-settings=setup-args=-Dauto_features=enabled
--config-settings=setup-args=-Dbuildtype=debug
--config-settings=setup-args=-Db_coverage=true
--no-build-isolation
--editable .
- name: Run Python tests
run: pytest -v -ra && ./.ci/py-tests-shutdown.sh
- name: Set up C++ build
run: >-
meson setup build
-Dwerror=true
-Dauto_features=enabled
-Dcuda=disabled
-Dgdrapi=disabled
-Dbuildtype=debug
-Db_coverage=true
- name: Build C++
run: meson compile -C build
- name: Run C++ tests
run: meson test -C build
- name: Collect coverage
run: ./.ci/coverage.sh
- uses: coverallsapp/github-action@v2.3.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
path-to-lcov: lcov.info
all-builds:
runs-on: ubuntu-22.04
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install build requirements
run: ./.ci/py-build-requirements.sh
- name: Build all the combinations
run: ./.ci/all-builds.sh
sdist:
needs: [test-cxx, test-python, coverage, lint]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
- name: Install system packages
run: ./.ci/install-sys-pkgs.sh
- name: Install Python dependencies
run: ./.ci/py-requirements.sh
- run: pip install build==0.10.0
- run: python -m build --sdist .
- uses: actions/upload-artifact@v4
with:
name: sdist
path: ./dist/*.tar.gz
cibuildwheel-linux:
needs: [test-cxx, test-python, coverage, lint]
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
arch: [x86_64, aarch64]
python: [cp38, cp39, cp310, cp311, cp312]
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- uses: docker/setup-qemu-action@v3
with:
platforms: arm64
if: matrix.arch != 'x86_64'
- uses: pypa/cibuildwheel@v2.19.2
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BUILD: ${{ matrix.python }}-manylinux*
- uses: actions/upload-artifact@v4
with:
name: wheel_linux-${{ matrix.arch }}-${{ matrix.python }}
path: ./wheelhouse/*.whl
- uses: actions/upload-artifact@v4
with:
name: debug_symbols_uncompressed-${{ matrix.arch }}-${{ matrix.python }}
path: ./wheelhouse/*.debug
cibuildwheel-macos:
needs: [test-cxx, test-python, coverage, lint]
strategy:
fail-fast: false
matrix:
os: [macos-13, macos-14]
python: [cp38, cp39, cp310, cp311, cp312]
exclude:
# Python 3.8 not natively available for Apple Silicon. cibuildwheel
# tries to do a cross build, which fails.
- os: macos-14
python: cp38
runs-on: ${{ matrix.os }}
env:
SCCACHE_GHA_ENABLED: "true"
steps:
- uses: actions/checkout@v4
- name: Set up sccache
uses: mozilla-actions/sccache-action@v0.0.5
- uses: pypa/cibuildwheel@v2.19.2
env:
CIBW_BUILD: ${{ matrix.python }}-macos*
- uses: actions/upload-artifact@v4
with:
name: wheel_macos-${{ matrix.os }}-${{ matrix.python }}
path: ./wheelhouse/*.whl
combine:
needs: [cibuildwheel-linux, cibuildwheel-macos, sdist]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- name: Create paths
run: mkdir -p debug-symbols dist wheelhouse
- uses: actions/download-artifact@v4
with:
pattern: debug_symbols_uncompressed-*
path: .
merge-multiple: true
- uses: actions/download-artifact@v4
with:
pattern: wheel_*
path: wheelhouse/
merge-multiple: true
- uses: actions/download-artifact@v4
with:
name: sdist
path: dist/
merge-multiple: true
- name: Compress debug symbols
run: >-
tar -Jcvf debug-symbols/"spead2-"$(<VERSION.txt)-debug.tar.xz _spead2*.debug
- uses: actions/upload-artifact@v4
with:
name: combined
path: |
debug-symbols/
dist/
wheelhouse/