name: Linux on: workflow_dispatch: pull_request: push: branches: [master] concurrency: group: ${{ github.workflow }}-${{ github.job }}-${{ github.ref }} cancel-in-progress: true defaults: run: shell: bash -e -l {0} jobs: build: runs-on: ubuntu-latest name: ${{ matrix.sys.compiler }} ${{ matrix.sys.version }} strategy: fail-fast: false matrix: sys: - {compiler: gcc, version: '9'} - {compiler: gcc, version: '10'} - {compiler: gcc, version: '11'} - {compiler: gcc, version: '12'} - {compiler: clang, version: '15'} - {compiler: clang, version: '16'} steps: - name: Setup GCC if: ${{ matrix.sys.compiler == 'gcc' }} run: | GCC_VERSION=${{ matrix.sys.version }} sudo apt-get update sudo apt-get --no-install-suggests --no-install-recommends install g++-$GCC_VERSION CC=gcc-$GCC_VERSION echo "CC=$CC" >> $GITHUB_ENV CXX=g++-$GCC_VERSION echo "CXX=$CXX" >> $GITHUB_ENV - name: Setup clang if: ${{ matrix.sys.compiler == 'clang' }} run: | LLVM_VERSION=${{ matrix.sys.version }} wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - || exit 1 if [[ $LLVM_VERSION -ge 13 ]]; then sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-$LLVM_VERSION main" || exit 1 else sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal main" || exit 1 fi || exit 1 sudo apt-get update || exit 1 sudo apt-get --no-install-suggests --no-install-recommends install clang-$LLVM_VERSION || exit 1 sudo apt-get --no-install-suggests --no-install-recommends install g++-9 g++-9-multilib || exit 1 sudo ln -s /usr/include/asm-generic /usr/include/asm CC=clang-$LLVM_VERSION echo "CC=$CC" >> $GITHUB_ENV CXX=clang++-$LLVM_VERSION echo "CXX=$CXX" >> $GITHUB_ENV - name: Checkout code uses: actions/checkout@v3 - name: Set conda environment uses: mamba-org/setup-micromamba@v1 with: environment-file: environment-dev.yml cache-environment: true - name: Configure using CMake run: cmake -G Ninja -Bbuild -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DPYTHON_EXECUTABLE=`which python` -DDOWNLOAD_GTEST=ON $(Build.SourcesDirectory) - name: Install working-directory: build run: cmake --install . - name: Build working-directory: build run: cmake --build . --target test_xtensor_python --parallel 8 - name: Run tests (C++) working-directory: build/test run: ./test_xtensor_python - name: Run tests (Python) run: pytest -s - name: Example - readme 1 working-directory: docs/source/examples/readme_example_1 run: | cmake -Bbuild -DPython_EXECUTABLE=`which python` cd build cmake --build . cp ../example.py . python example.py - name: Example - copy \'cast\' working-directory: docs/source/examples/copy_cast run: | cmake -Bbuild -DPython_EXECUTABLE=`which python` cd build cmake --build . cp ../example.py . python example.py - name: Example - SFINAE working-directory: docs/source/examples/sfinae run: | cmake -Bbuild -DPython_EXECUTABLE=`which python` cd build cmake --build . cp ../example.py . python example.py