name: Ubuntu 22.04 CI

on: push

jobs:
  Build:
    runs-on: ubuntu-22.04
    strategy:
      fail-fast: true
      matrix:
        mpi: [ 'mpich', 'impi' ]
#        mpi: [ 'mpich', 'openmpi', 'impi' ]
#        openmpi is borken on ubuntu-22.04 and above see https://github.com/open-mpi/ompi/issues/10726

    env:
      FC: gfortran
      GCC_V: 11

    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Install Dependencies
      run: |
        sudo apt install -y gfortran-${GCC_V} cmake
        sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-${GCC_V} 100

    - name: Setup MPI ${{ matrix.mpi }}
      uses: mpi4py/setup-mpi@v1
      with:
        mpi: ${{ matrix.mpi }}

    - name: Build and Test
      run: |
        mpirun --version
        mkdir build
        cmake -S . -B build -Wdev -DCMAKE_INSTALL_PREFIX:PATH="${HOME}/OpenCoarrays" -DCMAKE_BUILD_TYPE:STRING="Debug" ..
        cmake --build build -j $(nproc)
        cmake --build build -t install -j $(nproc) || echo "installation failed"
        ctest --test-dir build --output-on-failure --schedule-random --repeat-until-fail 1 --timeout 200
        cd build
        make uninstall
        echo "Ran with mpi: ${{ matrix.mpi }}"
