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-24.04 name: ${{ matrix.sys.compiler }} ${{ matrix.sys.version }} strategy: fail-fast: false matrix: sys: - {compiler: gcc, version: '11'} - {compiler: gcc, version: '12'} - {compiler: gcc, version: '13'} - {compiler: gcc, version: '14'} - {compiler: clang, version: '17'} - {compiler: clang, version: '18'} - {compiler: clang, version: '19'} - {compiler: clang, version: '20'} steps: - name: Install GCC if: matrix.sys.compiler == 'gcc' uses: egor-tensin/setup-gcc@v1 with: version: ${{matrix.sys.version}} platform: x64 - name: Install LLVM and Clang if: matrix.sys.compiler == 'clang' run: | wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh ${{matrix.sys.version}} sudo apt-get install -y clang-tools-${{matrix.sys.version}} sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{matrix.sys.version}} 200 sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{matrix.sys.version}} 200 sudo update-alternatives --install /usr/bin/clang-scan-deps clang-scan-deps /usr/bin/clang-scan-deps-${{matrix.sys.version}} 200 sudo update-alternatives --set clang /usr/bin/clang-${{matrix.sys.version}} sudo update-alternatives --set clang++ /usr/bin/clang++-${{matrix.sys.version}} sudo update-alternatives --set clang-scan-deps /usr/bin/clang-scan-deps-${{matrix.sys.version}} - 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