Skip to content

refactor buildnml to use the CIME-CCS python based namelist generation capabilities #457

refactor buildnml to use the CIME-CCS python based namelist generation capabilities

refactor buildnml to use the CIME-CCS python based namelist generation capabilities #457

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: '0.55.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']
exclude:
# Do not build on macOS with MPI as that is having some dependency issues
- os: macos-latest
mpi: true
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@v2
- name: Install Meson
run: python -m pip install meson==${{ env.MESON_VERSION }}
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Build
env:
CC: gcc-12
FC: gfortran-12
run: |
meson setup builddir -Dmpi=${{ matrix.mpi }} -Dopenmp=${{ matrix.openmp }} --buildtype=debugoptimized
meson compile -C builddir
- name: Test code
if: ${{ matrix.mpi == false }}
run: |
ulimit -s 65532
meson test -C builddir
- name: Upload test log
if: ${{ matrix.mpi == false }}
uses: actions/upload-artifact@v2
with:
name: testlog-${{ runner.os }}-gcc
path: builddir/meson-logs/testlog.txt
intel:
name: Build BLOM using Intel compilers
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
mpi: [true, false]
openmp: ['enabled', 'disabled']
# Tell Meson to use Intel compilers
env:
CC: icc
FC: ifort
NFDIR: '/opt/netcdf'
steps:
- name: Install dependencies
run: |
sudo apt update
sudo apt install -y ninja-build libnetcdf-dev
- name: Cache Intel setup
id: cache-intel
uses: actions/cache@v2
with:
path: /opt/intel/
key: intel-${{ runner.os }}-compiler
- name: Setup Intel compiler
if: steps.cache-intel.outputs.cache-hit != 'true'
run: |
wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main"
sudo apt update
sudo apt install -y\
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic\
intel-oneapi-compiler-fortran intel-oneapi-mpi-devel
- name: Cache netCDF install
id: cache-netcdf
uses: actions/cache@v2
with:
path: ${{ env.NFDIR }}
key: netcdf-4.5.2-${{ runner.os }}-intel
- name: Checkout netCDF for compiling with Intel
if: steps.cache-netcdf.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: 'Unidata/netcdf-fortran'
ref: 'v4.5.2'
- name: Compile and install custom netCDF
if: steps.cache-netcdf.outputs.cache-hit != 'true'
run: |
source /opt/intel/oneapi/setvars.sh
./configure --prefix="$NFDIR"
make
sudo make install
- name: Setup netCDF environment
run: |
echo "${NFDIR}/bin" >> $GITHUB_PATH
echo "PKG_CONFIG_PATH=${NFDIR}/lib/pkgconfig" >> $GITHUB_ENV
- name: Setup Python for newer version of Meson
uses: actions/setup-python@v2
- name: Install Meson
run: python -m pip install meson==${{ env.MESON_VERSION }}
- name: Checkout code
uses: actions/checkout@v2
with:
submodules: 'recursive'
- name: Build with Intel compilers
run: |
source /opt/intel/oneapi/setvars.sh
meson setup builddir -Dmpi=${{ matrix.mpi }} -Dopenmp=${{ matrix.openmp }} --buildtype=debugoptimized
meson compile -C builddir
- name: Test code
if: ${{ matrix.mpi == false }}
run: |
source /opt/intel/oneapi/setvars.sh
meson test -C builddir
- name: Upload test log
uses: actions/upload-artifact@v2
if: ${{ matrix.mpi == false }}
with:
name: testlog-${{ runner.os }}-intel
path: builddir/meson-logs/testlog.txt