Skip to content

Merge pull request #375 from matsbn/feature-hybrid_enhancements5 #784

Merge pull request #375 from matsbn/feature-hybrid_enhancements5

Merge pull request #375 from matsbn/feature-hybrid_enhancements5 #784

Workflow file for this run

name: Continuous Integration testing
on: [push, pull_request]
env:
# This version of Meson should be available as an EasyBuild on Fram and Betzy
MESON_VERSION: '1.1.1'
jobs:
build:
name: Build BLOM on Github provided OS
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
mpi: [true, false]
openmp: ['enabled', 'disabled']
ecosys: [false] # ecosys==true fails with gcc, disable for now but leave placeholder
exclude:
# Do not build on macOS with MPI as that is having some dependency issues
- os: macos-latest
mpi: true
# Do not build on macOS with OpenMP. This cause an error as discussed in PR
# https://github.com/NorESMhub/BLOM/pull/317#issuecomment-2191552330
- os: macos-latest
openmp: 'enabled'
# Run test (fuk95 executed with mpi=false) fails with ecosys
- ecosys: true
mpi: false
steps:
- name: Install dependencies - Ubuntu
run: |
sudo apt update
sudo apt install -y libnetcdff-dev mpi-default-dev ninja-build
if: runner.os == 'Linux'
- name: Install dependencies - macOS
run: brew install netcdf-fortran open-mpi ninja
env:
HOMEBREW_NO_INSTALL_CLEANUP: 1
if: runner.os == 'macOS'
- name: Setup Python for newer version of Meson
uses: actions/setup-python@v5
with:
python-version: '3.10'
- name: Install Meson
run: python -m pip install meson==${{ env.MESON_VERSION }}
- name: Checkout code
uses: actions/checkout@v4
with:
submodules: 'recursive'
- name: Build
env:
CC: gcc-12
FC: gfortran-12
run: |
meson setup builddir -Dmpi=${{ matrix.mpi }} -Dopenmp=${{ matrix.openmp }} -Decosys=${{ matrix.ecosys }} --buildtype=debugoptimized
meson compile -C builddir
# macos-latest throws a SIGFPE exception for the test runs
- name: Test code
if: ${{ runner.os == 'Linux' && matrix.mpi == false }}
run: |
ulimit -s 65532
meson test -C builddir
- name: Upload test log
if: ${{ runner.os == 'Linux' && matrix.mpi == false }}
uses: actions/upload-artifact@v4
with:
name: testlog-${{ runner.os }}-OMP${{ matrix.openmp }}-gcc
path: builddir/meson-logs/testlog.txt