mirror of
https://github.com/Unidata/netcdf-c.git
synced 2025-01-06 15:34:44 +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.
406 lines
12 KiB
YAML
406 lines
12 KiB
YAML
###
|
|
# 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]
|
|
|
|
jobs:
|
|
|
|
build-deps-osx:
|
|
|
|
runs-on: macos-11
|
|
|
|
strategy:
|
|
matrix:
|
|
hdf5: [ 1.12.2 ]
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
###
|
|
# libhdf5
|
|
###
|
|
- name: Cache libhdf5-${{ runner.os }}-${{ matrix.hdf5 }}
|
|
id: cache-hdf5-osx
|
|
uses: actions/cache@v2
|
|
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 ]
|
|
#hdf5: [ 1.8.21, 1.10.1, 1.10.7, 1.12.2 ]
|
|
use_nc4: [ nc3, nc4 ]
|
|
use_dap: [ dap_off, dap_on ]
|
|
use_nczarr: [ nczarr_off, nczarr_on ]
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
###
|
|
# 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@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: 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 ]
|
|
use_nc4: [ nc3, nc4 ]
|
|
use_dap: [ dap_off, dap_on ]
|
|
use_nczarr: [ nczarr_off, nczarr_on ]
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
###
|
|
# 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@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 .. -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 ]
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
###
|
|
# 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@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: 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
|
|
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 ]
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v2
|
|
|
|
###
|
|
# 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@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 .. -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() }}
|