# Test on Ubuntu with various compiler and language standard versions. name: Test Ubuntu on: push: pull_request: workflow_dispatch: jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: python-version: ['3.14'] cxx: [g++, clang++] std: [c++11, c++14, c++17] include: # Also test with free-threaded build of Python - python-version: '2.7' cxx: g++ std: c++11 - python-version: '3.14t' cxx: clang++ std: c++17 container: # Add the appropriate docker image for the compiler. # The images from teeks99/boost-python-test already have boost::python # pre-reqs installed, see: # https://github.com/teeks99/boost-python-test-docker image: ${{ matrix.cxx == 'g++' && 'teeks99/boost-python-test:gcc-15_1.89.0' || 'teeks99/boost-python-test:clang-21_1.89.0' }} steps: - uses: actions/checkout@v5 - name: setup python if: "${{ matrix.python-version != '2.7' }}" uses: actions/setup-python@v5 with: python-version: ${{ matrix.python-version }} - name: setup prerequisites run: | # Warning: this is not necessarily the same Python version as the one configured above ! python3 -m pip install -U faber --break-system-packages echo "CXX=${{ matrix.cxx }}" >> "$GITHUB_ENV" echo "CXX_STD=${{ matrix.std }}" >> "$GITHUB_ENV" - name: build if: "${{ matrix.python-version != '2.7' }}" run: | .github/run-faber.sh - name: build if: "${{ matrix.python-version == '2.7' }}" run: | python --version echo ${BOOST_PY_DEPS} ${{ matrix.cxx }} --version faber -v sed -e "s/\$PYTHON/python/g" .ci/faber > ~/.faber faber \ --with-boost-include=${BOOST_PY_DEPS} \ --builddir=build \ cxx.name=${{ matrix.cxx }} \ cxxflags=-std=${{ matrix.std }} \ cppflags=-std=${{ matrix.std }} \ -j`nproc` - name: test if: "${{ matrix.python-version != '2.7' }}" run: | .github/run-faber.sh test.report - name: test if: "${{ matrix.python-version == '2.7' }}" run: | faber \ --debug \ --with-boost-include=${BOOST_PY_DEPS} \ --builddir=build \ cxx.name=${{ matrix.cxx }} \ cxxflags=-std=${{ matrix.std }} \ cppflags=-std=${{ matrix.std }} \ -j`nproc` \ test.report