summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/autotools.yml54
-rw-r--r--.github/workflows/clang-format-check.yml2
-rw-r--r--.github/workflows/clang-format-fix.yml2
-rw-r--r--.github/workflows/cmake-ctest.yml2
-rw-r--r--.github/workflows/cmake.yml46
-rw-r--r--.github/workflows/codespell.yml2
-rw-r--r--.github/workflows/cve.yml51
-rw-r--r--.github/workflows/daily-build.yml2
-rw-r--r--.github/workflows/hdfeos5.yml2
-rw-r--r--.github/workflows/intel-auto.yml97
-rw-r--r--.github/workflows/intel-cmake.yml81
-rw-r--r--.github/workflows/linux-nvhpc-auto.yml58
-rw-r--r--.github/workflows/linux-nvhpc.yml56
-rw-r--r--.github/workflows/main-auto-par.yml137
-rw-r--r--.github/workflows/main-auto-spc.yml509
-rw-r--r--.github/workflows/main-auto.yml182
-rw-r--r--.github/workflows/main-cmake.yml251
-rw-r--r--.github/workflows/main.yml623
-rw-r--r--.github/workflows/netcdf.yml4
-rw-r--r--.github/workflows/release-files.yml4
-rw-r--r--.github/workflows/release.yml2
-rw-r--r--.github/workflows/scorecard.yml68
-rw-r--r--.github/workflows/tarball.yml2
23 files changed, 1609 insertions, 628 deletions
diff --git a/.github/workflows/autotools.yml b/.github/workflows/autotools.yml
new file mode 100644
index 0000000..ddc1a39
--- /dev/null
+++ b/.github/workflows/autotools.yml
@@ -0,0 +1,54 @@
+name: hdf5 1.14 autools CI
+
+# Controls when the action will run. Triggers the workflow on push or pull request
+on:
+ workflow_call:
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+ call-workflow-special-autotools:
+ name: "Autotools Special Workflows"
+ uses: ./.github/workflows/main-auto-spc.yml
+
+ call-parallel-special-autotools:
+ name: "Autotools Parallel Special Workflows"
+ uses: ./.github/workflows/main-auto-par.yml
+
+ call-debug-thread-autotools:
+ name: "Autotools Debug Thread-Safety Workflows"
+ uses: ./.github/workflows/main-auto.yml
+ with:
+ thread_safety: enable
+ build_mode: "debug"
+
+ call-release-thread-autotools:
+ name: "Autotools Release Thread-Safety Workflows"
+ uses: ./.github/workflows/main-auto.yml
+ with:
+ thread_safety: enable
+ build_mode: "production"
+
+ call-debug-autotools:
+ name: "Autotools Debug Workflows"
+ uses: ./.github/workflows/main-auto.yml
+ with:
+ thread_safety: disable
+ build_mode: "debug"
+
+ call-release-autotools:
+ name: "Autotools Release Workflows"
+ uses: ./.github/workflows/main-auto.yml
+ with:
+ thread_safety: disable
+ build_mode: "production"
+
+ call-release-auto-intel:
+ name: "Autotools Intel Workflows"
+ uses: ./.github/workflows/intel-auto.yml
+ with:
+ build_mode: "production"
diff --git a/.github/workflows/clang-format-check.yml b/.github/workflows/clang-format-check.yml
index 56d2b48..cde27c1 100644
--- a/.github/workflows/clang-format-check.yml
+++ b/.github/workflows/clang-format-check.yml
@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, 'skip-ci')"
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Run clang-format style check for C and Java code
uses: DoozyX/clang-format-lint-action@v0.13
with:
diff --git a/.github/workflows/clang-format-fix.yml b/.github/workflows/clang-format-fix.yml
index 5981118..d701d23 100644
--- a/.github/workflows/clang-format-fix.yml
+++ b/.github/workflows/clang-format-fix.yml
@@ -21,7 +21,7 @@ jobs:
permissions:
contents: write # In order to allow EndBug/add-and-commit to commit changes
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Fix C and Java formatting issues detected by clang-format
uses: DoozyX/clang-format-lint-action@v0.13
with:
diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml
index 3c70954..c647cca 100644
--- a/.github/workflows/cmake-ctest.yml
+++ b/.github/workflows/cmake-ctest.yml
@@ -1,6 +1,6 @@
name: hdf5 1.14 ctest runs
-# Controls when the action will run. Triggers the workflow on a schedule
+# Controls when the action will run. Triggers the workflow on a call
on:
workflow_call:
inputs:
diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml
new file mode 100644
index 0000000..4ca4f68
--- /dev/null
+++ b/.github/workflows/cmake.yml
@@ -0,0 +1,46 @@
+name: hdf5 1.14 cmake CI
+
+# Controls when the action will run. Triggers the workflow on push or pull request
+on:
+ workflow_call:
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+ call-debug-thread-cmake:
+ name: "CMake Debug Thread-Safety Workflows"
+ uses: ./.github/workflows/main-cmake.yml
+ with:
+ thread_safety: true
+ build_mode: "Debug"
+
+ call-release-thread-cmake:
+ name: "CMake Release Thread-Safety Workflows"
+ uses: ./.github/workflows/main-cmake.yml
+ with:
+ thread_safety: true
+ build_mode: "Release"
+
+ call-debug-cmake:
+ name: "CMake Debug Workflows"
+ uses: ./.github/workflows/main-cmake.yml
+ with:
+ thread_safety: false
+ build_mode: "Debug"
+
+ call-release-cmake:
+ name: "CMake Release Workflows"
+ uses: ./.github/workflows/main-cmake.yml
+ with:
+ thread_safety: false
+ build_mode: "Release"
+
+ call-release-cmake-intel:
+ name: "CMake Intel Workflows"
+ uses: ./.github/workflows/intel-cmake.yml
+ with:
+ build_mode: "Release"
diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml
index 5640224..e39af68 100644
--- a/.github/workflows/codespell.yml
+++ b/.github/workflows/codespell.yml
@@ -10,7 +10,7 @@ jobs:
name: Check for spelling errors
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: codespell-project/actions-codespell@master
with:
skip: ./.github/workflows/codespell.yml,./bin/trace,./hl/tools/h5watch/h5watch.c,./tools/test/h5jam/tellub.c,./config/sanitizer/LICENSE,./config/sanitizer/sanitizers.cmake,./tools/test/h5repack/testfiles/*.dat,./test/API/driver,./configure,./bin/ltmain.sh,./bin/depcomp,./bin/config.guess,./bin/config.sub,./autom4te.cache,./m4/libtool.m4,./c++/src/*.html
diff --git a/.github/workflows/cve.yml b/.github/workflows/cve.yml
new file mode 100644
index 0000000..54dc299
--- /dev/null
+++ b/.github/workflows/cve.yml
@@ -0,0 +1,51 @@
+name: cve 1.14
+
+on:
+ workflow_dispatch:
+ push:
+ pull_request:
+ branches: [ hdf5_1_14 ]
+ paths-ignore:
+ - '.github/CODEOWNERS'
+ - '.github/FUNDING.yml'
+ - 'doc/**'
+ - 'release_docs/**'
+ - 'ACKNOWLEDGEMENTS'
+ - 'COPYING**'
+ - '**.md'
+
+# Using concurrency to cancel any in-progress job or run
+concurrency:
+ group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ name: CVE regression
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt update
+ sudo apt install automake autoconf libtool libtool-bin
+ - name: Install HDF5
+ run: |
+ ./autogen.sh
+ ./configure --prefix=/usr/local --disable-tests
+ make
+ sudo make install
+ - name: Checkout CVE test repository
+ uses: actions/checkout@v4
+ with:
+ repository: HDFGroup/cve_hdf5
+ path: cve_hdf5
+ - name: Run regression tests
+ run: |
+ cd cve_hdf5
+ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib"
+ ./test_hdf5_cve.sh /usr/local/bin ./cve_out
diff --git a/.github/workflows/daily-build.yml b/.github/workflows/daily-build.yml
index 6f7655b..fadf6ff 100644
--- a/.github/workflows/daily-build.yml
+++ b/.github/workflows/daily-build.yml
@@ -3,6 +3,8 @@ name: hdf5 1.14 daily build
# Controls when the action will run. Triggers the workflow on a schedule
on:
workflow_dispatch:
+ schedule:
+ - cron: "6 0 * * *"
permissions:
contents: read
diff --git a/.github/workflows/hdfeos5.yml b/.github/workflows/hdfeos5.yml
index 5b071b1..0332c9d 100644
--- a/.github/workflows/hdfeos5.yml
+++ b/.github/workflows/hdfeos5.yml
@@ -27,7 +27,7 @@ jobs:
name: Build hdfeos5
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install Autotools Dependencies (Linux)
run: |
diff --git a/.github/workflows/intel-auto.yml b/.github/workflows/intel-auto.yml
new file mode 100644
index 0000000..ca6b047
--- /dev/null
+++ b/.github/workflows/intel-auto.yml
@@ -0,0 +1,97 @@
+name: hdf5 1.14 autotools icx CI
+
+on:
+ workflow_call:
+ inputs:
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+jobs:
+ Intel_build_and_test:
+ name: "Intel ${{ inputs.build_mode }} -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+ - name: Install Dependencies
+ run: |
+ sudo apt-get update
+ sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
+ - name: Add oneAPI to apt
+ shell: bash
+ run: |
+ cd /tmp
+ wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ sudo add-apt-repository -y "deb https://apt.repos.intel.com/oneapi all main"
+
+ - name: Install oneAPI dpcpp and fortran compiler
+ shell: bash
+ run: |
+ sudo apt update
+ sudo apt install -y intel-oneapi-compiler-dpcpp-cpp
+ sudo apt install -y intel-oneapi-compiler-fortran
+ sudo apt install -y intel-oneapi-mpi-devel
+ sudo apt-get install doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ echo "CC=icx" >> $GITHUB_ENV
+ echo "CXX=icpx" >> $GITHUB_ENV
+ echo "FC=ifx" >> $GITHUB_ENV
+
+ - name: Install oneAPI MKL library
+ shell: bash
+ run: |
+ sudo apt install -y intel-oneapi-mkl-devel
+
+ - name: Autotools Configure
+ shell: bash
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=${{ inputs.build_mode }} \
+ --enable-shared \
+ --disable-fortran
+
+ # BUILD
+ - name: Autotools Build
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+ # NORMAL
+ - name: Autotools Run Tests
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ export SYCL_DEVICE_FILTER=opencl.cpu
+ make check -j2
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ export SYCL_DEVICE_FILTER=opencl.cpu
+ make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ export SYCL_DEVICE_FILTER=opencl.cpu
+ make check-install
+ working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/intel-cmake.yml b/.github/workflows/intel-cmake.yml
new file mode 100644
index 0000000..22db843
--- /dev/null
+++ b/.github/workflows/intel-cmake.yml
@@ -0,0 +1,81 @@
+name: hdf5 1.14 CMake icx CI
+
+# Controls when the action will run. Triggers the workflow on a call
+on:
+ workflow_call:
+ inputs:
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+jobs:
+ Intel_build_and_test:
+ name: "Intel ${{ inputs.build_mode }} -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: add oneAPI to apt
+ shell: bash
+ run: |
+ cd /tmp
+ wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
+ sudo add-apt-repository -y "deb https://apt.repos.intel.com/oneapi all main"
+
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+
+ - name: install oneAPI dpcpp and fortran compiler
+ shell: bash
+ run: |
+ sudo apt update
+ sudo apt install -y intel-oneapi-compiler-dpcpp-cpp
+ sudo apt install -y intel-oneapi-compiler-fortran
+
+ - name: install oneAPI MKL library
+ shell: bash
+ run: |
+ sudo apt install -y intel-oneapi-mkl-devel
+
+ - name: CMake Configure with icx
+ shell: bash
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export PATH=$PATH:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
+ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
+ -DCMAKE_TOOLCHAIN_FILE=config/toolchain/intel.cmake \
+ -DMKL_ROOT="/opt/intel/oneapi/mkl/latest" \
+ -DTBB_ROOT="/opt/intel/oneapi/tbb/latest" \
+ -DLIBAEC_USE_LOCALCONTENT=OFF \
+ -DZLIB_USE_LOCALCONTENT=OFF \
+ -DHDF5_BUILD_FORTRAN=OFF \
+ $GITHUB_WORKSPACE
+
+ # BUILD
+ - name: CMake Build
+ shell: bash
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+ - name: CMake Run Tests
+ shell: bash
+ run: |
+ source /opt/intel/oneapi/setvars.sh
+ export SYCL_DEVICE_FILTER=opencl.cpu
+ ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
+ working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/linux-nvhpc-auto.yml b/.github/workflows/linux-nvhpc-auto.yml
new file mode 100644
index 0000000..fe6653e
--- /dev/null
+++ b/.github/workflows/linux-nvhpc-auto.yml
@@ -0,0 +1,58 @@
+name: linux autotools nvhpc
+
+on:
+ workflow_dispatch:
+ push:
+ pull_request:
+ branches: [ hdf5_1_14 ]
+ paths-ignore:
+ - '.github/CODEOWNERS'
+ - '.github/FUNDING.yml'
+ - 'doc/**'
+ - 'release_docs/**'
+ - 'ACKNOWLEDGEMENTS'
+ - 'COPYING**'
+ - '**.md'
+
+# Using concurrency to cancel any in-progress job or run
+concurrency:
+ group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install System dependencies
+ 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 openssl libtool libtool-bin build-essential
+ - name: Install NVHPC
+ run: |
+ curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
+ echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
+ sudo apt-get update -y
+ sudo apt-get install -y nvhpc-23-7
+ - name: Get Sources
+ uses: actions/checkout@v4
+ - name: Test HDF5
+ env:
+ NPROCS: 2
+ run: |
+ export NVHPCSDK=/opt/nvidia/hpc_sdk
+ export OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++
+ export OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc
+ export OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran
+ export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ export DESTDIR=/tmp
+ ./autogen.sh
+ ./configure CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpicc FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin/mpifort FCFLAGS="-fPIC -fortranlibs" --enable-fortran --enable-shared --enable-parallel
+ cat config.log
+ make -j
+ make check -j
+ make install
+ make uninstall
diff --git a/.github/workflows/linux-nvhpc.yml b/.github/workflows/linux-nvhpc.yml
new file mode 100644
index 0000000..17fa93c
--- /dev/null
+++ b/.github/workflows/linux-nvhpc.yml
@@ -0,0 +1,56 @@
+name: linux CMake nvhpc
+
+on:
+ workflow_dispatch:
+ push:
+ pull_request:
+ branches: [ hdf5_1_14 ]
+ paths-ignore:
+ - '.github/CODEOWNERS'
+ - '.github/FUNDING.yml'
+ - 'doc/**'
+ - 'release_docs/**'
+ - 'ACKNOWLEDGEMENTS'
+ - 'COPYING**'
+ - '**.md'
+
+# Using concurrency to cancel any in-progress job or run
+concurrency:
+ group: ${{ github.workflow }}-${{ github.sha || github.event.pull_request.number }}
+ cancel-in-progress: true
+
+permissions:
+ contents: read
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Install System dependencies
+ 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 openssl libtool libtool-bin build-essential
+ - name: Install NVHPC
+ run: |
+ curl https://developer.download.nvidia.com/hpc-sdk/ubuntu/DEB-GPG-KEY-NVIDIA-HPC-SDK | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg
+ echo 'deb [signed-by=/usr/share/keyrings/nvidia-hpcsdk-archive-keyring.gpg] https://developer.download.nvidia.com/hpc-sdk/ubuntu/amd64 /' | sudo tee /etc/apt/sources.list.d/nvhpc.list
+ sudo apt-get update -y
+ sudo apt-get install -y nvhpc-23-7
+ - name: Get Sources
+ uses: actions/checkout@v4
+ - name: Test HDF5
+ env:
+ FC: nvfortran
+ CC: nvc
+ FCFLAGS: -fPIC
+ run: |
+ export NVHPCSDK=/opt/nvidia/hpc_sdk
+ export OMPI_CXX=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc++
+ export OMPI_CC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvc
+ export OMPI_FC=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin/nvfortran
+ export LD_LIBRARY_PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/cuda/12.2/lib64:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/lib
+ export PATH=/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/comm_libs/openmpi4/bin:/opt/nvidia/hpc_sdk/Linux_x86_64/23.7/compilers/bin:$PATH
+ cmake -B build -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF -DHDF5_ENABLE_PARALLEL:BOOL=ON -DHDF5_BUILD_FORTRAN:BOOL=ON
+ cat build/CMakeCache.txt
+ cmake --build build
+ ctest --test-dir build --output-on-failure
diff --git a/.github/workflows/main-auto-par.yml b/.github/workflows/main-auto-par.yml
new file mode 100644
index 0000000..5c54f02
--- /dev/null
+++ b/.github/workflows/main-auto-par.yml
@@ -0,0 +1,137 @@
+name: hdf5 1.14 autotools CI
+
+# Controls when the action will run. Triggers the workflow on a call
+on:
+ workflow_call:
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+ #
+ # SPECIAL AUTOTOOLS BUILDS
+ #
+ # These do not run tests and are not built into the matrix and instead
+ # become NEW configs as their name would clobber one of the matrix
+ # names (so make sure the names are UNIQUE).
+ #
+
+ build_parallel_debug_werror:
+ name: "gcc DBG parallel -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+ sudo apt install openmpi-bin openmpi-common mpi-default-dev
+ echo "CC=mpicc" >> $GITHUB_ENV
+ echo "FC=mpif90" >> $GITHUB_ENV
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ CFLAGS=-Werror $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --enable-parallel \
+ --enable-subfiling-vfd \
+ --disable-cxx \
+ --disable-fortran \
+ --disable-java \
+ --disable-mirror-vfd \
+ --enable-direct-vfd \
+ --disable-ros3-vfd \
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_parallel_release_werror:
+ name: "gcc REL parallel -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+ sudo apt install openmpi-bin openmpi-common mpi-default-dev
+ echo "CC=mpicc" >> $GITHUB_ENV
+ echo "FC=mpif90" >> $GITHUB_ENV
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ CFLAGS=-Werror $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=production \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --enable-parallel \
+ --enable-subfiling-vfd \
+ --disable-cxx \
+ --disable-fortran \
+ --disable-java \
+ --disable-mirror-vfd \
+ --enable-direct-vfd \
+ --disable-ros3-vfd \
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
diff --git a/.github/workflows/main-auto-spc.yml b/.github/workflows/main-auto-spc.yml
new file mode 100644
index 0000000..4925a18
--- /dev/null
+++ b/.github/workflows/main-auto-spc.yml
@@ -0,0 +1,509 @@
+name: hdf5 1.14 autotools special CI
+
+# Controls when the action will run. Triggers the workflow on a call
+on:
+ workflow_call:
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+ #
+ # SPECIAL AUTOTOOLS BUILDS
+ #
+ # These do not run tests and are not built into the matrix and instead
+ # become NEW configs as their name would clobber one of the matrix
+ # names (so make sure the names are UNIQUE).
+ #
+
+ build_v1_6:
+ name: "gcc DBG v1.6 default API (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v16 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_v1_8:
+ name: "gcc DBG v1.8 default API (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v18 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_v1_10:
+ name: "gcc DBG v1.10 default API (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v110 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_v1_12:
+ name: "gcc DBG v1.12 default API (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v112 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_v1_14:
+ name: "gcc DBG v1.14 default API (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_no_deprecated:
+ name: "gcc no deprecated symbols (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --disable-deprecated-symbols \
+ --with-default-api-version=default \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_debug_werror:
+ name: "gcc DBG -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ CFLAGS=-Werror $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=debug \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --disable-fortran \
+ --enable-java \
+ --disable-mirror-vfd \
+ --enable-direct-vfd \
+ --disable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ build_release_werror:
+ name: "gcc REL -Werror (build only)"
+ runs-on: ubuntu-latest
+ steps:
+ # SETUP
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ - name: Install Autotools Dependencies (Linux)
+ run: |
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ CFLAGS=-Werror $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=production \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --disable-parallel \
+ --enable-cxx \
+ --disable-fortran \
+ --enable-java \
+ --disable-mirror-vfd \
+ --enable-direct-vfd \
+ --disable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
diff --git a/.github/workflows/main-auto.yml b/.github/workflows/main-auto.yml
new file mode 100644
index 0000000..c4f4252
--- /dev/null
+++ b/.github/workflows/main-auto.yml
@@ -0,0 +1,182 @@
+name: hdf5 1.14 autotools CI
+
+# Controls when the action will run. Triggers the workflow on a call
+on:
+ workflow_call:
+ inputs:
+ thread_safety:
+ description: "thread-safety enable/disable"
+ required: true
+ type: string
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+
+ # A workflow that builds the library and runs all the tests
+ # Linux (Ubuntu) w/ gcc + Autotools
+ #
+ Autotools_build_and_test:
+ name: "GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d"
+ # Don't run the action if the commit message says to skip CI
+ if: "!contains(github.event.head_commit.message, 'skip-ci')"
+
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # SETUP
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=${{ inputs.build_mode }} \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --disable-parallel \
+ --${{ inputs.thread_safety }}-threadsafe \
+ --enable-cxx \
+ --enable-fortran \
+ --enable-java \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+ if: ${{ inputs.thread_safety == 'disable' }}
+
+ - name: Autotools Configure (Thread-Safe)
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=${{ inputs.build_mode }} \
+ --enable-shared \
+ --${{ inputs.thread_safety }}-threadsafe \
+ --disable-hl \
+ --disable-parallel \
+ --enable-mirror-vfd \
+ --enable-direct-vfd \
+ --enable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+ if: ${{ inputs.thread_safety == 'enable' }}
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
+
+ # RUN TESTS
+ # NORMAL
+ - name: Autotools Run Tests
+ run: make check -j2
+ working-directory: ${{ runner.workspace }}/build
+ if: ${{ inputs.thread_safety == 'disable' }}
+
+ # THREAD-SAFE
+ - name: Autotools Run Thread-Safe Tests
+ run: |
+ cd test
+ ./ttsafe
+ working-directory: ${{ runner.workspace }}/build
+ if: ${{ inputs.thread_safety == 'enable' }}
+
+ # INSTALL (note that this runs even when we don't run the tests)
+ - name: Autotools Install
+ run: make install
+ working-directory: ${{ runner.workspace }}/build
+
+ - name: Autotools Verify Install
+ run: make check-install
+ working-directory: ${{ runner.workspace }}/build
+
+ #
+ # The GitHub runners are inadequate for running parallel HDF5 tests,
+ # so we catch most issues in daily testing. What we have here is just
+ # a compile check to make sure nothing obvious is broken.
+ # A workflow that builds the library
+ # Parallel Linux (Ubuntu) w/ gcc + Autotools
+ #
+ Autotools_build_parallel:
+ name: "Parallel GCC-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}d"
+ # Don't run the action if the commit message says to skip CI
+ if: "!contains(github.event.head_commit.message, 'skip-ci')"
+
+ # The type of runner that the job will run on
+ runs-on: ubuntu-latest
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+ # SETUP
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ sudo apt install automake autoconf libtool libtool-bin
+ sudo apt install libaec0 libaec-dev
+ sudo apt install openmpi-bin openmpi-common mpi-default-dev
+ echo "CC=mpicc" >> $GITHUB_ENV
+ echo "FC=mpif90" >> $GITHUB_ENV
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ # AUTOTOOLS CONFIGURE
+ - name: Autotools Configure
+ run: |
+ sh ./autogen.sh
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ CC=mpicc $GITHUB_WORKSPACE/configure \
+ --enable-build-mode=${{ inputs.build_mode }} \
+ --enable-deprecated-symbols \
+ --with-default-api-version=v114 \
+ --enable-shared \
+ --enable-parallel \
+ --disable-cxx \
+ --enable-fortran \
+ --disable-java \
+ --disable-mirror-vfd \
+ --disable-direct-vfd \
+ --disable-ros3-vfd \
+ --with-szlib=yes
+ shell: bash
+
+ # BUILD
+ - name: Autotools Build
+ run: make -j3
+ working-directory: ${{ runner.workspace }}/build
diff --git a/.github/workflows/main-cmake.yml b/.github/workflows/main-cmake.yml
new file mode 100644
index 0000000..bf53c41
--- /dev/null
+++ b/.github/workflows/main-cmake.yml
@@ -0,0 +1,251 @@
+name: hdf5 1.14 CMake CI
+
+# Controls when the action will run. Triggers the workflow on a call
+on:
+ workflow_call:
+ inputs:
+ thread_safety:
+ description: "thread-safety on/off"
+ required: true
+ type: boolean
+ build_mode:
+ description: "release vs. debug build"
+ required: true
+ type: string
+
+permissions:
+ contents: read
+
+# A workflow run is made up of one or more jobs that can run sequentially or
+# in parallel. We just have one job, but the matrix items defined below will
+# run in parallel.
+jobs:
+
+ # A workflow that builds the library and runs all the tests
+ CMake_build_and_test:
+ strategy:
+ # The current matrix has one dimensions:
+ #
+ # * config name
+ #
+ # Most configuration information is added via the 'include' mechanism,
+ # which will append the key-value pairs in the configuration where the
+ # names match.
+ matrix:
+ name:
+ - "Windows MSVC"
+ - "Ubuntu gcc"
+ - "MacOS Clang"
+
+ # This is where we list the bulk of the options for each configuration.
+ # The key-value pair values are usually appropriate for being CMake or
+ # Autotools configure values, so be aware of that.
+
+ include:
+
+ # Windows w/ MSVC + CMake
+ #
+ # No Fortran, parallel, or VFDs that rely on POSIX things
+ - name: "Windows MSVC"
+ os: windows-2022
+ toolchain: ""
+ cpp: ON
+ fortran: OFF
+ java: ON
+ docs: OFF
+ libaecfc: ON
+ localaec: OFF
+ zlibfc: ON
+ localzlib: OFF
+ parallel: OFF
+ mirror_vfd: OFF
+ direct_vfd: OFF
+ ros3_vfd: OFF
+ generator: "-G \"Visual Studio 17 2022\" -A x64"
+ run_tests: true
+
+ # Linux (Ubuntu) w/ gcc + CMake
+ #
+ # We might think about adding Clang, but MacOS already tests that
+ # so it's not critical
+ - name: "Ubuntu gcc"
+ os: ubuntu-latest
+ cpp: ON
+ fortran: ON
+ java: ON
+ docs: ON
+ libaecfc: ON
+ localaec: OFF
+ zlibfc: ON
+ localzlib: OFF
+ parallel: OFF
+ mirror_vfd: ON
+ direct_vfd: ON
+ ros3_vfd: ON
+ toolchain: "config/toolchain/gcc.cmake"
+ generator: "-G Ninja"
+ run_tests: true
+
+
+ # MacOS w/ Clang + CMake
+ #
+ # We could also build with the Autotools via brew installing them,
+ # but that seems unnecessary
+ - name: "MacOS Clang"
+ os: macos-13
+ cpp: ON
+ fortran: OFF
+ java: ON
+ docs: OFF
+ libaecfc: ON
+ localaec: OFF
+ zlibfc: ON
+ localzlib: OFF
+ parallel: OFF
+ mirror_vfd: ON
+ direct_vfd: OFF
+ ros3_vfd: OFF
+ toolchain: "config/toolchain/clang.cmake"
+ generator: "-G Ninja"
+ run_tests: true
+
+
+
+ # Sets the job's name from the properties
+ name: "${{ matrix.name }}-${{ inputs.build_mode }}-TS=${{ inputs.thread_safety }}"
+
+ # Don't run the action if the commit message says to skip CI
+ if: "!contains(github.event.head_commit.message, 'skip-ci')"
+
+ # The type of runner that the job will run on
+ runs-on: ${{ matrix.os }}
+
+ # Steps represent a sequence of tasks that will be executed as part of the job
+ steps:
+
+ #
+ # SETUP
+ #
+
+ #Useful for debugging
+ - name: Dump matrix context
+ run: echo '${{ toJSON(matrix) }}'
+
+ # Only CMake need ninja-build, but we just install it unilaterally
+ # libssl, etc. are needed for the ros3 VFD
+ - name: Install Linux Dependencies
+ run: |
+ sudo apt update
+ sudo apt-get install ninja-build doxygen graphviz
+ sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
+ sudo apt install gcc-12 g++-12 gfortran-12
+ echo "CC=gcc-12" >> $GITHUB_ENV
+ echo "CXX=g++-12" >> $GITHUB_ENV
+ echo "FC=gfortran-12" >> $GITHUB_ENV
+ if: matrix.os == 'ubuntu-latest'
+
+ # CMake gets libaec from fetchcontent
+
+ - name: Install Dependencies (Windows)
+ run: choco install ninja
+ if: matrix.os == 'windows-latest'
+
+ - name: Install Dependencies (macOS)
+ run: brew install ninja doxygen
+ if: matrix.os == 'macos-13'
+
+ - name: Set environment for MSVC (Windows)
+ run: |
+ # Set these environment variables so CMake picks the correct compiler
+ echo "CXX=cl.exe" >> $GITHUB_ENV
+ echo "CC=cl.exe" >> $GITHUB_ENV
+ if: matrix.os == 'windows-latest'
+
+ # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
+ - name: Get Sources
+ uses: actions/checkout@v4
+
+ #
+ # CMAKE CONFIGURE
+ #
+
+ - name: CMake Configure
+ run: |
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
+ ${{ matrix.generator }} \
+ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
+ -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \
+ -DBUILD_SHARED_LIBS=ON \
+ -DHDF5_ENABLE_ALL_WARNINGS=ON \
+ -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \
+ -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} \
+ -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} \
+ -DHDF5_BUILD_JAVA=${{ matrix.java }} \
+ -DHDF5_BUILD_DOC=${{ matrix.docs }} \
+ -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \
+ -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \
+ -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \
+ -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \
+ -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \
+ $GITHUB_WORKSPACE
+ shell: bash
+ if: "! (matrix.thread_safety)"
+
+
+ - name: CMake Configure (Thread-Safe)
+ run: |
+ mkdir "${{ runner.workspace }}/build"
+ cd "${{ runner.workspace }}/build"
+ cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
+ ${{ matrix.generator }} \
+ -DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
+ -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \
+ -DBUILD_SHARED_LIBS=ON \
+ -DHDF5_ENABLE_ALL_WARNINGS=ON \
+ -DHDF5_ENABLE_THREADSAFE:BOOL=ON \
+ -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \
+ -DHDF5_BUILD_CPP_LIB:BOOL=OFF \
+ -DHDF5_BUILD_FORTRAN:BOOL=OFF \
+ -DHDF5_BUILD_JAVA:BOOL=OFF \
+ -DHDF5_BUILD_HL_LIB:BOOL=OFF \
+ -DHDF5_BUILD_DOC=OFF \
+ -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \
+ -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \
+ -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \
+ -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \
+ -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \
+ $GITHUB_WORKSPACE
+ shell: bash
+ if: (matrix.thread_safety)
+
+ #
+ # BUILD
+ #
+
+ - name: CMake Build
+ run: cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
+ working-directory: ${{ runner.workspace }}/build
+
+ #
+ # RUN TESTS
+ #
+
+ # NORMAL
+
+ - name: CMake Run Tests
+ run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
+ working-directory: ${{ runner.workspace }}/build
+ if: (matrix.run_tests) && ! (matrix.thread_safety)
+
+ # THREAD-SAFE
+
+ - name: CMake Run Thread-Safe Tests
+ run: ctest . --parallel 2 -C ${{ inputs.build_mode }} -V -R ttsafe
+ working-directory: ${{ runner.workspace }}/build
+ if: (matrix.run_tests) && (matrix.thread_safety)
+
+ #
+ # INSTALL (note that this runs even when we don't run the tests)
+ #
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 9944784..e8921bd 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -27,621 +27,10 @@ permissions:
# in parallel. We just have one job, but the matrix items defined below will
# run in parallel.
jobs:
+ workflow-autotools:
+ name: "Autotools Workflows"
+ uses: ./.github/workflows/autotools.yml
- # A workflow that builds the library and runs all the tests
- build_and_test:
-
- strategy:
-
- # The current matrix has three dimensions:
- #
- # * config name
- # * thread-safety on/off
- # * release vs. debug build
- #
- # Most configuration information is added via the 'include' mechanism,
- # which will append the key-value pairs in the configuration where the
- # names match.
-
- matrix:
-
- name:
- - "Windows MSVC CMake"
- - "Ubuntu gcc CMake"
- - "Ubuntu gcc Autotools"
- - "Ubuntu gcc Autotools parallel (build only)"
- - "MacOS Clang CMake"
-
- thread_safety:
- - enabled: true
- text: " TS"
- - enabled: false
- text: ""
-
- build_mode:
- - text: " REL"
- cmake: "Release"
- autotools: "production"
- - text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- # This is where we list the bulk of the options for each configuration.
- # The key-value pair values are usually appropriate for being CMake or
- # Autotools configure values, so be aware of that.
-
- include:
-
- # Windows w/ MSVC + CMake
- #
- # No Fortran, parallel, or VFDs that rely on POSIX things
- - name: "Windows MSVC CMake"
- os: windows-2022
- toolchain: ""
- cpp: ON
- fortran: OFF
- java: ON
- docs: OFF
- libaecfc: ON
- localaec: OFF
- zlibfc: ON
- localzlib: OFF
- parallel: OFF
- mirror_vfd: OFF
- direct_vfd: OFF
- ros3_vfd: OFF
- generator: "-G \"Visual Studio 17 2022\" -A x64"
- run_tests: true
-
- # Linux (Ubuntu) w/ gcc + CMake
- #
- # We might think about adding Clang, but MacOS already tests that
- # so it's not critical
- - name: "Ubuntu gcc CMake"
- os: ubuntu-latest
- cpp: ON
- fortran: ON
- java: ON
- docs: ON
- libaecfc: ON
- localaec: OFF
- zlibfc: ON
- localzlib: OFF
- parallel: OFF
- mirror_vfd: ON
- direct_vfd: ON
- ros3_vfd: OFF
- toolchain: "config/toolchain/gcc.cmake"
- generator: "-G Ninja"
- run_tests: true
-
- # Linux (Ubuntu) w/ gcc + Autotools
- #
- # Keep this identical to the CMake configs. Note the difference in
- # the values.
- - name: "Ubuntu gcc Autotools"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: enable
- default_api: v114
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: true
-
- # Parallel Linux (Ubuntu) w/ gcc + Autotools
- #
- # The GitHub runners are inadequate for running parallel HDF5 tests,
- # so we catch most issues in daily testing. What we have here is just
- # a compile check to make sure nothing obvious is broken.
- - name: "Ubuntu gcc Autotools parallel (build only)"
- os: ubuntu-latest
- cpp: disable
- fortran: enable
- java: disable
- docs: disable
- parallel: enable
- mirror_vfd: disable
- direct_vfd: disable
- ros3_vfd: disable
- deprec_sym: enable
- default_api: v114
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: "CC=mpicc"
- run_tests: false
-
- # MacOS w/ Clang + CMake
- #
- # We could also build with the Autotools via brew installing them,
- # but that seems unnecessary
- - name: "MacOS Clang CMake"
- os: macos-13
- cpp: ON
- fortran: OFF
- java: ON
- docs: OFF
- libaecfc: ON
- localaec: OFF
- zlibfc: ON
- localzlib: OFF
- parallel: OFF
- mirror_vfd: ON
- direct_vfd: OFF
- ros3_vfd: OFF
- toolchain: "config/toolchain/clang.cmake"
- generator: "-G Ninja"
- run_tests: true
-
-
- #
- # SPECIAL AUTOTOOLS BUILDS
- #
- # These do not run tests and are not built into the matrix and instead
- # become NEW configs as their name would clobber one of the matrix
- # names (so make sure the names are UNIQUE).
- #
-
- - name: "Ubuntu gcc Autotools v1.6 default API (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: enable
- default_api: v16
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- - name: "Ubuntu gcc Autotools v1.8 default API (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: enable
- default_api: v18
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- - name: "Ubuntu gcc Autotools v1.10 default API (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: enable
- default_api: v110
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- - name: "Ubuntu gcc Autotools v1.12 default API (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: enable
- default_api: v112
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- - name: "Ubuntu gcc Autotools no deprecated symbols (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: enable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: enable
- direct_vfd: enable
- ros3_vfd: enable
- deprec_sym: disable
- default_api: default
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: ""
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- # Debug -Werror
- - name: "Ubuntu gcc Autotools -Werror (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: disable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: disable
- direct_vfd: enable
- ros3_vfd: disable
- deprec_sym: enable
- default_api: v114
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: "CFLAGS=-Werror"
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- # Production/Release -Werror
- - name: "Ubuntu gcc Autotools -Werror (build only)"
- os: ubuntu-latest
- cpp: enable
- fortran: disable
- java: enable
- docs: disable
- parallel: disable
- mirror_vfd: disable
- direct_vfd: enable
- ros3_vfd: disable
- deprec_sym: enable
- default_api: v114
- szip: yes
- toolchain: ""
- generator: "autogen"
- flags: "CFLAGS=-Werror"
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " REL"
- cmake: "Release"
- autotools: "production"
-
- # Parallel Debug -Werror
- - name: "Ubuntu gcc Autotools parallel -Werror (build only)"
- os: ubuntu-latest
- cpp: disable
- fortran: disable
- java: disable
- docs: disable
- parallel: enable
- mirror_vfd: disable
- direct_vfd: enable
- ros3_vfd: disable
- deprec_sym: enable
- default_api: v114
- toolchain: ""
- generator: "autogen"
- flags: "CFLAGS=-Werror"
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " DBG"
- cmake: "Debug"
- autotools: "debug"
-
- # Parallel production/release -Werror
- - name: "Ubuntu gcc Autotools parallel -Werror (build only)"
- os: ubuntu-latest
- cpp: disable
- fortran: disable
- java: disable
- docs: disable
- parallel: enable
- mirror_vfd: disable
- direct_vfd: enable
- ros3_vfd: disable
- deprec_sym: enable
- default_api: v114
- toolchain: ""
- generator: "autogen"
- flags: "CFLAGS=-Werror"
- run_tests: false
- thread_safety:
- enabled: false
- text: ""
- build_mode:
- text: " REL"
- cmake: "Release"
- autotools: "production"
-
- # Sets the job's name from the properties
- name: "${{ matrix.name }}${{ matrix.build_mode.text }}${{ matrix.thread_safety.text }}"
-
- # Don't run the action if the commit message says to skip CI
- if: "!contains(github.event.head_commit.message, 'skip-ci')"
-
- # The type of runner that the job will run on
- runs-on: ${{ matrix.os }}
-
- # Steps represent a sequence of tasks that will be executed as part of the job
- steps:
-
- #
- # SETUP
- #
-
- #Useful for debugging
- - name: Dump matrix context
- run: echo '${{ toJSON(matrix) }}'
-
- # Only CMake need ninja-build, but we just install it unilaterally
- # libssl, etc. are needed for the ros3 VFD
- - name: Install Linux Dependencies
- run: |
- sudo apt update
- sudo apt-get install ninja-build doxygen graphviz
- sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev
- sudo apt install gcc-12 g++-12 gfortran-12
- echo "CC=gcc-12" >> $GITHUB_ENV
- echo "CXX=g++-12" >> $GITHUB_ENV
- echo "FC=gfortran-12" >> $GITHUB_ENV
- if: matrix.os == 'ubuntu-latest'
-
- # CMake gets libaec from fetchcontent
- - name: Install Autotools Dependencies (Linux)
- run: |
- sudo apt install automake autoconf libtool libtool-bin
- sudo apt install libaec0 libaec-dev
- if: (matrix.generator == 'autogen')
-
- - name: Install Autotools Dependencies (Linux, parallel)
- run: |
- sudo apt install openmpi-bin openmpi-common mpi-default-dev
- echo "CC=mpicc" >> $GITHUB_ENV
- echo "FC=mpif90" >> $GITHUB_ENV
- if: (matrix.generator == 'autogen') && (matrix.parallel == 'enable')
-
- - name: Install Dependencies (Windows)
- run: choco install ninja
- if: matrix.os == 'windows-latest'
-
- - name: Install Dependencies (macOS)
- run: brew install ninja doxygen
- if: matrix.os == 'macos-13'
-
- - name: Set environment for MSVC (Windows)
- run: |
- # Set these environment variables so CMake picks the correct compiler
- echo "CXX=cl.exe" >> $GITHUB_ENV
- echo "CC=cl.exe" >> $GITHUB_ENV
- if: matrix.os == 'windows-latest'
-
- # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- - name: Get Sources
- uses: actions/checkout@v3
-
- #
- # AUTOTOOLS CONFIGURE
- #
-
- - name: Autotools Configure
- run: |
- sh ./autogen.sh
- mkdir "${{ runner.workspace }}/build"
- cd "${{ runner.workspace }}/build"
- ${{ matrix.flags }} $GITHUB_WORKSPACE/configure \
- --enable-build-mode=${{ matrix.build_mode.autotools }} \
- --${{ matrix.deprec_sym }}-deprecated-symbols \
- --with-default-api-version=${{ matrix.default_api }} \
- --enable-shared \
- --${{ matrix.parallel }}-parallel \
- --${{ matrix.cpp }}-cxx \
- --${{ matrix.fortran }}-fortran \
- --${{ matrix.java }}-java \
- --${{ matrix.mirror_vfd }}-mirror-vfd \
- --${{ matrix.direct_vfd }}-direct-vfd \
- --${{ matrix.ros3_vfd }}-ros3-vfd \
- --with-szlib=${{ matrix.szip }}
- shell: bash
- if: (matrix.generator == 'autogen') && ! (matrix.thread_safety.enabled)
-
- - name: Autotools Configure (Thread-Safe)
- run: |
- sh ./autogen.sh
- mkdir "${{ runner.workspace }}/build"
- cd "${{ runner.workspace }}/build"
- ${{ matrix.flags }} $GITHUB_WORKSPACE/configure \
- --enable-build-mode=${{ matrix.build_mode.autotools }} \
- --enable-shared \
- --enable-threadsafe \
- --disable-hl \
- --${{ matrix.parallel }}-parallel \
- --${{ matrix.mirror_vfd }}-mirror-vfd \
- --${{ matrix.direct_vfd }}-direct-vfd \
- --${{ matrix.ros3_vfd }}-ros3-vfd \
- --with-szlib=${{ matrix.szip }}
- shell: bash
- if: (matrix.generator == 'autogen') && (matrix.thread_safety.enabled)
-
- #
- # CMAKE CONFIGURE
- #
-
- - name: CMake Configure
- run: |
- mkdir "${{ runner.workspace }}/build"
- cd "${{ runner.workspace }}/build"
- cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
- ${{ matrix.generator }} \
- -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} \
- -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \
- -DBUILD_SHARED_LIBS=ON \
- -DHDF5_ENABLE_ALL_WARNINGS=ON \
- -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \
- -DHDF5_BUILD_CPP_LIB:BOOL=${{ matrix.cpp }} \
- -DHDF5_BUILD_FORTRAN=${{ matrix.fortran }} \
- -DHDF5_BUILD_JAVA=${{ matrix.java }} \
- -DHDF5_BUILD_DOC=${{ matrix.docs }} \
- -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} \
- -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \
- -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} \
- -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \
- -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \
- -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \
- -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \
- $GITHUB_WORKSPACE
- shell: bash
- if: (matrix.generator != 'autogen') && ! (matrix.thread_safety.enabled)
-
-
- # NOTE: Windows does not support static + thread-safe
- - name: CMake Configure (Thread-Safe)
- run: |
- mkdir "${{ runner.workspace }}/build"
- cd "${{ runner.workspace }}/build"
- cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake \
- ${{ matrix.generator }} \
- -DCMAKE_BUILD_TYPE=${{ matrix.build_mode.cmake }} \
- -DCMAKE_TOOLCHAIN_FILE=${{ matrix.toolchain }} \
- -DBUILD_SHARED_LIBS=ON \
- -DBUILD_STATIC_LIBS=OFF \
- -DHDF5_ENABLE_ALL_WARNINGS=ON \
- -DHDF5_ENABLE_THREADSAFE:BOOL=ON \
- -DHDF5_ENABLE_PARALLEL:BOOL=${{ matrix.parallel }} \
- -DHDF5_BUILD_CPP_LIB:BOOL=OFF \
- -DHDF5_BUILD_FORTRAN:BOOL=OFF \
- -DHDF5_BUILD_JAVA:BOOL=OFF \
- -DHDF5_BUILD_HL_LIB:BOOL=OFF \
- -DHDF5_BUILD_DOC=OFF \
- -DBUILD_SZIP_WITH_FETCHCONTENT=${{ matrix.libaecfc }} \
- -DLIBAEC_USE_LOCALCONTENT=${{ matrix.localaec }} \
- -DBUILD_ZLIB_WITH_FETCHCONTENT=${{ matrix.zlibfc }} \
- -DZLIB_USE_LOCALCONTENT=${{ matrix.localzlib }} \
- -DHDF5_ENABLE_MIRROR_VFD:BOOL=${{ matrix.mirror_vfd }} \
- -DHDF5_ENABLE_DIRECT_VFD:BOOL=${{ matrix.direct_vfd }} \
- -DHDF5_ENABLE_ROS3_VFD:BOOL=${{ matrix.ros3_vfd }} \
- $GITHUB_WORKSPACE
- shell: bash
- if: (matrix.generator != 'autogen') && (matrix.thread_safety.enabled)
-
- #
- # BUILD
- #
-
- - name: Autotools Build
- run: make -j3
- working-directory: ${{ runner.workspace }}/build
- if: matrix.generator == 'autogen'
-
- - name: CMake Build
- run: cmake --build . --parallel 3 --config ${{ matrix.build_mode.cmake }}
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator != 'autogen')
-
- #
- # RUN TESTS
- #
-
- # NORMAL
-
- - name: Autotools Run Tests
- run: make check -j2
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator == 'autogen') && (matrix.run_tests) && ! (matrix.thread_safety.enabled)
-
- - name: CMake Run Tests
- run: ctest . --parallel 2 -C ${{ matrix.build_mode.cmake }} -V
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator != 'autogen') && (matrix.run_tests) && ! (matrix.thread_safety.enabled)
-
- # THREAD-SAFE
-
- - name: Autotools Run Thread-Safe Tests
- run: |
- cd test
- ./ttsafe
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator == 'autogen') && (matrix.run_tests) && (matrix.thread_safety.enabled)
-
- - name: CMake Run Thread-Safe Tests
- run: ctest . --parallel 2 -C ${{ matrix.build_mode.cmake }} -V -R ttsafe
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator != 'autogen') && (matrix.run_tests) && (matrix.thread_safety.enabled)
-
- #
- # INSTALL (note that this runs even when we don't run the tests)
- #
-
- - name: Autotools Install
- run: make install
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator == 'autogen')
-
- - name: Autotools Verify Install
- run: make check-install
- working-directory: ${{ runner.workspace }}/build
- if: (matrix.generator == 'autogen')
+ workflow-cmake:
+ name: "CMake Workflows"
+ uses: ./.github/workflows/cmake.yml
diff --git a/.github/workflows/netcdf.yml b/.github/workflows/netcdf.yml
index a7c9923..5dd3a66 100644
--- a/.github/workflows/netcdf.yml
+++ b/.github/workflows/netcdf.yml
@@ -31,7 +31,7 @@ jobs:
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 openssl libtool libtool-bin
- name: Checkout HDF5
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
- name: Install HDF5
run: |
./autogen.sh
@@ -39,7 +39,7 @@ jobs:
make -j
sudo make install -j
- name: Checkout netCDF
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
repository: unidata/netcdf-c
path: netcdf-c
diff --git a/.github/workflows/release-files.yml b/.github/workflows/release-files.yml
index 4473b42..c80526a 100644
--- a/.github/workflows/release-files.yml
+++ b/.github/workflows/release-files.yml
@@ -1,4 +1,4 @@
-name: hdf5 1.14 release
+name: hdf5 1.14 release-files
# Controls when the action will run. Triggers the workflow on a schedule
on:
@@ -40,7 +40,7 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
fetch-depth: 0
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 138fe00..62a8778 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -50,7 +50,7 @@ jobs:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: hdfsrc
diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml
new file mode 100644
index 0000000..2803e7f
--- /dev/null
+++ b/.github/workflows/scorecard.yml
@@ -0,0 +1,68 @@
+# This workflow uses actions that are not certified by GitHub. They are provided
+# by a third-party and are governed by separate terms of service, privacy
+# policy, and support documentation.
+
+name: Scorecard supply-chain security
+on:
+ # For Branch-Protection check. Only the default branch is supported. See
+ # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection
+ branch_protection_rule:
+ push:
+ branches: [ "hdf5_1_14" ]
+
+# Declare default permissions as read only.
+permissions: read-all
+
+jobs:
+ analysis:
+ name: Scorecard analysis
+ runs-on: ubuntu-latest
+ permissions:
+ # Needed to upload the results to code-scanning dashboard.
+ security-events: write
+ # Needed to publish results and get a badge (see publish_results below).
+ id-token: write
+ # Uncomment the permissions below if installing in a private repository.
+ # contents: read
+ # actions: read
+
+ steps:
+ - name: "Checkout code"
+ uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0
+ with:
+ persist-credentials: false
+
+ - name: "Run analysis"
+ uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2
+ with:
+ results_file: results.sarif
+ results_format: sarif
+ # (Optional) "write" PAT token. Uncomment the `repo_token` line below if:
+ # - you want to enable the Branch-Protection check on a *public* repository, or
+ # - you are installing Scorecard on a *private* repository
+ # To create the PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-pat.
+ # repo_token: ${{ secrets.SCORECARD_TOKEN }}
+
+ # Public repositories:
+ # - Publish results to OpenSSF REST API for easy access by consumers
+ # - Allows the repository to include the Scorecard badge.
+ # - See https://github.com/ossf/scorecard-action#publishing-results.
+ # For private repositories:
+ # - `publish_results` will always be set to `false`, regardless
+ # of the value entered here.
+ publish_results: true
+
+ # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
+ # format to the repository Actions tab.
+ - name: "Upload artifact"
+ uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0
+ with:
+ name: SARIF file
+ path: results.sarif
+ retention-days: 5
+
+ # Upload the results to GitHub's code scanning dashboard.
+ - name: "Upload to code-scanning"
+ uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4
+ with:
+ sarif_file: results.sarif
diff --git a/.github/workflows/tarball.yml b/.github/workflows/tarball.yml
index 0bc2100..d6c1298 100644
--- a/.github/workflows/tarball.yml
+++ b/.github/workflows/tarball.yml
@@ -83,7 +83,7 @@ jobs:
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
path: hdfsrc