router work #430
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
| # | |
| # Copyright (c) 2023 Christian Mazakas | |
| # Copyright (c) 2023 Alan de Freitas | |
| # Copyright (c) 2021-2023 Sam Darwin | |
| # Copyright (c) 2020-2021 Peter Dimov | |
| # Copyright (c) 2021 Andrey Semashev | |
| # | |
| # Distributed under the Boost Software License, Version 1.0. (See accompanying | |
| # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
| # | |
| # Official repository: https://github.com/cppalliance/beast2 | |
| # | |
| 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 | |
| DEFAULT_BUILD_VARIANT: debug,release | |
| UBSAN_OPTIONS: "print_stacktrace=1" | |
| ASAN_OPTIONS: "detect_invalid_pointer_pairs=2" | |
| jobs: | |
| runner-selection: | |
| name: Runner Selection | |
| 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 | |
| build: | |
| needs: [ runner-selection ] | |
| defaults: | |
| run: | |
| shell: bash | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # Windows compilers | |
| # | |
| - compiler: "msvc" | |
| version: "14.42" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| runs-on: "windows-2022" | |
| b2-toolset: "msvc-14.4" | |
| generator: "Visual Studio 17 2022" | |
| is-latest: true | |
| name: "MSVC 14.42: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "msvc" | |
| version: "14.34" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| runs-on: "windows-2022" | |
| b2-toolset: "msvc-14.3" | |
| generator: "Visual Studio 17 2022" | |
| is-latest: true | |
| name: "MSVC 14.34: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "msvc" | |
| version: "14.34" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| runs-on: "windows-2022" | |
| b2-toolset: "msvc-14.3" | |
| generator: "Visual Studio 17 2022" | |
| is-latest: true | |
| name: "MSVC 14.34: C++17-20 (x86)" | |
| shared: false | |
| x86: true | |
| build-type: "Release" | |
| - compiler: "msvc" | |
| version: "14.34" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| runs-on: "windows-2022" | |
| b2-toolset: "msvc-14.3" | |
| generator: "Visual Studio 17 2022" | |
| is-latest: true | |
| name: "MSVC 14.34: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "clang-cl" | |
| version: "*" | |
| cxx: "clang++-cl" | |
| cc: "clang-cl" | |
| runs-on: "windows-2022" | |
| b2-toolset: "clang-win" | |
| generator-toolset: "ClangCL" | |
| is-latest: true | |
| is-earliest: true | |
| name: "Windows-Clang" | |
| shared: false | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "mingw" | |
| version: "*" | |
| cxx: "g++" | |
| cc: "gcc" | |
| runs-on: "windows-2022" | |
| b2-toolset: "gcc" | |
| generator: "MinGW Makefiles" | |
| is-latest: true | |
| is-earliest: true | |
| name: "MinGW (shared)" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "mingw" | |
| version: "*" | |
| cxx: "g++" | |
| cc: "gcc" | |
| runs-on: "windows-2022" | |
| b2-toolset: "gcc" | |
| generator: "MinGW Makefiles" | |
| is-latest: true | |
| is-earliest: true | |
| name: "MinGW (static)" | |
| shared: false | |
| build-type: "Release" | |
| build-cmake: true | |
| # OSX compilers | |
| # | |
| - compiler: "apple-clang" | |
| version: "*" | |
| cxx: "clang++" | |
| cc: "clang" | |
| runs-on: "macos-15" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Apple-Clang (macOS 15)" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "apple-clang" | |
| version: "*" | |
| cxx: "clang++" | |
| cc: "clang" | |
| runs-on: "macos-15" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Apple-Clang (macOS 15, ubsan)" | |
| shared: false | |
| build-type: "RelWithDebInfo" | |
| ubsan: true | |
| - compiler: "apple-clang" | |
| version: "*" | |
| cxx: "clang++" | |
| cc: "clang" | |
| runs-on: "macos-15" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Apple-Clang (macOS 15, asan)" | |
| shared: true | |
| build-type: "RelWithDebInfo" | |
| asan: true | |
| - compiler: "apple-clang" | |
| version: "*" | |
| cxx: "clang++" | |
| cc: "clang" | |
| runs-on: "macos-14" | |
| b2-toolset: "clang" | |
| name: "Apple-Clang (macOS 14)" | |
| shared: false | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "apple-clang" | |
| version: "*" | |
| cxx: "clang++" | |
| cc: "clang" | |
| runs-on: "macos-13" | |
| b2-toolset: "clang" | |
| name: "Apple-Clang (macOS 13)" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| # Linux compilers | |
| # | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (no zlib)" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (x86)" | |
| shared: false | |
| x86: true | |
| build-type: "Release" | |
| install: "gcc-14-multilib g++-14-multilib" | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (x86)" | |
| shared: false | |
| x86: true | |
| build-type: "Release" | |
| install: "gcc-14-multilib g++-14-multilib" | |
| build-cmake: true | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (asan)" | |
| shared: true | |
| asan: true | |
| build-type: "RelWithDebInfo" | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (asan, x86)" | |
| shared: false | |
| asan: true | |
| x86: true | |
| build-type: "RelWithDebInfo" | |
| install: "gcc-14-multilib g++-14-multilib" | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (ubsan)" | |
| shared: false | |
| ubsan: true | |
| build-type: "RelWithDebInfo" | |
| - compiler: "gcc" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-14" | |
| cc: "gcc-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 14: C++17-20 (ubsan, x86)" | |
| shared: false | |
| ubsan: true | |
| x86: true | |
| build-type: "RelWithDebInfo" | |
| install: "gcc-14-multilib g++-14-multilib" | |
| - compiler: "gcc" | |
| version: "13" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-13" | |
| cc: "gcc-13" | |
| runs-on: "ubuntu-24.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 13: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "13" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-13" | |
| cc: "gcc-13" | |
| runs-on: "ubuntu-24.04" | |
| b2-toolset: "gcc" | |
| is-latest: true | |
| name: "GCC 13: C++17-20 (coverage)" | |
| shared: false | |
| coverage: true | |
| build-type: "Debug" | |
| cxxflags: "--coverage -fprofile-arcs -ftest-coverage" | |
| ccflags: "--coverage -fprofile-arcs -ftest-coverage" | |
| install: "lcov wget unzip" | |
| - compiler: "gcc" | |
| version: "12" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-12" | |
| cc: "gcc-12" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 12: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "11" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "g++-11" | |
| cc: "gcc-11" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 11: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "10" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "g++-10" | |
| cc: "gcc-10" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 10: C++14-17" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "9" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "g++-9" | |
| cc: "gcc-9" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 9: C++14-17" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "8" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "g++-8" | |
| cc: "gcc-8" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 8: C++14-17" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "7" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "g++-7" | |
| cc: "gcc-7" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 7: C++14-17" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "6" | |
| cxxstd: "11,14" | |
| latest-cxxstd: "14" | |
| cxx: "g++-6" | |
| cc: "gcc-6" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:18.04" | |
| b2-toolset: "gcc" | |
| name: "GCC 6: C++11-14" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "gcc" | |
| version: "5" | |
| cxxstd: "11" | |
| latest-cxxstd: "11" | |
| cxx: "g++-5" | |
| cc: "gcc-5" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:18.04" | |
| b2-toolset: "gcc" | |
| is-earliest: true | |
| name: "GCC 5: C++11" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| build-cmake: true | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20 (x86)" | |
| shared: false | |
| x86: true | |
| build-type: "Release" | |
| install: "gcc-multilib g++-multilib" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++20 (time-trace)" | |
| shared: true | |
| time-trace: true | |
| build-type: "Release" | |
| cxxflags: "-ftime-trace" | |
| ccflags: "-ftime-trace" | |
| install: " wget unzip" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20 (asan)" | |
| shared: false | |
| asan: true | |
| build-type: "RelWithDebInfo" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20 (asan, x86)" | |
| shared: true | |
| asan: true | |
| x86: true | |
| build-type: "RelWithDebInfo" | |
| install: "gcc-multilib g++-multilib" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20 (ubsan)" | |
| shared: false | |
| ubsan: true | |
| build-type: "RelWithDebInfo" | |
| - compiler: "clang" | |
| version: "18" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-18" | |
| cc: "clang-18" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:24.04" | |
| b2-toolset: "clang" | |
| is-latest: true | |
| name: "Clang 18: C++17-20 (ubsan, x86)" | |
| shared: true | |
| ubsan: true | |
| x86: true | |
| build-type: "RelWithDebInfo" | |
| install: "gcc-multilib g++-multilib" | |
| - compiler: "clang" | |
| version: "17" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-17" | |
| cc: "clang-17" | |
| runs-on: "ubuntu-24.04" | |
| b2-toolset: "clang" | |
| name: "Clang 17: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "16" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-16" | |
| cc: "clang-16" | |
| runs-on: "ubuntu-24.04" | |
| b2-toolset: "clang" | |
| name: "Clang 16: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "15" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-15" | |
| cc: "clang-15" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "clang" | |
| name: "Clang 15: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "14" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-14" | |
| cc: "clang-14" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "clang" | |
| name: "Clang 14: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "13" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-13" | |
| cc: "clang-13" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "clang" | |
| name: "Clang 13: C++17-20" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "12" | |
| cxxstd: "17,20" | |
| latest-cxxstd: "20" | |
| cxx: "clang++-12" | |
| cc: "clang-12" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "clang" | |
| name: "Clang 12: C++17-20" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "11" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-11" | |
| cc: "clang-11" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:22.04" | |
| b2-toolset: "clang" | |
| name: "Clang 11: C++14-17" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "10" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-10" | |
| cc: "clang-10" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "clang" | |
| name: "Clang 10: C++14-17" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "9" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-9" | |
| cc: "clang-9" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "clang" | |
| name: "Clang 9: C++14-17" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "8" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-8" | |
| cc: "clang-8" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "clang" | |
| name: "Clang 8: C++14-17" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "7" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-7" | |
| cc: "clang-7" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "clang" | |
| name: "Clang 7: C++14-17" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "6" | |
| cxxstd: "14,17" | |
| latest-cxxstd: "17" | |
| cxx: "clang++-6.0" | |
| cc: "clang-6.0" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:20.04" | |
| b2-toolset: "clang" | |
| name: "Clang 6: C++14-17" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "5" | |
| cxxstd: "11,14" | |
| latest-cxxstd: "14" | |
| cxx: "clang++-5.0" | |
| cc: "clang-5.0" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:18.04" | |
| b2-toolset: "clang" | |
| name: "Clang 5: C++11-14" | |
| shared: false | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "4" | |
| cxxstd: "11,14" | |
| latest-cxxstd: "14" | |
| cxx: "clang++-4.0" | |
| cc: "clang-4.0" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:18.04" | |
| b2-toolset: "clang" | |
| name: "Clang 4: C++11-14" | |
| shared: true | |
| build-type: "Release" | |
| - compiler: "clang" | |
| version: "3.9" | |
| cxxstd: "11" | |
| latest-cxxstd: "11" | |
| cxx: "clang++-3.9" | |
| cc: "clang-3.9" | |
| runs-on: "ubuntu-latest" | |
| container: "ubuntu:18.04" | |
| b2-toolset: "clang" | |
| is-earliest: true | |
| name: "Clang 3.9: C++11" | |
| shared: false | |
| build-type: "Release" | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.runs-on] }} | |
| container: | |
| image: ${{ matrix.container }} | |
| options: --privileged | |
| volumes: | |
| - /node20217:/node20217:rw,rshared | |
| - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: install nodejs20glibc2.17 | |
| if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} | |
| run: | | |
| apt-get update | |
| apt-get -yqq install xz-utils curl | |
| 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 | |
| - name: Clone Boost.Http.Io | |
| uses: actions/checkout@v3 | |
| with: | |
| path: http-io-root | |
| - name: Clone Boost.Http.Proto | |
| uses: actions/checkout@v3 | |
| with: | |
| repository: cppalliance/http_proto | |
| path: http-proto-root | |
| ref: develop | |
| - name: Clone Boost.Buffers | |
| uses: actions/checkout@v3 | |
| with: | |
| path: buffers-root | |
| repository: cppalliance/buffers | |
| ref: develop | |
| - name: Clone Boost.RunTimeServices | |
| uses: actions/checkout@v3 | |
| with: | |
| path: rts-root | |
| repository: cppalliance/rts | |
| ref: develop | |
| - name: Setup C++ | |
| uses: ashtum/cpp-actions/setup-cpp@v1.8.13 | |
| id: setup-cpp | |
| with: | |
| compiler: ${{ matrix.compiler }} | |
| version: ${{ matrix.version }} | |
| check-latest: ${{ matrix.compiler != 'clang' || matrix.version != '^3.8' }} | |
| trace-commands: true | |
| - name: Install packages | |
| uses: ashtum/cpp-actions/package-install@v1.8.13 | |
| id: package-install | |
| with: | |
| apt-get-add-architecture: ${{ matrix.x86 && 'i386' || '' }} | |
| apt-get: >- | |
| ${{ matrix.install }} | |
| build-essential libssl-dev zlib1g-dev libbrotli-dev libpsl-dev | |
| ${{ matrix.x86 && 'libssl-dev:i386 zlib1g-dev:i386 libbrotli-dev:i386 libpsl-dev:i386' || '' }} | |
| - name: Clone Boost | |
| uses: ashtum/cpp-actions/boost-clone@v1.8.13 | |
| id: boost-clone | |
| with: | |
| branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} | |
| boost-dir: boost-source | |
| cache: false | |
| modules-exclude-paths: '' | |
| scan-modules-dir: | | |
| http-io-root | |
| http-proto-root | |
| buffers-root | |
| rts-root | |
| scan-modules-ignore: | | |
| beast2 | |
| http_proto | |
| buffers | |
| rts | |
| - name: Install Packages (Windows) | |
| uses: ashtum/cpp-actions/package-install@v1.8.13 | |
| if: ${{ startsWith(matrix.runs-on, 'windows') }} | |
| id: package-install-windows | |
| with: | |
| vcpkg: zlib brotli openssl | |
| vcpkg-dir: vcpkg-root | |
| vcpkg-triplet: ${{ matrix.x86 && 'x86-windows-static' || 'x64-windows' }} | |
| - name: Patch user-config.jam (Windows) | |
| id: patch-user-config | |
| shell: bash | |
| if: ${{ startsWith(matrix.runs-on, 'windows') }} | |
| run: | | |
| set -xe | |
| home=$(pwd) | |
| triplet=${{ matrix.x86 && 'x86-windows-static' || 'x64-windows' }} | |
| addrmdl=${{ matrix.x86 && '32' || '64' }} | |
| # This is temporary until we move rts/build/brotli.jam to boost/tools/build | |
| echo "import-search ${home}/boost-root/libs/rts/build ;" | sed 's/\/d\//D:\//g' >> user-config.jam | |
| echo "using zlib : : <include>\"${home}/vcpkg-root/installed/${triplet}/include\" <search>\"${home}/vcpkg-root/installed/${triplet}/lib\" <dll-path>\"${home}/vcpkg-root/installed/${triplet}/bin\" <name>zlib : <address-model>${addrmdl} ;" | sed 's/\/d\//D:\//g' >> user-config.jam | |
| echo "using brotli : : <include>\"${home}/vcpkg-root/installed/${triplet}/include\" <search>\"${home}/vcpkg-root/installed/${triplet}/lib\" <dll-path>\"${home}/vcpkg-root/installed/${triplet}/bin\" : <address-model>${addrmdl} ;" | sed 's/\/d\//D:\//g' >> user-config.jam | |
| echo "using openssl : : <include>\"${home}/vcpkg-root/installed/${triplet}/include\" <search>\"${home}/vcpkg-root/installed/${triplet}/lib\" <dll-path>\"${home}/vcpkg-root/installed/${triplet}/bin\" <ssl-name>libssl <crypto-name>libcrypto : <address-model>${addrmdl} ;" | sed 's/\/d\//D:\//g' >> user-config.jam | |
| cat user-config.jam | |
| toolchain=$(echo "$GITHUB_WORKSPACE/vcpkg-root/scripts/buildsystems/vcpkg.cmake" | sed 's/\/d\//D:\//g' ) | |
| echo "toolchain=${toolchain}" >> $GITHUB_OUTPUT | |
| - name: Patch user-config.jam (macOS) | |
| if: ${{ startsWith(matrix.runs-on, 'macOS') }} | |
| run: | | |
| echo "using openssl : : <include>\"$(brew --prefix openssl)/include\" <search>\"$(brew --prefix openssl)/lib\" ;" >> user-config.jam | |
| - name: ASLR Fix | |
| if: ${{ startsWith(matrix.runs-on, 'ubuntu' )}} | |
| run: | | |
| sysctl vm.mmap_rnd_bits=28 | |
| - name: Patch Boost | |
| id: patch | |
| shell: bash | |
| run: | | |
| set -xe | |
| pwd | |
| ls | |
| ls -lah boost-source | |
| # Identify boost module being tested | |
| module=${GITHUB_REPOSITORY#*/} | |
| echo "module=$module" >> $GITHUB_OUTPUT | |
| # Identify GitHub workspace root | |
| workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') | |
| echo -E "workspace_root=$workspace_root" >> $GITHUB_OUTPUT | |
| # Remove module from boost-source | |
| rm -r "boost-source/libs/$module" || true | |
| # Copy cached boost-source to an isolated boost-root | |
| cp -r boost-source boost-root | |
| # Set boost-root output | |
| cd boost-root | |
| boost_root="$(pwd)" | |
| boost_root=$(echo "$boost_root" | sed 's/\\/\//g') | |
| echo -E "boost_root=$boost_root" >> $GITHUB_OUTPUT | |
| # Patch boost-root with workspace module | |
| cp -r "$workspace_root"/http-io-root "libs/$module" | |
| cp -r "$workspace_root"/http-proto-root libs/http_proto | |
| cp -r "$workspace_root"/buffers-root libs/buffers | |
| cp -r "$workspace_root"/rts-root libs/rts | |
| - name: Boost B2 Workflow | |
| uses: ashtum/cpp-actions/b2-workflow@v1.8.13 | |
| if: ${{ !matrix.coverage && !matrix.time-trace }} | |
| env: | |
| ASAN_OPTIONS: ${{ (startsWith(matrix.compiler, 'apple-clang') && 'detect_invalid_pointer_pairs=0') || 'detect_invalid_pointer_pairs=2' }} | |
| with: | |
| source-dir: boost-root | |
| modules: beast2 | |
| toolset: ${{ matrix.b2-toolset }} | |
| build-variant: ${{ matrix.build-type }} | |
| cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx || '' }} | |
| cxxstd: ${{ matrix.cxxstd }} | |
| address-model: ${{ (matrix.x86 && '32') || '64' }} | |
| asan: ${{ matrix.asan }} | |
| ubsan: ${{ matrix.ubsan }} | |
| shared: ${{ matrix.shared }} | |
| rtti: ${{ (matrix.is-latest && 'on,off') || 'on' }} | |
| cxxflags: ${{ (matrix.asan && '-fsanitize=pointer-subtract') || '' }} | |
| user-config: ${{ ((startsWith(matrix.runs-on, 'windows') || startsWith(matrix.runs-on, 'macOS')) && format('{0}/user-config.jam', steps.patch.outputs.workspace_root)) || '' }} | |
| stop-on-error: true | |
| extra-args: "libs/beast2/example" # https://github.com/ashtum/cpp-actions/issues/23 | |
| - name: Boost CMake Workflow | |
| uses: ashtum/cpp-actions/cmake-workflow@v1.8.13 | |
| if: ${{ matrix.coverage || matrix.time-trace || matrix.build-cmake || matrix.is-earliest }} | |
| with: | |
| source-dir: boost-root | |
| build-dir: __build_cmake_test__ | |
| generator: ${{ matrix.generator }} | |
| generator-toolset: ${{ matrix.generator-toolset }} | |
| build-type: ${{ matrix.build-type }} | |
| run-tests: true | |
| install-prefix: .local | |
| cxxstd: ${{ matrix.latest-cxxstd }} | |
| cc: ${{ steps.setup-cpp.outputs.cc || matrix.cc }} | |
| ccflags: ${{ matrix.ccflags }} | |
| cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx }} | |
| cxxflags: ${{ matrix.cxxflags }} | |
| shared: ${{ matrix.shared }} | |
| cmake-version: '>=3.15' | |
| extra-args: | | |
| -D Boost_VERBOSE=ON | |
| -D BOOST_INCLUDE_LIBRARIES="${{ steps.patch.outputs.module }}" | |
| -D BOOST_BEAST2_BUILD_TESTS=ON | |
| export-compile-commands: ${{ matrix.time-trace }} | |
| package: false | |
| package-artifact: false | |
| ref-source-dir: boost-root/libs/beast2 | |
| toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
| - name: Set Path | |
| if: startsWith(matrix.runs-on, 'windows') && matrix.shared | |
| run: echo "$GITHUB_WORKSPACE/.local/bin" >> $GITHUB_PATH | |
| - name: Set LD_LIBRARY_PATH | |
| if: startsWith(matrix.runs-on, 'ubuntu') && matrix.shared | |
| run: | | |
| echo "LD_LIBRARY_PATH=$GITHUB_WORKSPACE/.local/lib:$LD_LIBRARY_PATH" >> "$GITHUB_ENV" | |
| - name: Find Package Integration Workflow | |
| uses: ashtum/cpp-actions/cmake-workflow@v1.8.13 | |
| if: ${{ matrix.build-cmake || matrix.is-earliest }} | |
| with: | |
| source-dir: boost-root/libs/${{ steps.patch.outputs.module }}/test/cmake_test | |
| build-dir: __build_cmake_install_test__ | |
| generator: ${{ matrix.generator }} | |
| generator-toolset: ${{ matrix.generator-toolset }} | |
| build-type: ${{ matrix.build-type }} | |
| cxxstd: ${{ matrix.latest-cxxstd }} | |
| cc: ${{ steps.setup-cpp.outputs.cc || matrix.cc }} | |
| ccflags: ${{ matrix.ccflags }} | |
| cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx }} | |
| cxxflags: ${{ matrix.cxxflags }} | |
| shared: ${{ matrix.shared }} | |
| install: false | |
| cmake-version: '>=3.20' | |
| extra-args: | | |
| -D BOOST_CI_INSTALL_TEST=ON | |
| -D CMAKE_PREFIX_PATH=${{ steps.patch.outputs.workspace_root }}/.local | |
| ref-source-dir: boost-root/libs/beast2 | |
| trace-commands: true | |
| toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
| - name: Subdirectory Integration Workflow | |
| uses: ashtum/cpp-actions/cmake-workflow@v1.8.13 | |
| if: ${{ matrix.build-cmake || matrix.is-earliest }} | |
| with: | |
| source-dir: boost-root/libs/${{ steps.patch.outputs.module }}/test/cmake_test | |
| build-dir: __build_cmake_subdir_test__ | |
| generator: ${{ matrix.generator }} | |
| generator-toolset: ${{ matrix.generator-toolset }} | |
| build-type: ${{ matrix.build-type }} | |
| cxxstd: ${{ matrix.latest-cxxstd }} | |
| cc: ${{ steps.setup-cpp.outputs.cc || matrix.cc }} | |
| ccflags: ${{ matrix.ccflags }} | |
| cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx }} | |
| cxxflags: ${{ matrix.cxxflags }} | |
| shared: ${{ matrix.shared }} | |
| install: false | |
| cmake-version: '>=3.20' | |
| extra-args: -D BOOST_CI_INSTALL_TEST=OFF | |
| ref-source-dir: boost-root/libs/beast2/test/cmake_test | |
| toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
| - name: Root Project CMake Workflow | |
| uses: ashtum/cpp-actions/cmake-workflow@v1.8.13 | |
| if: ${{ matrix.build-cmake || matrix.is-earliest }} | |
| with: | |
| source-dir: boost-root/libs/${{ steps.patch.outputs.module }} | |
| build-dir: __build_root_test__ | |
| run-tests: true | |
| generator: ${{ matrix.generator }} | |
| generator-toolset: ${{ matrix.generator-toolset }} | |
| build-type: ${{ matrix.build-type }} | |
| install: false | |
| cxxstd: ${{ matrix.latest-cxxstd }} | |
| cc: ${{ steps.setup-cpp.outputs.cc || matrix.cc }} | |
| ccflags: ${{ matrix.ccflags }} | |
| cxx: ${{ steps.setup-cpp.outputs.cxx || matrix.cxx }} | |
| cxxflags: ${{ matrix.cxxflags }} | |
| shared: ${{ matrix.shared }} | |
| cmake-version: '>=3.20' | |
| package: false | |
| package-artifact: false | |
| ref-source-dir: boost-root | |
| toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
| - name: FlameGraph | |
| uses: ashtum/cpp-actions/flamegraph@v1.8.13 | |
| if: matrix.time-trace | |
| with: | |
| source-dir: boost-root/libs/beast2 | |
| build-dir: boost-root/__build_cmake_test__ | |
| github_token: ${{ secrets.GITHUB_TOKEN }} | |
| - name: Codecov | |
| if: ${{ matrix.coverage }} | |
| run: | | |
| set -x | |
| # Generate report | |
| gcov_tool="gcov" | |
| if command -v "gcov-${{ steps.setup-cpp.outputs.version-major }}.${{ steps.setup-cpp.outputs.version-minor }}" &> /dev/null; then | |
| gcov_tool="gcov" | |
| elif command -v "gcov-${{ steps.setup-cpp.outputs.version-major }}" &> /dev/null; then | |
| gcov_tool="gcov-${{ steps.setup-cpp.outputs.version-major }}" | |
| fi | |
| lcov -c -q -o "boost-root/__build_cmake_test__/coverage.info" -d "boost-root/__build_cmake_test__" --include "$(pwd)/boost-root/libs/${{steps.patch.outputs.module}}/*" --gcov-tool "$gcov_tool" | |
| # Upload to codecov | |
| bash <(curl -s https://codecov.io/bash) -f "boost-root/__build_cmake_test__/coverage.info" | |
| # Summary | |
| echo "# Coverage" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "[](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Commit: [](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| echo "Branch: [](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)" >> $GITHUB_STEP_SUMMARY | |
| echo "" >> $GITHUB_STEP_SUMMARY | |
| changelog: | |
| needs: [ runner-selection ] | |
| defaults: | |
| run: | |
| shell: bash | |
| name: Changelog Summary | |
| runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)['ubuntu-22.04'] }} | |
| timeout-minutes: 120 | |
| steps: | |
| - name: Clone Boost.Http.Io | |
| uses: actions/checkout@v3 | |
| with: | |
| # Avoid the common API rate limit exceeded error in boostorg by including 100 latest commits in any case | |
| fetch-depth: 100 | |
| - name: Changelog | |
| uses: ashtum/cpp-actions/create-changelog@v1.8.13 | |
| with: | |
| thank-non-regular: ${{ startsWith(github.ref, 'refs/tags/') }} | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| limit: 200 | |
| tag-pattern: 'boost-.*\..*\..*' | |
| antora: | |
| needs: [ runner-selection ] | |
| strategy: | |
| matrix: | |
| include: | |
| - { name: Windows, os: windows-latest } | |
| - { name: Ubuntu, os: ubuntu-latest } | |
| - { name: MacOS, os: macos-15 } | |
| name: Antora Docs (${{ matrix.name }}) | |
| runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.os] }} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - name: Install packages | |
| uses: ashtum/cpp-actions/package-install@v1.8.13 | |
| with: | |
| apt-get: git cmake | |
| - name: Clone Boost.Http.Io | |
| uses: actions/checkout@v3 | |
| with: | |
| path: http-io-root | |
| - name: Clone Boost.Http.Proto | |
| uses: actions/checkout@v3 | |
| with: | |
| repository: cppalliance/http_proto | |
| path: http-proto-root | |
| ref: develop | |
| - name: Clone Boost.Buffers | |
| uses: actions/checkout@v3 | |
| with: | |
| path: buffers-root | |
| repository: cppalliance/buffers | |
| ref: develop | |
| - name: Clone Boost.RunTimeServices | |
| uses: actions/checkout@v3 | |
| with: | |
| path: rts-root | |
| repository: cppalliance/rts | |
| ref: develop | |
| - name: Clone Boost | |
| uses: ashtum/cpp-actions/boost-clone@v1.8.13 | |
| id: boost-clone | |
| with: | |
| branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} | |
| boost-dir: boost-source | |
| cache: false | |
| modules-exclude-paths: '' | |
| scan-modules-dir: | | |
| http-io-root | |
| http-proto-root | |
| buffers-root | |
| rts-root | |
| scan-modules-ignore: | | |
| beast2 | |
| http_proto | |
| buffers | |
| rts | |
| - name: Patch Boost | |
| id: patch | |
| shell: bash | |
| run: | | |
| set -xe | |
| pwd | |
| ls | |
| ls -lah boost-source | |
| # Identify boost module being tested | |
| module=${GITHUB_REPOSITORY#*/} | |
| echo "module=$module" >> $GITHUB_OUTPUT | |
| # Identify GitHub workspace root | |
| workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') | |
| echo -E "workspace_root=$workspace_root" >> $GITHUB_OUTPUT | |
| # Remove module from boost-source | |
| rm -r "boost-source/libs/$module" || true | |
| # Copy cached boost-source to an isolated boost-root | |
| cp -r boost-source boost-root | |
| # Set boost-root output | |
| cd boost-root | |
| boost_root="$(pwd)" | |
| boost_root=$(echo "$boost_root" | sed 's/\\/\//g') | |
| echo -E "boost_root=$boost_root" >> $GITHUB_OUTPUT | |
| # Patch boost-root with workspace module | |
| cp -r "$workspace_root"/http-io-root "libs/$module" | |
| cp -r "$workspace_root"/http-proto-root libs/http_proto | |
| cp -r "$workspace_root"/buffers-root libs/buffers | |
| cp -r "$workspace_root"/rts-root libs/rts | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: 18 | |
| - name: Setup Ninja | |
| if: runner.os == 'Windows' | |
| uses: seanmiddleditch/gha-setup-ninja@v5 | |
| - name: Build Antora Docs | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| run: | | |
| git config --global --add safe.directory "$(pwd)" | |
| BOOST_SRC_DIR="$(pwd)/boost-root" | |
| export BOOST_SRC_DIR | |
| cd boost-root/libs/beast2 | |
| cd doc | |
| bash ./build_antora.sh | |
| # Antora returns zero even if it fails, so we check if the site directory exists | |
| if [ ! -d "build/site" ]; then | |
| echo "Antora build failed" | |
| exit 1 | |
| fi | |
| - name: Create Antora Docs Artifact | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: antora-docs-${{ matrix.name }} | |
| path: boost-root/libs/beast2/doc/build/site |