Skip to content

Workflow file for this run

name: MODFLOW 6 continuous integration
on:
push:
branches:
- master
- develop
- ci-diagnose*
- netcdf-ci
paths-ignore:
- '**.md'
- 'doc/**'
pull_request:
branches:
- master
- develop
paths-ignore:
- '**.md'
- 'doc/**'
jobs:
netcdf_test_win:
name: netcdf4 testing
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ windows-2022 ]
#hdf5: [ 1.12.2 ]
#netcdf: [ v4.7.4, v4.8.1, v4.9.0, main ]
#netcdf: [ v4.9.0, main ]
defaults:
run:
shell: bash -l {0}
env:
FC: gfortran
GCC_V: 12
steps:
- name: Checkout modflow6
uses: actions/checkout@v3
with:
path: modflow6
- name: Setup MSYS2
uses: msys2/setup-msys2@v2
with:
update: true
install: |
git
make
mingw-w64-x86_64-gcc
mingw-w64-x86_64-python
mingw-w64-x86_64-python-pip
mingw-w64-x86_64-python-pytest
- name: Setup GNU Fortran ${{ env.GCC_V }}
uses: awvwgk/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GCC_V }}
- name: Install System dependencies
shell: msys2 {0}
run: |
pacman -Syu
#pacman -Sy --noconfirm --needed automake autoconf libxml2 libtool git wget curl bzip2 m4 flex bison cmake tar base-devel
pacman -S --noconfirm --needed base-devel unzip mingw-w64-x86_64-toolchain mingw-w64-x86_64-libtool mingw-w64-x86_64-cmake
- name: Install hdf5
shell: msys2 {0}
run: |
pacman -U --noconfirm https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-hdf5-1.12.2-2-any.pkg.tar.zst
- name: Make netcdf-c
shell: msys2 {0}
run: |
cd $HOME
wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.9.0.zip
unzip v4.9.0.zip
cd $HOME/netcdf-c-4.9.0
./configure --enable-static --disable-shared --disable-dap --disable-examples --disable-v2 --disable-utilities --disable-testsets
make install
which nc-config
nc-config --all
- name: Make netcdf-f
shell: msys2 {0}
run: |
cd $HOME
wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.0.zip
unzip v4.6.0.zip
cd $HOME/netcdf-fortran-4.6.0
LIBS="$(nc-config --libs)" ./configure --enable-static --disable-shared
make install
which nc-config
nc-config --all
#echo "PATH=/mingw64/bin:${PATH}" >> $GITHUB_ENV
#echo "PATH=${PATH}:/mingw64/bin" >> $GITHUB_ENV
echo "/mingw64/bin" >> $GITHUB_PATH
- name: Setup Micromamba
uses: mamba-org/setup-micromamba@v1
with:
environment-file: modflow6/environment.yml
init-shell: >-
bash
powershell
cache-environment: true
cache-downloads: true
- name: Build modflow6
working-directory: modflow6
run: |
#find /D/ | grep -i netcdf
#find /C/ | grep -i netcdf
/D/a/_temp/msys64/home/runneradmin/netcdf-fortran-4.6.0/nf-config --all
/D/a/_temp/msys64/home/runneradmin/netcdf-c-4.9.0/nc-config --all
nc-config --all
nc-config --libdir
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"$(nc-config --libdir)"
echo "PKG_CONFIG_PATH=$(nc-config --libdir)" >> $GITHUB_ENV
meson setup builddir -Ddebug=false --prefix=$(pwd) --libdir=bin
meson install -C builddir
- name: Show Meson logs
if: failure()
working-directory: modflow6
run: cat builddir/meson-logs/meson-log.txt
- name: Update flopy
working-directory: modflow6/autotest
run: python update_flopy.py
- name: Get executables
working-directory: modflow6/autotest
env:
GITHUB_TOKEN: ${{ github.token }}
run: pytest -v --durations 0 get_exes.py
- name: Test programs
working-directory: modflow6/autotest
env:
REPOS_PATH: ${{ github.workspace }}
run: |
branch="${{ github.ref_name }}"
marker="not large"
markers=$([ "$branch" == "master" ] && echo "$marker and not developmode" || echo "$marker")
pytest -v -n auto --durations 0 -m "$markers"
netcdf_test_mac:
name: netcdf4 testing
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ macos-12 ]
hdf5: [ 1.12.2 ]
#netcdf: [ v4.9.0 ]
netcdf: [ main ]
defaults:
run:
shell: bash -l {0}
env:
FC: gfortran
GCC_V: 13
steps:
- name: Checkout modflow6
uses: actions/checkout@v3
with:
path: modflow6
- name: Setup gfortran ${{ env.GCC_V }}
uses: awvwgk/setup-fortran@main
with:
compiler: gcc
version: ${{ env.GCC_V }}
###
# Set Environmental Variables
###
- run: echo "FCFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "FFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "CFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "CPPFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "LDFLAGS=-L${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/lib" >> $GITHUB_ENV
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/lib" >> $GITHUB_ENV
- run: echo "DYLD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/lib" >> $GITHUB_ENV
- run: echo "PATH=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/bin:${PATH}" >> $GITHUB_ENV
- run: brew install automake libaec
###
# Installing libhdf4 and libhdf5
###
- name: Cache libhdf5-${{ matrix.hdf5 }}-${{ matrix.netcdf }}
id: cache-hdf5
uses: actions/cache@v2
with:
path: ~/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}
- name: Build libhdf5-${{ matrix.hdf5 }}-${{ matrix.netcdf }}
#if: steps.cache-hdf5.outputs.cache-hit != 'true'
run: |
cd $HOME
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$(echo ${{ matrix.hdf5 }} | cut -d. -f 1,2)/hdf5-${{ matrix.hdf5 }}/src/hdf5-${{ matrix.hdf5 }}.tar.bz2
tar -jxf hdf5-${{ matrix.hdf5 }}.tar.bz2
cd hdf5-${{ matrix.hdf5 }}
./configure --disable-static --enable-shared --prefix=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }} --enable-hl --with-szlib
make -j
make install -j
- name: Build 2 libhdf5-${{ matrix.hdf5 }}-${{ matrix.netcdf }}
#if: steps.cache-hdf5.outputs.cache-hit != 'true'
run: |
cd $HOME
git clone -b ${{ matrix.netcdf}} https://github.com/Unidata/netcdf-c
cd netcdf-c
autoreconf -if
CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ./configure --disable-static --enable-shared --prefix=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}
make -j
make install -j
- run: echo "FCFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "FFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "CFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/include" >> $GITHUB_ENV
- run: echo "LDFLAGS=-L${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/lib" >> $GITHUB_ENV
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}/lib" >> $GITHUB_ENV
- run: echo "CMAKE_PREFIX_PATH=${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf}}" >> $GITHUB_ENV
- run: brew install automake
# - name: Fetch HDF Cache
# id: cache-hdf5
# uses: actions/cache@v2
# with:
# path: ~/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }}
# key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}-${{ matrix.netcdf }}
# - name: Check Cache
# shell: bash -l {0}
# run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }}-${{ matrix.netcdf }} && ls ${HOME}/environments/${{ matrix.hdf5 }}-${{matrix.netcdf}}/lib
- name: Perform out-of-directory build
shell: bash -l {0}
run: |
#mkdir build
#cd build
#LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake .. -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
#- name: "Create build directory and run CMake"
cd $HOME
pwd
#find . | grep -i CMakeLists.txt
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake -S netcdf-c -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
#- name: "Build Project"
#LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake --build build --target all --config Release -- -j4
# - name: Print Summary
# shell: bash -l {0}
# run: |
# #cd build
# #cat libnetcdff.settings
# find . | grep -i libnetcdff.settings
- name: Build All
shell: bash -l {0}
run: |
cd $HOME
cd build
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j 12
if: ${{ success() }}
- name: Run Tests
shell: bash -l {0}
run: |
cd $HOME
cd build
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest -j 1 .
if: ${{ success() }}
- name: Look at LastTest.log if error
shell: bash -l {0}
run: |
cat /home/runner/work/netcdf-fortran/netcdf-fortran/build/Testing/Temporary/LastTest.log
cd build
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest --rerun-failed --output-on-failure
if: ${{ failure() }}
- name: Setup Micromamba
uses: mamba-org/setup-micromamba@v1
with:
environment-file: modflow6/environment.yml
init-shell: >-
bash
powershell
cache-environment: true
cache-downloads: true
- name: Build modflow6
working-directory: modflow6
run: |
#find / | grep netcdf
#/System/Volumes/Data/Users/runner/netcdf-c/nc-config --all
nf-config --all
nc-config --all
nc-config --libdir
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:"$(nc-config --libdir)"
echo "PKG_CONFIG_PATH=$(nc-config --libdir)" >> $GITHUB_ENV
meson setup builddir -Ddebug=false --prefix=$(pwd) --libdir=bin
meson install -C builddir
- name: Show Meson logs
if: failure()
working-directory: modflow6
run: cat builddir/meson-logs/meson-log.txt
- name: Update flopy
working-directory: modflow6/autotest
run: python update_flopy.py
- name: Get executables
working-directory: modflow6/autotest
env:
GITHUB_TOKEN: ${{ github.token }}
run: pytest -v --durations 0 get_exes.py
- name: Test programs
working-directory: modflow6/autotest
env:
REPOS_PATH: ${{ github.workspace }}
run: |
branch="${{ github.ref_name }}"
marker="not large"
markers=$([ "$branch" == "master" ] && echo "$marker and not developmode" || echo "$marker")
pytest -v -n auto --durations 0 -m "$markers"