name: Main CI on: pull_request: push: branches: - master - develop - feature/** tags: ['**'] env: UBSAN_OPTIONS: print_stacktrace=1 jobs: posix: strategy: fail-fast: false matrix: include: - os: ubuntu-latest shared: OFF layout: tagged python: ON mpi: OFF - os: ubuntu-latest shared: ON layout: versioned python: ON mpi: OFF - os: ubuntu-latest shared: ON layout: system python: ON mpi: ON install: libopenmpi-dev - os: macos-latest shared: OFF layout: versioned python: ON mpi: OFF - os: macos-latest shared: ON layout: tagged python: ON mpi: OFF - os: ubuntu-latest shared: ON testing: ON layout: system python: OFF mpi: OFF exclude: "process;geometry" - os: ubuntu-latest include: assert testing: ON test_install: ON - os: macos-latest include: assert testing: ON test_install: ON - os: ubuntu-latest include: mp11 testing: ON test_install: ON - os: macos-latest include: mp11 testing: ON test_install: ON - os: ubuntu-latest include: preprocessor testing: ON test_install: ON - os: macos-latest include: preprocessor testing: ON test_install: ON - os: ubuntu-latest include: timer testing: ON layout: versioned shared: OFF test_install: ON - os: ubuntu-latest include: timer testing: ON layout: versioned shared: ON test_install: ON - os: macos-latest include: timer testing: ON layout: versioned shared: OFF test_install: ON - os: macos-latest include: timer testing: ON layout: versioned shared: ON test_install: ON - os: ubuntu-latest include: iostreams layout: versioned shared: OFF test_install: ON - os: ubuntu-latest include: iostreams layout: versioned shared: ON test_install: ON - os: macos-latest include: iostreams layout: versioned shared: OFF test_install: ON - os: macos-latest include: iostreams layout: versioned shared: ON test_install: ON - os: ubuntu-latest include: locale layout: versioned shared: OFF test_install: ON - os: ubuntu-latest include: locale layout: versioned shared: ON test_install: ON - os: macos-latest include: locale layout: versioned shared: OFF test_install: ON - os: macos-latest include: locale layout: versioned shared: ON test_install: ON - os: ubuntu-latest include: mysql testing: ON install: libssl-dev - os: ubuntu-latest include: mysql test_install: ON install: libssl-dev - os: ubuntu-latest include: bind testing: ON - os: ubuntu-latest include: bind test_install: ON - os: ubuntu-latest include: endian testing: ON - os: ubuntu-latest include: endian test_install: ON - os: ubuntu-latest include: system testing: ON - os: ubuntu-latest include: system test_install: ON runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Install packages if: matrix.install run: sudo apt install ${{matrix.install}} - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Configure Boost run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=${{matrix.testing}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude}}" -DBUILD_SHARED_LIBS=${{matrix.shared}} -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} -DBOOST_ENABLE_MPI=${{matrix.mpi}} -DBOOST_ENABLE_PYTHON=${{matrix.python}} .. - name: Build Boost run: | cd ../boost-root/__build__ cmake --build . - name: Install Boost run: | cd ../boost-root/__build__ cmake --build . --target install - name: Test Boost if: matrix.testing run: | cd ../boost-root/__build__ cmake --build . --target tests -- -j 3 ctest --output-on-failure --no-tests=error -j 3 - name: Test installed Boost library if: matrix.test_install run: | cd ../boost-root/tools/cmake/test/${{matrix.include}} mkdir __build__ && cd __build__ cmake -DCMAKE_INSTALL_PREFIX=~/.local .. cmake --build . export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH cmake --build . --target check windows: strategy: fail-fast: false matrix: include: - os: windows-2022 shared: OFF python: ON mpi: OFF - os: windows-2022 shared: ON python: ON mpi: OFF - os: windows-2022 include: assert testing: ON test_install: ON - os: windows-2022 include: mp11 testing: ON test_install: ON - os: windows-2022 include: timer shared: OFF testing: ON test_install: ON - os: windows-2022 include: timer shared: ON testing: ON test_install: ON - os: windows-2022 include: iostreams shared: OFF test_install: ON - os: windows-2022 include: iostreams shared: ON test_install: ON - os: windows-2022 include: bind testing: ON - os: windows-2022 include: bind test_install: ON - os: windows-2022 include: endian testing: ON - os: windows-2022 include: endian test_install: ON - os: windows-2022 include: system testing: ON - os: windows-2022 include: system test_install: ON # mingw - os: windows-latest include: timer shared: OFF testing: ON test_install: ON opts: "-G \"MinGW Makefiles\"" - os: windows-latest include: timer shared: ON testing: ON test_install: ON opts: "-G \"MinGW Makefiles\"" # clang-cl - os: windows-latest include: timer shared: OFF testing: ON test_install: ON opts: "-T clangcl" - os: windows-latest include: timer shared: ON testing: ON test_install: ON opts: "-T clangcl" runs-on: ${{matrix.os}} defaults: run: shell: cmd steps: - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: %GITHUB_BASE_REF% echo GITHUB_REF: %GITHUB_REF% if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% set BOOST_BRANCH=develop for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master echo BOOST_BRANCH: %BOOST_BRANCH% cd .. git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rd /s/q tools\cmake xcopy /s /e /q %GITHUB_WORKSPACE% tools\cmake\ - name: Configure Boost run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=${{matrix.testing}} -DBOOST_INCLUDE_LIBRARIES=${{matrix.include}} -DBOOST_EXCLUDE_LIBRARIES=${{matrix.exclude}} -DBUILD_SHARED_LIBS=${{matrix.shared}} -DBOOST_ENABLE_MPI=${{matrix.mpi}} -DBOOST_ENABLE_PYTHON=${{matrix.python}} -DCMAKE_IGNORE_PREFIX_PATH="C:/Strawberry/c" ${{matrix.opts}} .. - name: Build Boost (Debug) run: cmake --build ../boost-root/__build__ --config Debug - name: Build Boost (Release) run: cmake --build ../boost-root/__build__ --config Release - name: Install Boost (Debug) run: cmake --build ../boost-root/__build__ --target install --config Debug - name: Install Boost (Release) run: cmake --build ../boost-root/__build__ --target install --config Release - name: Test Boost (Debug) if: matrix.testing run: cd ../boost-root/__build__ && cmake --build . --target tests --config Debug && ctest --output-on-failure --no-tests=error -j 3 -C Debug - name: Test Boost (Release) if: matrix.testing run: cd ../boost-root/__build__ && cmake --build . --target tests --config Release && ctest --output-on-failure --no-tests=error -j 3 -C Release - name: Configure test project if: matrix.test_install run: | cd ../boost-root/tools/cmake/test/${{matrix.include}} mkdir __build__ && cd __build__ cmake -DCMAKE_PREFIX_PATH=C:/Boost ${{matrix.opts}} .. - name: Test installed Boost library (Debug) if: matrix.test_install run: | cd ../boost-root/tools/cmake/test/${{matrix.include}}/__build__ PATH C:\Boost\bin;%PATH% cmake --build . --config Debug && ctest --output-on-failure --no-tests=error -j 3 -C Debug - name: Test installed Boost library (Release) if: matrix.test_install run: | cd ../boost-root/tools/cmake/test/${{matrix.include}}/__build__ PATH C:\Boost\bin;%PATH% cmake --build . --config Release && ctest --output-on-failure --no-tests=error -j 3 -C Release BoostRoot: strategy: fail-fast: false matrix: container: - ubuntu:20.04 - ubuntu:22.04 - ubuntu:24.04 - ubuntu:25.04 testing: [OFF, ON] include: - container: ubuntu:18.04 testing: OFF exclude: cobalt;histogram;locale;msm;parser - container: ubuntu:18.04 testing: ON exclude: cobalt;histogram;locale;msm;parser;pfr;mysql container: image: ${{matrix.container}} volumes: - /node20217:/node20217:rw,rshared - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} defaults: run: shell: bash runs-on: ubuntu-latest steps: - name: Setup container environment if: matrix.container run: | export DEBIAN_FRONTEND=noninteractive apt-get update apt-get -y install sudo python3 git g++ curl xz-utils cmake libssl-dev - name: Install nodejs20glibc2.17 if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} run: | curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 ldd /__e/node20/bin/node - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Configure Boost run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DBUILD_TESTING=${{matrix.testing}} -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude}}" .. BoostTest: strategy: fail-fast: false matrix: container: - ubuntu:16.04 - ubuntu:18.04 - ubuntu:20.04 - ubuntu:22.04 - ubuntu:24.04 - ubuntu:25.04 container: image: ${{matrix.container}} volumes: - /node20217:/node20217:rw,rshared - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} defaults: run: shell: bash runs-on: ubuntu-latest steps: - name: Setup container environment if: matrix.container run: | export DEBIAN_FRONTEND=noninteractive apt-get update apt-get -y install sudo python3 git g++ curl xz-utils cmake - name: Install nodejs20glibc2.17 if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} run: | curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 ldd /__e/node20/bin/node - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init libs/core libs/assert libs/config libs/static_assert libs/throw_exception rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Test BoostTest run: | cd ../boost-root/tools/cmake/test/boost_test mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=ON .. cmake --build . --target tests ctest --output-on-failure --no-tests=error -j 3 BoostFetch: strategy: fail-fast: false runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Test BoostFetch run: | cd test/boost_fetch mkdir __build__ && cd __build__ cmake .. cmake --build . cmake --build . --target check posix-subdir: strategy: fail-fast: false matrix: os: [ ubuntu-22.04, ubuntu-24.04, macos-14, macos-15, macos-26 ] shared: [ ON, OFF ] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Test Boost with add_subdirectory run: | cd ../boost-root/tools/cmake/test/add_subdir mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . ctest --output-on-failure --no-tests=error - name: Test Boost with add_subdirectory(EXCLUDE_FROM_ALL) run: | cd ../boost-root/tools/cmake/test/add_subdir_exc mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . ctest --output-on-failure --no-tests=error - name: Test installation with add_subdirectory run: | cd ../boost-root/tools/cmake/test/add_subdir mkdir __build2__ && cd __build2__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . --target install cmake --install . - name: Test installation with add_subdirectory(EXCLUDE_FROM_ALL) run: | cd ../boost-root/tools/cmake/test/add_subdir_exc mkdir __build2__ && cd __build2__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . --target install cmake --install . - name: Test add_subdirectory compatibility targets run: | cd ../boost-root/tools/cmake/test/add_subdir_compat mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . ctest --output-on-failure --no-tests=error - name: Test add_subdirectory(EXCLUDE_FROM_ALL) compatibility targets run: | cd ../boost-root/tools/cmake/test/add_subdir_exc_compat mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. cmake --build . ctest --output-on-failure --no-tests=error posix-target-check: strategy: fail-fast: false matrix: include: - os: ubuntu-22.04 include: timer shared: ON - os: ubuntu-24.04 include: timer shared: ON - os: macos-14 include: timer shared: ON - os: macos-15 include: timer shared: ON - os: macos-26 include: timer shared: ON runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Configure Boost run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=ON -DBOOST_INCLUDE_LIBRARIES=${{matrix.include}} -DBUILD_SHARED_LIBS=${{matrix.shared}} .. - name: Test Boost run: | cd ../boost-root/__build__ cmake --build . --target check posix-check-quick: strategy: fail-fast: false matrix: os: [ ubuntu-22.04, ubuntu-24.04, macos-14, macos-15, macos-26 ] shared: [ ON, OFF ] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Configure Boost run: | cd ../boost-root mkdir __build__ && cd __build__ cmake -DBoost_VERBOSE=${{matrix.verbose}} -DBUILD_TESTING=ON -DBUILD_SHARED_LIBS=${{matrix.shared}} .. - name: Test Boost run: | cd ../boost-root/__build__ cmake --build . --target check-quick posix-install: strategy: fail-fast: false matrix: os: [ ubuntu-latest, macos-latest ] include_libraries: [ timer ] layout: [ system, versioned ] verbose: [ ON ] runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v4 - name: Setup Boost run: | echo GITHUB_BASE_REF: $GITHUB_BASE_REF echo GITHUB_REF: $GITHUB_REF REF=${GITHUB_BASE_REF:-$GITHUB_REF} REF=${REF#refs/heads/} echo REF: $REF BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true echo BOOST_BRANCH: $BOOST_BRANCH cd .. git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root cd boost-root git submodule update --init --jobs 3 rm -rf tools/cmake/* cp -r $GITHUB_WORKSPACE/* tools/cmake - name: Configure (Static) run: | cd ../boost-root mkdir __build_static__ && cd __build_static__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include_libraries}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude_libraries}}" -DBUILD_SHARED_LIBS=OFF -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} .. - name: Build (Static) run: | cd ../boost-root/__build_static__ cmake --build . - name: Install (Static) run: | cd ../boost-root/__build_static__ cmake --build . --target install - name: Configure (Shared) run: | cd ../boost-root mkdir __build_shared__ && cd __build_shared__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBOOST_INCLUDE_LIBRARIES="${{matrix.include_libraries}}" -DBOOST_EXCLUDE_LIBRARIES="${{matrix.exclude_libraries}}" -DBUILD_SHARED_LIBS=ON -DBOOST_INSTALL_LAYOUT=${{matrix.layout}} .. - name: Build (Shared) run: | cd ../boost-root/__build_shared__ cmake --build . - name: Install (Shared) run: | cd ../boost-root/__build_shared__ cmake --build . --target install - name: Test (Static) run: | cd ../boost-root/tools/cmake/test/${{matrix.include_libraries}} mkdir __build_static__ && cd __build_static__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBoost_USE_STATIC_LIBS=ON .. cmake --build . export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH cmake --build . --target check - name: Test (Shared) run: | cd ../boost-root/tools/cmake/test/${{matrix.include_libraries}} mkdir __build_shared__ && cd __build_shared__ cmake -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=${{matrix.verbose}} -DBoost_USE_STATIC_LIBS=OFF .. cmake --build . export LD_LIBRARY_PATH=$HOME/.local/lib:$LD_LIBRARY_PATH cmake --build . --target check