summaryrefslogtreecommitdiffstats
path: root/.github/workflows/main.yml
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/workflows/main.yml
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/workflows/main.yml')
-rw-r--r--.github/workflows/main.yml646
1 files changed, 6 insertions, 640 deletions
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