summaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
authorAllen Byrne <50328838+byrnHDF@users.noreply.github.com>2023-09-18 02:34:42 (GMT)
committerGitHub <noreply@github.com>2023-09-18 02:34:42 (GMT)
commitc82f9a550b4577f1854ca0375fe2a38fee731eb4 (patch)
treee8350da5ff96ebc3871c7ba8baf6a59a63b4c835 /.github
parent44a00ef876ad3e1922847e93feac57c479217fbe (diff)
downloadhdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.zip
hdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.tar.gz
hdf5-c82f9a550b4577f1854ca0375fe2a38fee731eb4.tar.bz2
Convert main.yml CI into callable workflows (#3529)
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.yml4
-rw-r--r--.github/workflows/h5py.yml2
-rw-r--r--.github/workflows/hdfeos5.yml2
-rw-r--r--.github/workflows/intel-auto.yml97
-rw-r--r--.github/workflows/intel-cmake.yml83
-rw-r--r--.github/workflows/linux-icx-auto.yml53
-rw-r--r--.github/workflows/linux-icx.yml68
-rw-r--r--.github/workflows/main-auto-par.yml135
-rw-r--r--.github/workflows/main-auto-spc.yml509
-rw-r--r--.github/workflows/main-auto.yml182
-rw-r--r--.github/workflows/main-cmake.yml255
-rw-r--r--.github/workflows/main.yml646
-rw-r--r--.github/workflows/netcdf.yml4
-rw-r--r--.github/workflows/release-files.yml2
-rw-r--r--.github/workflows/release.yml2
-rw-r--r--.github/workflows/tarball.yml2
22 files changed, 1380 insertions, 774 deletions
diff --git a/.github/workflows/autotools.yml b/.github/workflows/autotools.yml
new file mode 100644
index 0000000..89afa40
--- /dev/null
+++ b/.github/workflows/autotools.yml
@@ -0,0 +1,54 @@
+name: hdf5 dev 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 c0713db..da99e7e 100644
--- a/.github/workflows/cmake-ctest.yml
+++ b/.github/workflows/cmake-ctest.yml
@@ -1,6 +1,6 @@
name: hdf5 dev 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..75180c0
--- /dev/null
+++ b/.github/workflows/cmake.yml
@@ -0,0 +1,46 @@
+name: hdf5 dev 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
index 4535a7a..6756840 100644
--- a/.github/workflows/cve.yml
+++ b/.github/workflows/cve.yml
@@ -27,7 +27,7 @@ jobs:
name: CVE regression
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- name: Install Autotools Dependencies (Linux)
run: |
@@ -40,7 +40,7 @@ jobs:
make
sudo make install
- name: Checkout CVE test repository
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
repository: HDFGroup/cve_hdf5
path: cve_hdf5
diff --git a/.github/workflows/h5py.yml b/.github/workflows/h5py.yml
index 22a896e..1095844 100644
--- a/.github/workflows/h5py.yml
+++ b/.github/workflows/h5py.yml
@@ -16,7 +16,7 @@ jobs:
sudo apt-get update
sudo apt-get install -y gfortran-12
- name: Checkout Spack
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
with:
repository: spack/spack
path: ./spack
diff --git a/.github/workflows/hdfeos5.yml b/.github/workflows/hdfeos5.yml
index fd2d011..5faf74a 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..f5249bd
--- /dev/null
+++ b/.github/workflows/intel-auto.yml
@@ -0,0 +1,97 @@
+name: hdf5 dev 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..7800214
--- /dev/null
+++ b/.github/workflows/intel-cmake.yml
@@ -0,0 +1,83 @@
+name: hdf5 dev 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" \
+ -DBUILD_SZIP_WITH_FETCHCONTENT=ON \
+ -DLIBAEC_USE_LOCALCONTENT=OFF \
+ -DBUILD_ZLIB_WITH_FETCHCONTENT=ON \
+ -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-icx-auto.yml b/.github/workflows/linux-icx-auto.yml
deleted file mode 100644
index 4a2966c..0000000
--- a/.github/workflows/linux-icx-auto.yml
+++ /dev/null
@@ -1,53 +0,0 @@
-name: linux autotools icx
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "6 0 * * *"
-
-permissions:
- contents: read
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - 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
-
- - name: Install oneAPI MKL library
- shell: bash
- run: |
- sudo apt install -y intel-oneapi-mkl-devel
-
- - name: Test parallel
- shell: bash
- run: |
- source /opt/intel/oneapi/setvars.sh
- export PATH=$PATH:/opt/intel/oneapi/mpi/2021.10.0/bin:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
- ./autogen.sh
- ./configure --disable-fortran --disable-parallel CXX="$(which mpiicpc) -cc=$(which icpx)" CC="$(which mpiicc) -cc=$(which icx)" FC="$(which mpiifort) -fc=$(which ifx)" LDFLAGS="-L/opt/intel/oneapi/mpi/2021.10.0/lib -L/opt/intel/oneapi/mpi/2021.10.0/lib/release/"
- make -j
- export SYCL_DEVICE_FILTER=opencl.cpu
- make check -j
- sudo make install
- sudo make uninstall
diff --git a/.github/workflows/linux-icx.yml b/.github/workflows/linux-icx.yml
deleted file mode 100644
index 58615d0..0000000
--- a/.github/workflows/linux-icx.yml
+++ /dev/null
@@ -1,68 +0,0 @@
-name: linux CMake icx
-
-on:
- workflow_dispatch:
- schedule:
- - cron: "6 0 * * *"
-
-permissions:
- contents: read
-
-jobs:
- build:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - 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
-
- - name: install oneAPI MKL library
- shell: bash
- run: |
- sudo apt install -y intel-oneapi-mkl-devel
-
- - name: configure
- shell: bash
- run: |
- source /opt/intel/oneapi/setvars.sh
- export PATH=$PATH:/opt/intel/oneapi/mpi/2021.10.0/bin:/opt/intel/oneapi/compiler/2023.2.1/linux/bin
- cmake -S . -B build \
- -DCMAKE_BUILD_TYPE="RelWithDebInfo" \
- -DCMAKE_INSTALL_PREFIX=install \
- -DHDF5_BUILD_FORTRAN=OFF \
- -DHDF5_ENABLE_PARALLEL=OFF \
- -DHDF5_BUILD_HL_LIB=ON \
- -DCMAKE_CXX_COMPILER=dpcpp \
- -DCMAKE_C_COMPILER=icx \
- -DCMAKE_Fortran_COMPILER=ifx \
- -DMKL_ROOT="/opt/intel/oneapi/mkl/latest" \
- -DTBB_ROOT="/opt/intel/oneapi/tbb/latest" \
- -DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF
-
- - name: build
- shell: bash
- run: |
- source /opt/intel/oneapi/setvars.sh
- cmake --build build
-
- - name: test
- shell: bash
- run: |
- source /opt/intel/oneapi/setvars.sh
- export SYCL_DEVICE_FILTER=opencl.cpu
- ctest --test-dir build --output-on-failure \ No newline at end of file
diff --git a/.github/workflows/main-auto-par.yml b/.github/workflows/main-auto-par.yml
new file mode 100644
index 0000000..5f92836
--- /dev/null
+++ b/.github/workflows/main-auto-par.yml
@@ -0,0 +1,135 @@
+name: hdf5 dev 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 \
+ --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 \
+ --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..825a6de
--- /dev/null
+++ b/.github/workflows/main-auto-spc.yml
@@ -0,0 +1,509 @@
+name: hdf5 dev 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..3ad0399
--- /dev/null
+++ b/.github/workflows/main-auto.yml
@@ -0,0 +1,182 @@
+name: hdf5 dev 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..7327d2a
--- /dev/null
+++ b/.github/workflows/main-cmake.yml
@@ -0,0 +1,255 @@
+name: hdf5 dev 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 }} \
+ -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.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 \
+ -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.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 ad1e4f3..e472b8c 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -27,644 +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: ON
- 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 v1.14 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: v114
- 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)
-
-
- - 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 \
- -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 55a71c3..f386080 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 3a77fe5..f53086e 100644
--- a/.github/workflows/release-files.yml
+++ b/.github/workflows/release-files.yml
@@ -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 8297352..8774331 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/tarball.yml b/.github/workflows/tarball.yml
index fd84f10..5ee0f49 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