name: Build and run SEACAS tests

on: 
  push:
    branches-ignore:
      - 'coverity'
  pull_request:

jobs:

  build-deps:

    runs-on: ubuntu-latest
    
    strategy:
      matrix:
        compiler: [ gnu, clang, mpi ]
        hdf5: [ V18, V110, V112 ]
        netcdf: [ 4.8.1 ]
        cgns: [ 4.2.0 ]
    steps:

      - uses: actions/checkout@v2

      - name: Install System dependencies
        shell: bash -l {0}
        run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev

        ###
        # Installing TPL
        ###
      - name: Cache TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
        id: cache-TPL
        uses: actions/cache@v2
        with:
          path: ~/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
          key: TPL-v3-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}

      - name: Build TPL-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
        if: steps.cache-TPL.outputs.cache-hit != 'true'
        run: |
          echo $HOME
          set -x
          COMPILER=${{ matrix.compiler }} H5VERSION=${{ matrix.hdf5}} GNU_PARALLEL=OFF INSTALL_PATH=${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} ./install-tpl.sh
          ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib

###
# Fetch Cache
###

  seacas-build:
  
    needs: build-deps
    runs-on: ubuntu-latest

    strategy:
      matrix:
        compiler: [ gnu, clang, mpi ]
        hdf5: [ V18, V110, V112 ]
        netcdf: [ 4.8.1 ]
        cgns: [ 4.2.0 ]
    steps:

      - uses: actions/checkout@v2

      - name: Install System dependencies
        shell: bash -l {0}
        run: sudo apt update && sudo apt install -y libaec-dev zlib1g-dev automake autoconf libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openmpi-bin libopenmpi-dev

      - name: Fetch TPL Cache
        id: cache-TPL
        uses: actions/cache@v2
        with:
          path: ~/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}
          key: TPL-v3-${{ runner.os }}-${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}

      - name: Check Cache
        shell: bash -l {0}
        run: ls ${HOME} && ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} && ls ${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }}/lib

###
# Configure and build
###
      - name: Run cmake
        shell: bash -l {0}
        run: |
          echo $HOME
          mkdir build
          cd build
          NUMPROCS=2 COMPILER=${{ matrix.compiler }} INSTALL_PATH=${HOME}/environments/${{ matrix.compiler }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}-${{ matrix.cgns }} bash ../cmake-config

      - name: Build 
        shell: bash -l {0}
        run: |
          cd build 
          make -j 4
        if: ${{ success() }}

      - name: Install
        shell: bash -l {0}
        run: |
          cd build 
          make -j 4 install
        if: ${{ success() }}

      - name: Run Tests
        shell: bash -l {0}
        run: |
          cd build
          ctest -j 4 --output-on-failure
        if: ${{ success() }}
