Skip to content

Merge branch 'docs_v0.7.0' into docs_stable #532

Merge branch 'docs_v0.7.0' into docs_stable

Merge branch 'docs_v0.7.0' into docs_stable #532

Workflow file for this run

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}"