Merge branch 'docs_v0.7.0' into docs_stable #532
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: cmake-build | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| pull_request: | |
| branches: | |
| - master | |
| workflow_dispatch: | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| ubuntu: | |
| strategy: | |
| matrix: | |
| shared: [shared, static] | |
| boost: [boost, stdfs] | |
| mpi: [ | |
| # mpi, | |
| serial | |
| ] | |
| profile: [ | |
| gcc11, | |
| clang14-libc++, | |
| clang14-libstdc++ | |
| ] | |
| runs-on: ubuntu-22.04 | |
| # container: | |
| # image: ${{ matrix.image }} | |
| # options: '--user=root' | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set environment variables | |
| run: | | |
| bash .github/workflows/set_env_vars.sh \ | |
| ${{ matrix.shared }} \ | |
| ${{ matrix.boost }} \ | |
| ${{ matrix.mpi }} \ | |
| ${{ matrix.profile }} | |
| - name: Install MPI prerequisites | |
| if: ${{ matrix.mpi == 'mpi' }} | |
| run: | | |
| apt-get update | |
| apt-get install -y --no-install-recommends ssh | |
| - name: Install and configure conan | |
| run: | | |
| pip install --upgrade conan | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/${{ matrix.profile }} \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan profile detect | |
| conan remove -c zlib/* | |
| conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock | |
| conan lock create conanfile.py ${CONAN_ARGS} --build missing | |
| - name: cache conan dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.conan/data | |
| key: conan-${{ matrix.profile }}-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }} | |
| restore-keys: | | |
| conan-${{ matrix.profile }}-${{ hashfiles('base.lock') }} | |
| conan-${{ matrix.profile }} | |
| - name: install conan dependencies | |
| run: | | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/${{ matrix.profile }} \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan remove -c zlib/* | |
| conan install . ${CONAN_ARGS} \ | |
| --output-folder build \ | |
| --lockfile conan.lock \ | |
| --build missing \ | |
| --update | |
| - name: build with cmake | |
| run: | | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/${{ matrix.profile }} \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan build . ${CONAN_ARGS} \ | |
| --lockfile conan.lock \ | |
| --output-folder build | |
| - name: run tests | |
| run: | | |
| cd build | |
| ctest --extra-verbose --no-tests=error | |
| windows-2022: | |
| strategy: | |
| matrix: | |
| shared: [ | |
| "shared", | |
| "static" | |
| ] | |
| boost: [ | |
| "boost", | |
| "stdfs" | |
| ] | |
| runs-on: windows-2022 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Add MSVC to PATH | |
| uses: ilammy/msvc-dev-cmd@v1 | |
| - name: Set environment variables | |
| run: | | |
| bash .github/workflows/set_env_vars.sh \ | |
| ${{ matrix.shared }} \ | |
| ${{ matrix.boost }} | |
| - name: Install and configure conan | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install --upgrade conan | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/vs2022 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan profile detect | |
| conan remove -c zlib/* | |
| conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock | |
| conan lock create conanfile.py ${CONAN_ARGS} --build missing | |
| - name: cache conan dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.conan/data | |
| key: conan-vs2022-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }} | |
| restore-keys: | | |
| conan-vs-2022-${{ hashfiles('base.lock') }} | |
| conan-vs-2022 | |
| - name: install conan dependencies | |
| run: | | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/vs2022 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan remove -c zlib/* | |
| conan install . ${CONAN_ARGS} \ | |
| --output-folder build \ | |
| --lockfile conan.lock \ | |
| --build missing \ | |
| --update \ | |
| --generator VirtualRunEnv | |
| - name: build with cmake | |
| run: | | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/vs2022 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${H5CPP_SHARED}" | |
| conan build . ${CONAN_ARGS} \ | |
| --lockfile conan.lock \ | |
| --output-folder build | |
| - name: run tests | |
| run: | | |
| cd build | |
| .\conanbuildenv-release-x86_64.ps1 | |
| .\conanrunenv-release-x86_64.ps1 | |
| ctest --extra-verbose --no-tests=error --output-on-failure | |
| shell: pwsh | |
| macos-13: | |
| strategy: | |
| matrix: | |
| shared: ["shared", "static"] | |
| boost: ["boost", "stdfs"] | |
| mpi: [ | |
| # "mpi", | |
| "serial" | |
| ] | |
| runs-on: macos-13 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v4 | |
| with: | |
| python-version: '3.x' | |
| - name: Set environment variables | |
| run: | | |
| bash .github/workflows/set_env_vars.sh \ | |
| ${{ matrix.shared }} \ | |
| ${{ matrix.boost }} \ | |
| ${{ matrix.mpi }} | |
| - name: Install OpenMPI and prerequisites | |
| if: ${{ matrix.mpi == 'mpi' }} | |
| run: brew install open-mpi | |
| - name: Install and configure conan | |
| run: | | |
| python -m pip install --upgrade pip | |
| pip install --upgrade conan | |
| # there's currently an issue running the MPI tests on OSX with HDF5 compiled | |
| # as a dynamic library. Use static HDF5 for now | |
| HDF5_SHARED=${H5CPP_SHARED} | |
| if [ "${H5CPP_WITH_MPI}" = "True" ]; then | |
| HDF5_SHARED=False | |
| fi | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/apple-clang12 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${HDF5_SHARED}" | |
| conan profile detect | |
| conan remove -c zlib/* | |
| conan lock create conanfile.py ${CONAN_ARGS} --lockfile-packages --lockfile-out base.lock | |
| conan lock create conanfile.py ${CONAN_ARGS} --build missing | |
| - name: cache conan dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.conan/data | |
| key: conan-apple-clang12-${{ hashfiles('base.lock') }}-${{ hashFiles('conan.lock') }} | |
| restore-keys: | | |
| conan-apple-clang12-${{ hashfiles('base.lock') }} | |
| conan-apple-clang12 | |
| - name: install conan dependencies | |
| run: | | |
| HDF5_SHARED=${H5CPP_SHARED} | |
| if [ "${H5CPP_WITH_MPI}" = "True" ]; then | |
| HDF5_SHARED=False | |
| fi | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/apple-clang12 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${HDF5_SHARED}" | |
| conan remove -c zlib/* | |
| conan install . ${CONAN_ARGS} \ | |
| --output-folder build \ | |
| --lockfile conan.lock \ | |
| --build missing \ | |
| --update \ | |
| --generator VirtualRunEnv | |
| - name: build with cmake | |
| run: | | |
| HDF5_SHARED=${H5CPP_SHARED} | |
| if [ "${H5CPP_WITH_MPI}" = "True" ]; then | |
| HDF5_SHARED=False | |
| fi | |
| CONAN_ARGS="--profile .github/workflows/conan/profiles/apple-clang12 \ | |
| -o with_boost=${H5CPP_WITH_BOOST} \ | |
| -o with_mpi=${H5CPP_WITH_MPI} \ | |
| -o shared=${H5CPP_SHARED} \ | |
| -o *:shared=${HDF5_SHARED}" | |
| conan build . ${CONAN_ARGS} \ | |
| --lockfile conan.lock \ | |
| --output-folder build | |
| - name: run tests | |
| run: | | |
| cd build | |
| ctest --extra-verbose --no-tests=error | |
| debian-12: | |
| strategy: | |
| matrix: | |
| shared: [shared, static] | |
| boost: [boost, stdfs] | |
| mpi: [ | |
| mpi, | |
| serial | |
| ] | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Build the docker | |
| run: docker build -t build .github/workflows/debian12 | |
| - name: Run the docker | |
| run: docker run --name build -i -d -v"$PWD:/home/p00user/src" build | |
| - name: Set environment variables | |
| run: | | |
| bash .github/workflows/set_env_vars.sh \ | |
| ${{ matrix.shared }} \ | |
| ${{ matrix.boost }} \ | |
| ${{ matrix.mpi }} | |
| - name: Install serial prerequisites | |
| if: ${{ matrix.mpi == 'serial' }} | |
| run: | | |
| docker exec --user root build /bin/bash -c "apt-get update && apt-get -y install libhdf5-dev" | |
| - name: Install MPI prerequisites | |
| if: ${{ matrix.mpi == 'mpi' }} | |
| run: | | |
| docker exec --user root build /bin/bash -c "apt-get update && apt-get -y install --no-install-recommends build-essential libhdf5-dev libhdf5-mpi-dev libopenmpi-dev" | |
| - name: Create Config | |
| run: | | |
| docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src" | |
| docker exec build /bin/bash -c "HDF5_STATIC=ON; [ \"${H5CPP_SHARED}\" = \"True\" ] && HDF5_STATIC=OFF; git config --global --add safe.directory /home/p00user/src && mkdir ../build && cd ../build && | |
| cmake ../src -DCMAKE_BUILD_TYPE=Release -DH5CPP_CONAN=DISABLE -DH5CPP_CATCH2_V2=TRUE -DHDF5_USE_STATIC_LIBRARIES=${HDF5_STATIC} -DH5CPP_BUILD_SHARED=${H5CPP_SHARED} -DH5CPP_WITH_BOOST=${H5CPP_WITH_BOOST} -DH5CPP_WITH_MPI=${H5CPP_WITH_MPI}" | |
| - name: Build all | |
| run: docker exec build /bin/bash -c "cd ../build && cmake --build . -- -j 2" | |
| - name: Build html | |
| if: (github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/docs_')) && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial' | |
| run: docker exec build /bin/bash -c "cd ../build && cmake --build . --target html" | |
| - name: Run tests | |
| run: docker exec build /bin/bash -c "cd ../build && ctest --extra-verbose --no-tests=error" | |
| - name: install with cmake | |
| run: docker exec --user root build /bin/bash -c "cd ../build && cmake --build . --target install" | |
| - name: Build examples | |
| run: docker exec build /bin/bash -c "mkdir ../examples_build && cd ../examples_build && cmake ../src/examples -DCMAKE_BUILD_TYPE=Release && cmake --build . -- -j 2 " | |
| - name: Append documentation for the latest release version | |
| if: (! startsWith(github.ref, 'refs/heads/docs_')) && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial' | |
| run: | | |
| docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src" | |
| docker exec build /bin/bash -c "git config --unset-all remote.origin.fetch" | |
| docker exec build /bin/bash -c "git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'" | |
| docker exec build /bin/bash -c "git fetch && git clean -fd && git checkout gh-pages && git pull" | |
| docker exec build /bin/bash -c "mkdir -p ./latest && shopt -u dotglob && rm -rf ./latest/*" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/build/* ./latest/" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/doxygen_html ./latest/api_reference/doxygen" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/index.html ./" | |
| docker exec build /bin/bash -c "find ./ -type d -name \"CMakeFiles\" -prune -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "find ./ -name \"Makefile\" -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "find ./ -name \"*.cmake\" -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "rm -rf ./latest/_sources" | |
| - name: Extract the code version from the branch name | |
| if: startsWith(github.ref, 'refs/heads/docs_') && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial' | |
| shell: bash | |
| run: echo "##[set-output name=docver;]$(echo ${GITHUB_REF#refs/heads/docs_})" | |
| id: extract_docver | |
| - name: Append documentation for the extracted release version | |
| if: startsWith(github.ref, 'refs/heads/docs_') && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial' | |
| run: | | |
| echo Version: ${{ steps.extract_docver.outputs.docver }} | |
| docker exec --user root build /bin/bash -c "chown -R p00user /home/p00user/src" | |
| docker exec build /bin/bash -c "git config --unset-all remote.origin.fetch" | |
| docker exec build /bin/bash -c "git config remote.origin.fetch '+refs/heads/*:refs/remotes/origin/*'" | |
| docker exec build /bin/bash -c "git fetch && git clean -fd && git checkout gh-pages && git pull" | |
| docker exec build /bin/bash -c "mkdir -p ./${{ steps.extract_docver.outputs.docver }}" | |
| docker exec build /bin/bash -c "shopt -u dotglob && rm -rf ./${{ steps.extract_docver.outputs.docver }}/*" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/build/* ./${{ steps.extract_docver.outputs.docver }}/" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/doxygen_html ./${{ steps.extract_docver.outputs.docver }}/api_reference/doxygen" | |
| docker exec build /bin/bash -c "mv -f ../build/doc/index.html ./" | |
| docker exec build /bin/bash -c "find ./ -type d -name \"CMakeFiles\" -prune -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "find ./ -name \"Makefile\" -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "find ./ -name \"*.cmake\" -exec rm -rf {} \\;" | |
| docker exec build /bin/bash -c "rm -rf ./${{ steps.extract_docver.outputs.docver }}/_sources" | |
| - name: Deploy documentation | |
| if: (github.ref == 'refs/heads/develop' || startsWith(github.ref, 'refs/heads/docs_')) && matrix.shared == 'shared' && matrix.boost == 'stdfs' && matrix.mpi == 'serial' | |
| uses: s0/git-publish-subdir-action@develop | |
| env: | |
| REPO: self | |
| BRANCH: gh-pages | |
| FOLDER: . | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| MESSAGE: "Build: ({sha}) {msg}" |