Add thread-safe execution support to netcdf-c #929
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
### | |
# Build hdf4, hdf5 dependencies and cache them in a combined directory. | |
# See https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners | |
# for information related to github runners. | |
### | |
name: Run macOS-based netCDF Tests | |
on: [pull_request,workflow_dispatch] | |
concurrency: | |
group: ${{ github.workflow}}-${{ github.head_ref }} | |
cancel-in-progress: true | |
jobs: | |
build-deps-osx: | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
hdf5: [ 1.12.2, 1.14.0 ] | |
steps: | |
- uses: actions/checkout@v3 | |
### | |
# libhdf5 | |
### | |
- name: Cache libhdf5-${{ runner.os }}-${{ matrix.hdf5 }} | |
id: cache-hdf5-osx | |
uses: actions/cache@v3 | |
with: | |
path: ~/environments/${{ matrix.hdf5 }} | |
key: hdf5-${{ runner.os }}-${{ matrix.hdf5 }} | |
- name: Build libhdf5-${{ runner.os}}-${{ matrix.hdf5 }} | |
if: steps.cache-hdf5-osx.outputs.cache-hit != 'true' | |
run: | | |
set -x | |
set -e | |
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 | |
nc-autotools-osx: | |
needs: [ nc-cmake-tests-oneoff-osx, nc-ac-tests-oneoff-osx ] | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
hdf5: [ 1.12.2, 1.14.0 ] | |
use_nc4: [ nc3, nc4 ] | |
use_dap: [ dap_off, dap_on ] | |
use_nczarr: [ nczarr_off, nczarr_on ] | |
steps: | |
- uses: actions/checkout@v3 | |
### | |
# 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-osx | |
uses: actions/cache@v3 | |
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: Install autoconf | |
shell: bash -l {0} | |
run: brew install automake | |
- 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_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-osx: | |
needs: [ nc-cmake-tests-oneoff-osx, nc-ac-tests-oneoff-osx ] | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
hdf5: [ 1.12.2, 1.14.0 ] | |
use_nc4: [ nc3, nc4 ] | |
use_dap: [ dap_off, dap_on ] | |
use_nczarr: [ nczarr_off, nczarr_on ] | |
steps: | |
- uses: actions/checkout@v3 | |
### | |
# 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-osx | |
uses: actions/cache@v3 | |
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 .. -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() }} | |
##### | |
# One-Off Autotools-based tests. | |
##### | |
nc-ac-tests-oneoff-osx: | |
needs: build-deps-osx | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
hdf5: [ 1.12.2, 1.14.0 ] | |
steps: | |
- uses: actions/checkout@v3 | |
### | |
# 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-osx | |
uses: actions/cache@v3 | |
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: Install autoconf | |
shell: bash -l {0} | |
run: brew install automake | |
- 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-hdf5 --enable-dap --disable-dap-remote-tests --disable-xml2 | |
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() }} | |
##### | |
# One-Off CMake-based tests. | |
##### | |
nc-cmake-tests-oneoff-osx: | |
needs: build-deps-osx | |
runs-on: macos-11 | |
strategy: | |
matrix: | |
hdf5: [ 1.12.2, 1.14.0 ] | |
steps: | |
- uses: actions/checkout@v3 | |
### | |
# 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-osx | |
uses: actions/cache@v3 | |
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 .. -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH} -DENABLE_DAP=TRUE -DENABLE_HDF5=TRUE -DENABLE_NCZARR=TRUE -D ENABLE_DAP_LONG_TESTS=TRUE -DENABLE_XML2=FALSE | |
- 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() }} |