name: hdf5 dev ctest runs # Controls when the action will run. Triggers the workflow on a call on: workflow_call: inputs: snap_name: description: 'The name in the source tarballs' type: string required: false default: hdfsrc file_base: description: "The common base name of the source tarballs" required: true type: string preset_name: description: "The common base name of the preset configuration name to control the build" required: true type: string use_environ: description: 'Environment to locate files' type: string required: true default: snapshots permissions: contents: read # A workflow run is made up of one or more jobs that can run sequentially or # in parallel jobs: build_and_test_win: # Windows w/ MSVC + CMake # name: "Windows MSVC CTest" runs-on: windows-latest steps: - name: Install Dependencies (Windows) run: choco install ninja - name: Install Dependencies uses: ssciwr/doxygen-install@v1 with: version: "1.10.0" - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.13.0 - name: Set file base name (Windows) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT shell: bash # Get files created by release script - name: Get zip-tarball (Windows) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: zip-tarball path: ${{ github.workspace }} - name: using powershell shell: pwsh run: Get-Location - name: List files for the space (Windows) run: | Get-ChildItem -Path ${{ github.workspace }} Get-ChildItem -Path ${{ runner.workspace }} shell: pwsh - name: Uncompress source (Windows) working-directory: ${{ github.workspace }} run: 7z x ${{ steps.set-file-base.outputs.FILE_BASE }}.zip shell: bash - name: Run ctest (Windows) run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-MSVC --fresh shell: bash - name: Publish binary (Windows) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC/README.md -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-MSVC/* -Destination ${{ runner.workspace }}/build/hdf5/ -Include *.zip cd "${{ runner.workspace }}/build" 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip hdf5 shell: pwsh - name: List files in the space (Windows) run: | Get-ChildItem -Path ${{ github.workspace }} Get-ChildItem -Path ${{ runner.workspace }} shell: pwsh # Save files created by ctest script - name: Save published binary (Windows) uses: actions/upload-artifact@v4 with: name: zip-vs2022_cl-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_linux: # Linux (Ubuntu) w/ gcc + CMake # name: "Ubuntu gcc CMake" runs-on: ubuntu-latest steps: - name: Install CMake Dependencies (Linux) run: | sudo apt-get update sudo apt-get install ninja-build graphviz - name: Install Dependencies uses: ssciwr/doxygen-install@v1 with: version: "1.10.0" - name: Set file base name (Linux) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT # Get files created by release script - name: Get tgz-tarball (Linux) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: tgz-tarball path: ${{ github.workspace }} - name: List files for the space (Linux) run: | ls -l ${{ github.workspace }} ls ${{ runner.workspace }} - name: Uncompress source (Linux) run: tar -zxvf ${{ github.workspace }}/${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz - name: Run ctest (Linux) run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-GNUC --fresh shell: bash - name: Publish binary (Linux) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/README.md ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/*.tar.gz ${{ runner.workspace }}/build/hdf5 cd "${{ runner.workspace }}/build" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz hdf5 shell: bash - name: Publish deb binary (Linux) id: publish-ctest-deb-binary run: | mkdir "${{ runner.workspace }}/builddeb" mkdir "${{ runner.workspace }}/builddeb/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/builddeb/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/builddeb/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/README.md ${{ runner.workspace }}/builddeb/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/*.deb ${{ runner.workspace }}/builddeb/hdf5 cd "${{ runner.workspace }}/builddeb" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz hdf5 shell: bash - name: Publish rpm binary (Linux) id: publish-ctest-rpm-binary run: | mkdir "${{ runner.workspace }}/buildrpm" mkdir "${{ runner.workspace }}/buildrpm/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/buildrpm/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/buildrpm/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/README.md ${{ runner.workspace }}/buildrpm/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/*.rpm ${{ runner.workspace }}/buildrpm/hdf5 cd "${{ runner.workspace }}/buildrpm" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz hdf5 shell: bash - name: List files in the space (Linux) run: | ls ${{ github.workspace }} ls -l ${{ runner.workspace }} # Save files created by ctest script - name: Save published binary (Linux) uses: actions/upload-artifact@v4 with: name: tgz-ubuntu-2204_gcc-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` # Save files created by ctest script - name: Save published binary deb (Linux) uses: actions/upload-artifact@v4 with: name: deb-ubuntu-2204_gcc-binary path: ${{ runner.workspace }}/builddeb/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.deb.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` # Save files created by ctest script - name: Save published binary rpm (Linux) uses: actions/upload-artifact@v4 with: name: rpm-ubuntu-2204_gcc-binary path: ${{ runner.workspace }}/buildrpm/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.rpm.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` # Save doxygen files created by ctest script - name: Save published doxygen (Linux) uses: actions/upload-artifact@v4 with: name: docs-doxygen path: ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC/hdf5lib_docs/html if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_mac: # MacOS w/ Clang + CMake # name: "MacOS Clang CMake" runs-on: macos-13 steps: - name: Install Dependencies (MacOS) run: brew install ninja - name: Install Dependencies uses: ssciwr/doxygen-install@v1 with: version: "1.10.0" - name: Set file base name (MacOS) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT # Get files created by release script - name: Get tgz-tarball (MacOS) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: tgz-tarball path: ${{ github.workspace }} - name: List files for the space (MacOS) run: | ls ${{ github.workspace }} ls ${{ runner.workspace }} - name: Uncompress source (MacOS) run: tar -zxvf ${{ github.workspace }}/${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz # symlinks the compiler executables to a common location - name: Setup GNU Fortran uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: compiler: gcc version: 12 - name: Run ctest (MacOS) id: run-ctest run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-OSX-Clang --fresh shell: bash - name: Publish binary (MacOS) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Clang/README.md ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Clang/*.tar.gz ${{ runner.workspace }}/build/hdf5 cd "${{ runner.workspace }}/build" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-osx12.tar.gz hdf5 shell: bash - name: List files in the space (MacOS) run: | ls ${{ github.workspace }} ls -l ${{ runner.workspace }} # Save files created by ctest script - name: Save published binary (MacOS) uses: actions/upload-artifact@v4 with: name: tgz-osx12-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-osx12.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_S3_linux: # Linux S3 (Ubuntu) w/ gcc + CMake # name: "Ubuntu gcc CMake S3" runs-on: ubuntu-latest steps: - name: Install CMake Dependencies (Linux S3) run: | sudo apt-get update sudo apt-get install ninja-build doxygen graphviz sudo apt install libssl3 libssl-dev libcurl4 libcurl4-openssl-dev - name: Set file base name (Linux S3) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT # Get files created by release script - name: Get tgz-tarball (Linux S3) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: tgz-tarball path: ${{ github.workspace }} - name: List files for the space (Linux S3) run: | ls -l ${{ github.workspace }} ls ${{ runner.workspace }} - name: Uncompress source (Linux S3) run: tar -zxvf ${{ github.workspace }}/${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz - name: Run ctest (Linux S3) run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-GNUC-S3 --fresh shell: bash - name: Publish binary (Linux S3) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC-S3/README.md ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-GNUC-S3/*.tar.gz ${{ runner.workspace }}/build/hdf5 cd "${{ runner.workspace }}/build" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc_s3.tar.gz hdf5 shell: bash - name: List files in the space (Linux S3) run: | ls ${{ github.workspace }} ls -l ${{ runner.workspace }} # Save files created by ctest script - name: Save published binary (Linux S3) uses: actions/upload-artifact@v4 with: name: tgz-ubuntu-2204_gcc_s3-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc_s3.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` ####### intel builds build_and_test_win_intel: # Windows w/ OneAPI + CMake # name: "Windows Intel CTest" runs-on: windows-latest steps: - name: Install Dependencies (Windows_intel) run: choco install ninja - name: add oneAPI to env uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: compiler: intel version: '2023.2' - name: Enable Developer Command Prompt uses: ilammy/msvc-dev-cmd@v1.13.0 - name: Set file base name (Windows_intel) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT shell: bash # Get files created by release script - name: Get zip-tarball (Windows_intel) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: zip-tarball path: ${{ github.workspace }} - name: using powershell shell: pwsh run: Get-Location - name: List files for the space (Windows_intel) run: | Get-ChildItem -Path ${{ github.workspace }} Get-ChildItem -Path ${{ runner.workspace }} shell: pwsh - name: Uncompress source (Windows_intel) working-directory: ${{ github.workspace }} run: 7z x ${{ steps.set-file-base.outputs.FILE_BASE }}.zip shell: bash - name: Run ctest (Windows_intel) with oneapi env: FC: ${{ steps.setup-fortran.outputs.fc }} CC: ${{ steps.setup-fortran.outputs.cc }} CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-win-Intel --fresh shell: pwsh - name: Publish binary (Windows_intel) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Intel/README.md -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Intel/* -Destination ${{ runner.workspace }}/build/hdf5/ -Include *.zip cd "${{ runner.workspace }}/build" 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip hdf5 shell: pwsh - name: List files in the space (Windows_intel) run: | Get-ChildItem -Path ${{ github.workspace }} Get-ChildItem -Path ${{ runner.workspace }} shell: pwsh # Save files created by ctest script - name: Save published binary (Windows_intel) uses: actions/upload-artifact@v4 with: name: zip-vs2022_intel-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_linux_intel: # Linux (Ubuntu) w/ OneAPI + CMake # name: "Ubuntu Intel CMake" runs-on: ubuntu-latest steps: - name: Install CMake Dependencies (Linux_intel) run: | sudo apt-get update sudo apt-get install ninja-build doxygen graphviz - name: add oneAPI to env uses: fortran-lang/setup-fortran@v1 id: setup-fortran with: compiler: intel version: '2023.2' - name: Set file base name (Linux_intel) id: set-file-base run: | FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT if [[ '${{ inputs.use_environ }}' == 'release' ]] then SOURCE_NAME_BASE=$(echo "${{ inputs.snap_name }}") else SOURCE_NAME_BASE=$(echo "hdfsrc") fi echo "SOURCE_BASE=$SOURCE_NAME_BASE" >> $GITHUB_OUTPUT # Get files created by release script - name: Get tgz-tarball (Linux_intel) uses: actions/download-artifact@c850b930e6ba138125429b7e5c93fc707a7f8427 # v4.1.4 with: name: tgz-tarball path: ${{ github.workspace }} - name: List files for the space (Linux_intel) run: | ls -l ${{ github.workspace }} ls ${{ runner.workspace }} - name: Uncompress source (Linux_intel) run: tar -zxvf ${{ github.workspace }}/${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz - name: Run ctest (Linux_intel) env: FC: ${{ steps.setup-fortran.outputs.fc }} CC: ${{ steps.setup-fortran.outputs.cc }} CXX: ${{ steps.setup-fortran.outputs.cxx }} run: | cd "${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}" cmake --workflow --preset=${{ inputs.preset_name }}-Intel --fresh shell: bash - name: Publish binary (Linux_intel) id: publish-ctest-binary run: | mkdir "${{ runner.workspace }}/build" mkdir "${{ runner.workspace }}/build/hdf5" cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/${{ steps.set-file-base.outputs.SOURCE_BASE }}/COPYING_LBNL_HDF5 ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Intel/README.md ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/${{ inputs.preset_name }}-Intel/*.tar.gz ${{ runner.workspace }}/build/hdf5 cd "${{ runner.workspace }}/build" tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz hdf5 shell: bash - name: List files in the space (Linux_intel) run: | ls ${{ github.workspace }} ls -l ${{ runner.workspace }} # Save files created by ctest script - name: Save published binary (Linux_intel) uses: actions/upload-artifact@v4 with: name: tgz-ubuntu-2204_intel-binary path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn`