# Copyright 2020-2021 Peter Dimov # Copyright 2021 Andrey Semashev # Copyright 2021 Alexander Grund # Copyright 2022 James E. King III # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) --- name: CI on: pull_request: push: branches: - master - develop - bugfix/** - feature/** - fix/** - pr/** concurrency: group: ${{format('{0}:{1}', github.repository, github.ref)}} cancel-in-progress: true env: GIT_FETCH_JOBS: 8 NET_RETRY_COUNT: 5 B2_CI_VERSION: 1 B2_VARIANT: debug,release LCOV_BRANCH_COVERAGE: 0 CODECOV_NAME: Github Actions jobs: runner-selection: # runs-on: ubuntu-latest runs-on: ${{ github.repository_owner == 'boostorg' && fromJSON('[ "self-hosted", "linux", "x64", "ubuntu-latest-aws" ]') || 'ubuntu-latest' }} outputs: labelmatrix: ${{ steps.aws_hosted_runners.outputs.labelmatrix }} steps: - name: AWS Hosted Runners id: aws_hosted_runners uses: cppalliance/aws-hosted-runners@v1.0.0 posix: defaults: run: shell: bash strategy: fail-fast: false matrix: include: # Linux, gcc - { compiler: gcc-7, cxxstd: '11,14,17', os: 'ubuntu-20.04', install: 'g++-7' } - { compiler: gcc-8, cxxstd: '11,14,17', os: 'ubuntu-20.04', install: 'g++-8' } - { compiler: gcc-9, cxxstd: '11,14,17', os: 'ubuntu-22.04', install: 'g++-9' } - { compiler: gcc-10, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', install: 'g++-10' } - { compiler: gcc-11, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', install: 'g++-11' } - { compiler: gcc-12, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', install: 'g++-12' } - { compiler: gcc-13, cxxstd: '11,14,17,20', os: 'ubuntu-24.04', install: 'g++-13' } - { compiler: gcc-14, cxxstd: '11,14,17,20', os: 'ubuntu-24.04', install: 'g++-14' } - { name: "gcc-14 w/ sanitizers (11)", sanitize: yes, compiler: gcc-14, cxxstd: '11', os: 'ubuntu-24.04', install: 'g++-14', ccache_key: "san1" } - { name: "gcc-14 w/ sanitizers (14)", sanitize: yes, compiler: gcc-14, cxxstd: '14', os: 'ubuntu-24.04', install: 'g++-14', ccache_key: "san1" } - { name: "gcc-14 w/ sanitizers (17)", sanitize: yes, compiler: gcc-14, cxxstd: '17', os: 'ubuntu-24.04', install: 'g++-14', ccache_key: "san2" } - { name: "gcc-14 w/ sanitizers (20)", sanitize: yes, compiler: gcc-14, cxxstd: '20', os: 'ubuntu-24.04', install: 'g++-14', ccache_key: "san2" } - { name: "gcc-14 w/ sanitizers (2b)", sanitize: yes, compiler: gcc-14, cxxstd: '2b', os: 'ubuntu-24.04', install: 'g++-14', ccache_key: "san2" } - { name: Collect coverage, coverage: yes, compiler: gcc-14, cxxstd: '20', os: 'ubuntu-24.04', install: 'g++-14 g++-14-multilib', address-model: '32,64', ccache_key: "cov" } - { name: "cfoa tsan (gcc-14)", cxxstd: '11,14,17,20,2b', os: 'ubuntu-24.04', install: 'g++-14', compiler: gcc-14, targets: 'libs/unordered/test//cfoa_tests', thread-sanitize: yes, ccache_key: "tsan" } # Linux, clang, libc++ - { compiler: clang-7, cxxstd: '11,14,17', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-7 libc++-7-dev libc++abi-7-dev' } - { compiler: clang-10, cxxstd: '11,14,17,20', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-10 libc++-10-dev libc++abi-10-dev' } - { compiler: clang-11, cxxstd: '11,14,17,20', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-11 libc++-11-dev libc++abi-11-dev' } # clang-12 doesn't work on 'ubuntu-22.04', the linker can't find -lunwind for some reason - { name: "clang-12 w/ sanitizers (11,14)", sanitize: yes, compiler: clang-12, cxxstd: '11,14', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san1" } - { name: "clang-12 w/ sanitizers (17)", sanitize: yes, compiler: clang-12, cxxstd: '17', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" } - { name: "clang-12 w/ sanitizers (20)", sanitize: yes, compiler: clang-12, cxxstd: '20', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" } - { name: "clang-12 w/ sanitizers (2b)", sanitize: yes, compiler: clang-12, cxxstd: '2b', os: 'ubuntu-20.04', stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev', ccache_key: "san2" } - { compiler: 'clang-13', cxxstd: '11,14', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-13 libc++-13-dev libc++abi-13-dev' } - { compiler: 'clang-13', cxxstd: '17,20,2b', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-13 libc++-13-dev libc++abi-13-dev' } - { compiler: 'clang-14', cxxstd: '11,14', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-14 libc++-14-dev libc++abi-14-dev' } - { compiler: 'clang-14', cxxstd: '17,20,2b', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-14 libc++-14-dev libc++abi-14-dev' } - { compiler: 'clang-15', cxxstd: '11,14', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-15 libc++-15-dev libc++abi-15-dev' } - { compiler: 'clang-15', cxxstd: '17,20,2b', os: 'ubuntu-22.04', stdlib: libc++, install: 'clang-15 libc++-15-dev libc++abi-15-dev' } - { compiler: 'clang-16', cxxstd: '11,14', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-16 libc++-16-dev libc++abi-16-dev' } - { compiler: 'clang-16', cxxstd: '17,20,2b', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-16 libc++-16-dev libc++abi-16-dev' } - { compiler: 'clang-17', cxxstd: '11,14', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-17 libc++-17-dev libc++abi-17-dev' } - { compiler: 'clang-17', cxxstd: '17,20,2b', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-17 libc++-17-dev libc++abi-17-dev' } - { compiler: 'clang-18', cxxstd: '11,14', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-18 libc++-18-dev libc++abi-18-dev' } - { compiler: 'clang-18', cxxstd: '17,20,2b', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-18 libc++-18-dev libc++abi-18-dev' } - { compiler: 'clang-19', cxxstd: '11,14', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-19 libc++-19-dev libc++abi-19-dev' } - { compiler: 'clang-19', cxxstd: '17,20,2b', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-19 libc++-19-dev libc++abi-19-dev' } - { compiler: 'clang-20', cxxstd: '11,14,17', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-20 libc++-20-dev libc++abi-20-dev' } - { compiler: 'clang-20', cxxstd: '20,23,2c', os: 'ubuntu-24.04', stdlib: libc++, install: 'clang-20 libc++-20-dev libc++abi-20-dev' } # not using libc++ because of https://github.com/llvm/llvm-project/issues/52771 - { name: "clang-18 w/ sanitizers (11,14)", sanitize: yes, compiler: clang-18, cxxstd: '11,14', os: 'ubuntu-24.04', ccache_key: "san1" } - { name: "clang-18 w/ sanitizers (17)", sanitize: yes, compiler: clang-18, cxxstd: '17', os: 'ubuntu-24.04', ccache_key: "san2" } - { name: "clang-18 w/ sanitizers (20)", sanitize: yes, compiler: clang-18, cxxstd: '20', container: 'ubuntu:24.04', os: 'ubuntu-latest', ccache_key: "san2" } - { name: "clang-18 w/ sanitizers (2b)", sanitize: yes, compiler: clang-18, cxxstd: '2b', container: 'ubuntu:24.04', os: 'ubuntu-latest', ccache_key: "san2" } - { name: "cfoa tsan (clang-18)", cxxstd: '11,14,17,20,2b', os: 'ubuntu-24.04', compiler: clang-18, targets: 'libs/unordered/test//cfoa_tests', thread-sanitize: yes, stdlib: libc++, install: 'clang-18 libc++-18-dev libc++abi-18-dev', ccache_key: "tsan" } # OSX, clang - { compiler: clang, cxxstd: '11,14,17,20,2b', os: 'macos-latest', sanitize: yes, ccache: no, ccache_key: "san1" } - { compiler: clang, cxxstd: '11,14,17,20,2b', os: 'macos-latest', thread-sanitize: yes, targets: 'libs/unordered/test//cfoa_tests', ccache: no, ccache_key: "tsan" } - { compiler: clang, cxxstd: '11,14,17,20,2b', os: 'macos-14' } - { compiler: clang, cxxstd: '11,14,17,20,23,2c', os: 'macos-15' } - { compiler: clang, cxxstd: '11,14,17,20,23,2c', os: 'macos-26' } timeout-minutes: 360 # posix (gcc-12 w/ sanitizers is taking longer than 210 minutes # timeout-minutes: 210 needs: [runner-selection] runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} container: ${{matrix.container}} env: {B2_USE_CCACHE: 1} steps: - name: Setup environment run: | if [ -f "/etc/debian_version" ]; then echo "DEBIAN_FRONTEND=noninteractive" >> $GITHUB_ENV export DEBIAN_FRONTEND=noninteractive fi if [ -n "${{matrix.container}}" ] && [ -f "/etc/debian_version" ]; then apt-get -o Acquire::Retries=$NET_RETRY_COUNT update apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common # Need (newer) git, and the older Ubuntu container may require requesting the key manually using port 80 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E1DD270288B4E6030699E45FA1715D88E1DF1F24 for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done apt-get -o Acquire::Retries=$NET_RETRY_COUNT update apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y g++ python-is-python3 git fi # For jobs not compatible with ccache, use "ccache: no" in the matrix if [[ "${{ matrix.ccache }}" == "no" ]]; then echo "B2_USE_CCACHE=0" >> $GITHUB_ENV fi git config --global pack.threads 0 - uses: actions/checkout@v3 with: # For coverage builds fetch the whole history, else only 1 commit using a 'fake ternary' fetch-depth: ${{ matrix.coverage && '0' || '1' }} - name: Cache ccache uses: actions/cache@v3 if: env.B2_USE_CCACHE with: path: ~/.ccache key: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}-${{matrix.ccache_key}}-${{github.sha}} restore-keys: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}}-${{matrix.ccache_key}}- - name: Fetch Boost.CI uses: actions/checkout@v3 with: repository: boostorg/boost-ci ref: master path: boost-ci-cloned - name: Get CI scripts folder run: | # Copy ci folder if not testing Boost.CI [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . rm -rf boost-ci-cloned - name: Install packages if: startsWith(matrix.os, 'ubuntu') run: | SOURCE_KEYS=(${{join(matrix.source_keys, ' ')}}) SOURCES=(${{join(matrix.sources, ' ')}}) # Add this by default SOURCES+=(ppa:ubuntu-toolchain-r/test) for key in "${SOURCE_KEYS[@]}"; do for i in {1..$NET_RETRY_COUNT}; do wget -O - "$key" | sudo apt-key add - && break || sleep 10 done done for source in "${SOURCES[@]}"; do for i in {1..$NET_RETRY_COUNT}; do sudo add-apt-repository $source && break || sleep 10 done done sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update if [[ -z "${{matrix.install}}" ]]; then pkgs="${{matrix.compiler}}" pkgs="${pkgs/gcc-/g++-}" else pkgs="${{matrix.install}}" fi sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs - name: Setup GCC Toolchain if: matrix.gcc_toolchain run: | GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain" echo "GCC_TOOLCHAIN_ROOT=$GCC_TOOLCHAIN_ROOT" >> $GITHUB_ENV MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" mkdir -p "$GCC_TOOLCHAIN_ROOT" ln -s /usr/include "$GCC_TOOLCHAIN_ROOT/include" ln -s /usr/bin "$GCC_TOOLCHAIN_ROOT/bin" mkdir -p "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET" ln -s "/usr/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" - name: Setup multiarch if: matrix.multiarch run: | sudo apt-get install --no-install-recommends -y binfmt-support qemu-user-static sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes git clone https://github.com/jeking3/bdde.git echo "$(pwd)/bdde/bin/linux" >> ${GITHUB_PATH} echo "BDDE_DISTRO=${{ matrix.distro }}" >> ${GITHUB_ENV} echo "BDDE_EDITION=${{ matrix.edition }}" >> ${GITHUB_ENV} echo "BDDE_ARCH=${{ matrix.arch }}" >> ${GITHUB_ENV} echo "B2_WRAPPER=bdde" >> ${GITHUB_ENV} - name: Setup Boost env: B2_ADDRESS_MODEL: ${{matrix.address-model}} B2_COMPILER: ${{matrix.compiler}} B2_CXXSTD: ${{matrix.cxxstd}} B2_SANITIZE: ${{matrix.sanitize}} B2_TSAN: ${{matrix.thread-sanitize}} B2_TARGETS: ${{matrix.targets}} B2_STDLIB: ${{matrix.stdlib}} # More entries can be added in the same way, see the B2_ARGS assignment in ci/enforce.sh for the possible keys. # B2_DEFINES: ${{matrix.defines}} # Variables set here (to non-empty) will override the top-level environment variables, e.g. # B2_VARIANT: ${{matrix.variant}} run: source ci/github/install.sh - name: Setup coverage collection if: matrix.coverage run: ci/github/codecov.sh "setup" - name: Run tests if: '!matrix.coverity' run: | if [[ ${B2_TSAN} == "yes" ]] && [[ $(uname) == "Linux" ]]; then echo 0 | sudo tee /proc/sys/kernel/randomize_va_space sudo sysctl vm.mmap_rnd_bits=28 fi B2_TARGETS=${{matrix.targets}} ci/build.sh - name: Upload coverage if: matrix.coverage run: ci/codecov.sh "upload" env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Run coverity if: matrix.coverity && github.event_name == 'push' && (github.ref_name == 'develop' || github.ref_name == 'master') run: ci/github/coverity.sh env: COVERITY_SCAN_NOTIFICATION_EMAIL: ${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }} COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} windows: defaults: run: shell: cmd strategy: fail-fast: false matrix: include: - { toolset: msvc-14.0, cxxstd: '14,latest', addrmd: '32,64', os: 'windows-2019', variant: 'debug,release' } - { toolset: msvc-14.2, cxxstd: '14,17', addrmd: '32,64', os: 'windows-2019', variant: 'debug,release' } - { toolset: msvc-14.2, cxxstd: '20,latest', addrmd: '32,64', os: 'windows-2019', variant: 'debug,release' } - { toolset: msvc-14.3, cxxstd: '14,17,20,latest', addrmd: '32,64', os: 'windows-2022', variant: 'debug,release' } - { toolset: msvc-14.3, cxxstd: '14', addrmd: '64', os: 'windows-2022', variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '/RTCc' } - { toolset: msvc-14.3, cxxstd: '14', addrmd: '32', os: 'windows-2022', variant: 'debug', defines: '_ALLOW_RTCc_IN_STL', cxxflags: '"/RTCc /arch:IA32"' } - { toolset: msvc-14.3, cxxstd: '14,17', addrmd: '32,64', os: 'windows-2022', variant: 'debug,release', cxxflags: '/permissive-' } - { toolset: clang-win, cxxstd: '14,17,latest', addrmd: '32,64', os: 'windows-2022', variant: 'debug,release' } - { toolset: clang-win, cxxstd: '14,17,latest', addrmd: '32,64', os: 'windows-2025', variant: 'debug,release' } - { toolset: msvc-14.3, cxxstd: '14,17,20,latest', addrmd: '32,64', os: 'windows-2025', variant: 'debug,release' } - { toolset: gcc, cxxstd: '11,14,17,2a', addrmd: '64', os: 'windows-2019', variant: 'debug,release' } needs: [runner-selection] runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} steps: - uses: actions/checkout@v3 - name: Fetch Boost.CI uses: actions/checkout@v3 with: repository: boostorg/boost-ci ref: master path: boost-ci-cloned - name: Get CI scripts folder run: | REM Copy ci folder if not testing Boost.CI if "%GITHUB_REPOSITORY%" == "%GITHUB_REPOSITORY:boost-ci=%" xcopy /s /e /q /i /y boost-ci-cloned\ci .\ci rmdir /s /q boost-ci-cloned - name: Setup Boost run: ci\github\install.bat - name: Run tests if: '!matrix.coverage' run: ci\build.bat env: B2_TOOLSET: ${{matrix.toolset}} B2_CXXSTD: ${{matrix.cxxstd}} B2_ADDRESS_MODEL: ${{matrix.addrmd}} B2_DEFINES: ${{matrix.defines}} B2_VARIANT: ${{matrix.variant}} B2_CXXFLAGS: ${{matrix.cxxflags}} - name: Collect coverage shell: powershell if: matrix.coverage run: ci\opencppcoverage.ps1 env: B2_TOOLSET: ${{matrix.toolset}} B2_CXXSTD: ${{matrix.cxxstd}} B2_ADDRESS_MODEL: ${{matrix.addrmd}} - name: Upload coverage if: matrix.coverage uses: codecov/codecov-action@v2 with: files: __out/cobertura.xml MSYS2: defaults: run: shell: msys2 {0} strategy: fail-fast: false matrix: include: - { sys: MINGW32, compiler: gcc, cxxstd: '11,17,20', variant: 'release' } - { sys: MINGW64, compiler: gcc, cxxstd: '11,17,20', variant: 'debug,release' } needs: [runner-selection] runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)['windows-latest'] }} steps: - uses: actions/checkout@v3 - name: Setup MSYS2 environment uses: msys2/setup-msys2@v2 with: msystem: ${{matrix.sys}} update: true install: git python pacboy: gcc:p cmake:p ninja:p - name: Fetch Boost.CI uses: actions/checkout@v3 with: repository: boostorg/boost-ci ref: master path: boost-ci-cloned - name: Get CI scripts folder run: | # Copy ci folder if not testing Boost.CI [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . rm -rf boost-ci-cloned - name: Setup Boost env: B2_COMPILER: ${{matrix.compiler}} B2_CXXSTD: ${{matrix.cxxstd}} B2_SANITIZE: ${{matrix.sanitize}} B2_STDLIB: ${{matrix.stdlib}} B2_VARIANT: ${{matrix.variant}} run: ci/github/install.sh - name: Run tests env: B2_VARIANT: ${{matrix.variant}} run: ci/build.sh # Run also the CMake tests to avoid having to setup another matrix for CMake on MSYS - name: Run CMake tests run: | cd "$BOOST_ROOT" mkdir __build_cmake_test__ && cd __build_cmake_test__ cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DBOOST_INCLUDE_LIBRARIES=$SELF -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON -DBoost_VERBOSE=ON .. cmake --build . --target tests --config Debug -j$B2_JOBS ctest --output-on-failure --build-config Debug CMake: defaults: run: shell: bash strategy: fail-fast: false matrix: include: - { os: 'ubuntu-20.04', build_shared: ON, build_type: Debug, generator: 'Unix Makefiles' } - { os: 'windows-2019', build_shared: ON, build_type: Debug, generator: 'Visual Studio 16 2019' } timeout-minutes: 120 needs: [runner-selection] runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} steps: - uses: actions/checkout@v3 - name: Fetch Boost.CI uses: actions/checkout@v3 with: repository: boostorg/boost-ci ref: master path: boost-ci-cloned - name: Get CI scripts folder run: | # Copy ci folder if not testing Boost.CI [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . rm -rf boost-ci-cloned - name: Setup Boost env: {B2_DONT_BOOTSTRAP: 1} run: source ci/github/install.sh - name: Run CMake tests run: | cd "$BOOST_ROOT" mkdir __build_cmake_test__ && cd __build_cmake_test__ cmake -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBOOST_INCLUDE_LIBRARIES=$SELF -DBUILD_SHARED_LIBS=${{matrix.build_shared}} -DBUILD_TESTING=ON -DBoost_VERBOSE=ON .. cmake --build . --target tests --config ${{matrix.build_type}} -j$B2_JOBS ctest --output-on-failure --build-config ${{matrix.build_type}} - name: Run CMake subdir tests run: | cmake_test_folder="$BOOST_ROOT/libs/$SELF/test/cmake_test" # New unified folder [ -d "$cmake_test_folder" ] || cmake_test_folder="$BOOST_ROOT/libs/$SELF/test/cmake_subdir_test" cd "$cmake_test_folder" mkdir __build_cmake_subdir_test__ && cd __build_cmake_subdir_test__ cmake -G "${{matrix.generator}}" -DBOOST_CI_INSTALL_TEST=OFF -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.build_shared}} .. cmake --build . --config ${{matrix.build_type}} -j$B2_JOBS ctest --output-on-failure --build-config ${{matrix.build_type}} - name: Install Library run: | cd "$BOOST_ROOT" mkdir __build_cmake_install_test__ && cd __build_cmake_install_test__ cmake -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBOOST_INCLUDE_LIBRARIES=$SELF -DBUILD_SHARED_LIBS=${{matrix.build_shared}} -DCMAKE_INSTALL_PREFIX=~/.local -DBoost_VERBOSE=ON -DBoost_DEBUG=ON .. cmake --build . --target install --config ${{matrix.build_type}} -j$B2_JOBS - name: Run CMake install tests run: | cmake_test_folder="$BOOST_ROOT/libs/$SELF/test/cmake_test" # New unified folder [ -d "$cmake_test_folder" ] || cmake_test_folder="$BOOST_ROOT/libs/$SELF/test/cmake_install_test" cd "$cmake_test_folder" mkdir __build_cmake_install_test__ && cd __build_cmake_install_test__ cmake -G "${{matrix.generator}}" -DBOOST_CI_INSTALL_TEST=ON -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBUILD_SHARED_LIBS=${{matrix.build_shared}} -DCMAKE_PREFIX_PATH=~/.local .. cmake --build . --config ${{matrix.build_type}} -j$B2_JOBS ctest --output-on-failure --build-config ${{matrix.build_type}}