mirror of
https://github.com/Unidata/netcdf-c.git
synced 2024-12-21 08:39:46 +08:00
a03bb5e601
re: Issue https://github.com/Unidata/netcdf-c/issues/2573 The file type inferencer in libdispatch/dinference.c has a simple forward inference mechanism so that the occurrence of certain mode values in a URL fragment implies inclusion of additional mode values. This kind of inference is notorious for leading to cycles if not careful. Unfortunately, this occurred in the one in dinference.c. This was fixed by providing a more complicated, but more reliable inference mechanism. ## Misc. Other Changes * Found and fixed a couple of memory leaks. * There is a recent problem in building HDF4 support on github actions. Fixed by using the internal HDF4 xdr capability. * Some filter-related code was not being properly ifdef'd with ENABLE_NCZARRA_FILTERS.
637 lines
20 KiB
YAML
637 lines
20 KiB
YAML
###
|
|
# Build hdf4, hdf5 dependencies and cache them in a combined directory.
|
|
###
|
|
|
|
name: Run Ubuntu/Linux netCDF Tests
|
|
|
|
on: [pull_request,workflow_dispatch]
|
|
|
|
jobs:
|
|
|
|
build-deps-serial:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.8.22, 1.10.8, 1.12.2 ]
|
|
|
|
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 doxygen
|
|
|
|
###
|
|
# Installing libhdf4 and libhdf5
|
|
###
|
|
- name: Cache libhdf5-${{ matrix.hdf5 }}
|
|
id: cache-hdf5
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
|
|
- name: Build libhdf5-${{ matrix.hdf5 }}
|
|
if: steps.cache-hdf5.outputs.cache-hit != 'true'
|
|
run: |
|
|
set -x
|
|
wget https://support.hdfgroup.org/ftp/HDF/releases/HDF4.2.15/src/hdf-4.2.15.tar.bz2
|
|
tar -jxf hdf-4.2.15.tar.bz2
|
|
pushd hdf-4.2.15
|
|
./configure --prefix=${HOME}/environments/${{ matrix.hdf5 }} --disable-static --enable-shared --disable-fortran --disable-netcdf --with-szlib --enable-hdf4-xdr
|
|
make -j
|
|
make install -j
|
|
popd
|
|
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
|
|
pushd hdf5-${{ matrix.hdf5 }}
|
|
./configure --disable-static --enable-shared --prefix=${HOME}/environments/${{ matrix.hdf5 }} --enable-hl --with-szlib
|
|
make -j
|
|
make install -j
|
|
popd
|
|
|
|
|
|
build-deps-parallel:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
|
|
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 mpich libmpich-dev
|
|
|
|
###
|
|
# Installing libhdf4 and libhdf5
|
|
###
|
|
- name: Cache libhdf5-parallel-${{ matrix.hdf5 }}
|
|
id: cache-hdf5
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-parallel-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
|
|
- name: Build libhdf5-${{ matrix.hdf5 }}-pnetcdf-1.12.3
|
|
if: steps.cache-hdf5.outputs.cache-hit != 'true'
|
|
run: |
|
|
set -x
|
|
wget https://support.hdfgroup.org/ftp/HDF/releases/HDF4.2.15/src/hdf-4.2.15.tar.bz2
|
|
tar -jxf hdf-4.2.15.tar.bz2
|
|
pushd hdf-4.2.15
|
|
CC=mpicc ./configure --prefix=${HOME}/environments/${{ matrix.hdf5 }} --disable-static --enable-shared --disable-fortran --disable-netcdf --with-szlib --enable-parallel --enable-hdf4-xdr
|
|
make -j
|
|
make install -j
|
|
popd
|
|
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
|
|
pushd hdf5-${{ matrix.hdf5 }}
|
|
CC=mpicc ./configure --disable-static --enable-shared --prefix=${HOME}/environments/${{ matrix.hdf5 }} --enable-hl --with-szlib --enable-parallel
|
|
make -j
|
|
make install -j
|
|
popd
|
|
wget https://parallel-netcdf.github.io/Release/pnetcdf-1.12.3.tar.gz
|
|
tar -zxf pnetcdf-1.12.3.tar.gz
|
|
pushd pnetcdf-1.12.3
|
|
CC=mpicc ./configure --disable-static --enable-shared --prefix=${HOME}/environments/${{ matrix.hdf5 }}
|
|
make -j
|
|
make install -j
|
|
popd
|
|
|
|
#####
|
|
# One-Off Autotools-based tests.
|
|
#####
|
|
##
|
|
# Serial
|
|
##
|
|
nc-ac-tests-oneoff-serial:
|
|
|
|
needs: build-deps-serial
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
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 doxygen
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}/include" >> $GITHUB_ENV
|
|
- run: echo "LDFLAGS=-L${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
|
|
|
|
###
|
|
# Fetch Cache
|
|
###
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Run autoconf
|
|
shell: bash -l {0}
|
|
run: autoreconf -if
|
|
|
|
- name: Configure
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ./configure --enable-hdf4 --enable-hdf5 --enable-dap --disable-dap-remote-tests --enable-doxygen --enable-external-server-tests
|
|
if: ${{ success() }}
|
|
|
|
- name: Look at config.log if error
|
|
shell: bash -l {0}
|
|
run: cat config.log
|
|
if: ${{ failure() }}
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: cat libnetcdf.settings
|
|
|
|
- name: Build Library and Utilities
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Build Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make check TESTS="" -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make check -j
|
|
if: ${{ success() }}
|
|
|
|
##
|
|
# Parallel
|
|
##
|
|
nc-ac-tests-oneoff-parallel:
|
|
|
|
needs: build-deps-parallel
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
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 mpich libmpich-dev
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}/include" >> $GITHUB_ENV
|
|
- run: echo "LDFLAGS=-L${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-parallel-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Run autoconf
|
|
shell: bash -l {0}
|
|
run: autoreconf -if
|
|
|
|
- name: Configure
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} CC=mpicc ./configure --enable-hdf4 --enable-hdf5 --enable-dap --disable-dap-remote-tests --enable-parallel-tests --enable-pnetcdf
|
|
if: ${{ success() }}
|
|
|
|
- name: Look at config.log if error
|
|
shell: bash -l {0}
|
|
run: cat config.log
|
|
if: ${{ failure() }}
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: cat libnetcdf.settings
|
|
|
|
- name: Build Library and Utilities
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} CC=mpicc make -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Build Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} CC=mpicc make check TESTS="" -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} CC=mpicc make check -j
|
|
if: ${{ success() }}
|
|
|
|
|
|
#####
|
|
# One-Off CMake-based tests.
|
|
#####
|
|
##
|
|
# Serial
|
|
##
|
|
nc-cmake-tests-oneoff-serial:
|
|
|
|
needs: build-deps-serial
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
|
|
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 doxygen
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CMAKE_PREFIX_PATH=${HOME}/environments/${{ matrix.hdf5 }}/" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
|
|
###
|
|
# Fetch Cache
|
|
###
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf5
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Perform out-of-directory build
|
|
shell: bash -l {0}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake .. -DENABLE_HDF4=TRUE -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DENABLE_DAP=TRUE -DENABLE_HDF5=TRUE -DENABLE_NCZARR=TRUE -D ENABLE_DAP_LONG_TESTS=TRUE
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
cat libnetcdf.settings
|
|
|
|
- name: Build All
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j 12
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest --output-on-failure -j 12 .
|
|
if: ${{ success() }}
|
|
|
|
- name: Verbose Output if CTest Failure
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest -j 12 --rerun-failed --output-on-failure -VV
|
|
if: ${{ failure() }}
|
|
|
|
##
|
|
# Parallel
|
|
##
|
|
nc-cmake-tests-oneoff-parallel:
|
|
|
|
needs: build-deps-parallel
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
|
|
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 doxygen mpich libmpich-dev
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CMAKE_PREFIX_PATH=${HOME}/environments/${{ matrix.hdf5 }}/" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
|
|
###
|
|
# Fetch Cache
|
|
###
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf5
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-parallel-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Perform out-of-directory build
|
|
shell: bash -l {0}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake .. -DCMAKE_C_COMPILER=mpicc -DENABLE_HDF4=TRUE -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DENABLE_DAP=TRUE -DENABLE_HDF5=TRUE -DENABLE_NCZARR=TRUE -D ENABLE_DAP_LONG_TESTS=TRUE -DENABLE_PNETCDF=TRUE
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
cat libnetcdf.settings
|
|
|
|
- name: Build All
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j 12
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest --output-on-failure -j 12 .
|
|
if: ${{ success() }}
|
|
|
|
- name: Verbose Output if CTest Failure
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest -j 12 --rerun-failed --output-on-failure -VV
|
|
if: ${{ failure() }}
|
|
|
|
nc-autotools:
|
|
|
|
needs: [ nc-cmake-tests-oneoff-serial, nc-ac-tests-oneoff-serial, nc-cmake-tests-oneoff-parallel, nc-ac-tests-oneoff-parallel ]
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.8.22, 1.10.8, 1.12.2 ]
|
|
use_nc4: [ nc3, nc4 ]
|
|
use_dap: [ dap_off, dap_on ]
|
|
use_nczarr: [ nczarr_off, nczarr_on ]
|
|
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
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CFLAGS=-I${HOME}/environments/${{ matrix.hdf5 }}/include" >> $GITHUB_ENV
|
|
- run: echo "LDFLAGS=-L${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
- run: |
|
|
echo "ENABLE_HDF4=--disable-hdf4" >> $GITHUB_ENV
|
|
echo "ENABLE_HDF5=--disable-hdf5" >> $GITHUB_ENV
|
|
if: matrix.use_nc4 == 'nc3'
|
|
- run: |
|
|
echo "ENABLE_HDF4=--enable-hdf4" >> $GITHUB_ENV
|
|
echo "ENABLE_HDF5=--enable-hdf5" >> $GITHUB_ENV
|
|
if: matrix.use_nc4 == 'nc4'
|
|
- run: echo "ENABLE_DAP=--disable-dap" >> $GITHUB_ENV
|
|
if: matrix.use_dap == 'dap_off'
|
|
- run: echo "ENABLE_DAP=--enable-dap" >> $GITHUB_ENV
|
|
if: matrix.use_dap == 'dap_on'
|
|
- run: echo "ENABLE_NCZARR=--disable-nczarr" >> $GITHUB_ENV
|
|
if: matrix.use_nczarr == 'nczarr_off'
|
|
- run: echo "ENABLE_NCZARR=--enable-nczarr" >> $GITHUB_ENV
|
|
if: matrix.use_nczarr == 'nczarr_on'
|
|
|
|
###
|
|
# Fetch Cache
|
|
###
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Run autoconf
|
|
shell: bash -l {0}
|
|
run: autoreconf -if
|
|
|
|
- name: Configure
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ./configure ${ENABLE_HDF4} ${ENABLE_HDF5} ${ENABLE_DAP} ${ENABLE_NCZARR}
|
|
if: ${{ success() }}
|
|
|
|
- name: Look at config.log if error
|
|
shell: bash -l {0}
|
|
run: cat config.log
|
|
if: ${{ failure() }}
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: cat libnetcdf.settings
|
|
|
|
- name: Build Library and Utilities
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Build Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make check TESTS="" -j
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make check -j
|
|
if: ${{ success() }}
|
|
|
|
# - name: Make Distcheck
|
|
# shell: bash -l {0}
|
|
# run: CFLAGS=${CFLAGS} LDFLAGS=${LDFLAGS} LD_LIBRARY_PATH=${LD_LIBRARY_PATH} DISTCHECK_CONFIGURE_FLAGS="${ENABLE_HDF4} ${ENABLE_HDF5} ${ENABLE_DAP} ${ENABLE_NCZARR}" make distcheck
|
|
# if: ${{ success() }}
|
|
|
|
#- name: Start SSH Debug
|
|
# uses: luchihoratiu/debug-via-ssh@main
|
|
# with:
|
|
# NGROK_AUTH_TOKEN: ${{ secrets.NGROK_AUTH_TOKEN }}
|
|
# SSH_PASS: ${{ secrets.SSH_PASS }}
|
|
# if: ${{ failure() }}
|
|
|
|
nc-cmake:
|
|
|
|
needs: [ nc-cmake-tests-oneoff-serial, nc-ac-tests-oneoff-serial, nc-cmake-tests-oneoff-parallel, nc-ac-tests-oneoff-parallel ]
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.8.22, 1.10.8, 1.12.2 ]
|
|
use_nc4: [ nc3, nc4 ]
|
|
use_dap: [ dap_off, dap_on ]
|
|
use_nczarr: [ nczarr_off, nczarr_on ]
|
|
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
|
|
|
|
###
|
|
# Set Environmental Variables
|
|
###
|
|
|
|
- run: echo "CMAKE_PREFIX_PATH=${HOME}/environments/${{ matrix.hdf5 }}/" >> $GITHUB_ENV
|
|
- run: echo "LD_LIBRARY_PATH=${HOME}/environments/${{ matrix.hdf5 }}/lib" >> $GITHUB_ENV
|
|
- run: |
|
|
echo "ENABLE_HDF4=OFF" >> $GITHUB_ENV
|
|
echo "ENABLE_HDF5=OFF" >> $GITHUB_ENV
|
|
if: matrix.use_nc4 == 'nc3'
|
|
- run: |
|
|
echo "ENABLE_HDF4=ON" >> $GITHUB_ENV
|
|
echo "ENABLE_HDF5=ON" >> $GITHUB_ENV
|
|
if: matrix.use_nc4 == 'nc4'
|
|
- run: echo "ENABLE_DAP=OFF" >> $GITHUB_ENV
|
|
if: matrix.use_dap == 'dap_off'
|
|
- run: echo "ENABLE_DAP=ON" >> $GITHUB_ENV
|
|
if: matrix.use_dap == 'dap_on'
|
|
- run: echo "ENABLE_NCZARR=OFF" >> $GITHUB_ENV
|
|
if: matrix.use_nczarr == 'nczarr_off'
|
|
- run: echo "ENABLE_NCZARR=ON" >> $GITHUB_ENV
|
|
if: matrix.use_nczarr == 'nczarr_on'
|
|
- run: echo "CTEST_OUTPUT_ON_FAILURE=1" >> $GITHUB_ENV
|
|
|
|
###
|
|
# Fetch Cache
|
|
###
|
|
|
|
- name: Fetch HDF Cache
|
|
id: cache-hdf5
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: ~/environments/${{ matrix.hdf5 }}
|
|
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
|
|
- name: Check Cache
|
|
shell: bash -l {0}
|
|
run: ls ${HOME}/environments && ls ${HOME}/environments/${{ matrix.hdf5 }} && ls ${HOME}/environments/${{ matrix.hdf5}}/lib
|
|
|
|
###
|
|
# Configure and build
|
|
###
|
|
|
|
- name: Perform out-of-directory build
|
|
shell: bash -l {0}
|
|
run: |
|
|
mkdir build
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} cmake .. -DENABLE_HDF4=${ENABLE_HDF4} -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DENABLE_DAP=${ENABLE_DAP} -DENABLE_HDF5=${ENABLE_HDF5} -DENABLE_NCZARR=${ENABLE_NCZARR}
|
|
|
|
- name: Print Summary
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
cat libnetcdf.settings
|
|
|
|
- name: Build All
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} make -j 12
|
|
if: ${{ success() }}
|
|
|
|
- name: Run Tests
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest --verbose -j 12 .
|
|
if: ${{ success() }}
|
|
|
|
- name: Verbose Output if CTest Failure
|
|
shell: bash -l {0}
|
|
run: |
|
|
cd build
|
|
LD_LIBRARY_PATH=${LD_LIBRARY_PATH} ctest -j 12 --rerun-failed --output-on-failure -VV
|
|
if: ${{ failure() }}
|
|
|