Repository setup #3
This file contains 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/ws_io/ | |
# | |
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/[email protected] | |
build: | |
needs: [ runner-selection ] | |
defaults: | |
run: | |
shell: bash | |
strategy: | |
fail-fast: false | |
matrix: | |
include: | |
# Windows compilers | |
# | |
- 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" | |
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)" | |
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)" | |
shared: true | |
build-type: "Release" | |
build-cmake: true | |
- compiler: "msvc" | |
version: "14.29" | |
cxxstd: "14,17" | |
latest-cxxstd: "17" | |
runs-on: "windows-2019" | |
b2-toolset: "msvc-14.2" | |
generator: "Visual Studio 16 2019" | |
is-earliest: true | |
name: "MSVC 14.29: C++14-17" | |
build-type: "Release" | |
- 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" | |
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" | |
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 | |
# OSX compilers | |
# | |
- compiler: "apple-clang" | |
version: "*" | |
cxx: "clang++" | |
cc: "clang" | |
runs-on: "macos-11" | |
b2-toolset: "clang" | |
is-latest: true | |
is-earliest: true | |
name: "Apple-Clang" | |
build-type: "Release" | |
build-cmake: true | |
- compiler: "apple-clang" | |
version: "*" | |
cxx: "clang++" | |
cc: "clang" | |
runs-on: "macos-11" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Apple-Clang (ubsan)" | |
build-type: "RelWithDebInfo" | |
ubsan: true | |
- compiler: "apple-clang" | |
version: "*" | |
cxx: "clang++" | |
cc: "clang" | |
runs-on: "macos-11" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Apple-Clang (asan)" | |
build-type: "RelWithDebInfo" | |
asan: true | |
# Linux compilers | |
# | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20" | |
build-type: "Release" | |
install: "cmake zlib1g-dev" | |
build-cmake: true | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (x86)" | |
x86: true | |
build-type: "Release" | |
install: "cmake gcc-13-multilib g++-13-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (coverage)" | |
coverage: true | |
build-type: "Debug" | |
cxxflags: "--coverage -fprofile-arcs -ftest-coverage" | |
ccflags: "--coverage -fprofile-arcs -ftest-coverage" | |
install: "cmake lcov zlib1g-dev wget unzip" | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (shared)" | |
shared: true | |
build-type: "Release" | |
install: "cmake zlib1g-dev" | |
build-cmake: true | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (shared, x86)" | |
shared: true | |
x86: true | |
build-type: "Release" | |
install: "cmake gcc-13-multilib g++-13-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
build-cmake: true | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (asan)" | |
asan: true | |
build-type: "RelWithDebInfo" | |
install: "cmake zlib1g-dev" | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (asan, x86)" | |
asan: true | |
x86: true | |
build-type: "RelWithDebInfo" | |
install: "cmake gcc-13-multilib g++-13-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (ubsan)" | |
ubsan: true | |
build-type: "RelWithDebInfo" | |
install: "cmake zlib1g-dev" | |
- compiler: "gcc" | |
version: "13" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "g++-13" | |
cc: "gcc-13" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
b2-toolset: "gcc" | |
is-latest: true | |
name: "GCC 13: C++17-20 (ubsan, x86)" | |
ubsan: true | |
x86: true | |
build-type: "RelWithDebInfo" | |
install: "cmake gcc-13-multilib g++-13-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- 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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
build-type: "Release" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20" | |
build-type: "Release" | |
install: "zlib1g-dev cmake" | |
build-cmake: true | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20 (x86)" | |
x86: true | |
build-type: "Release" | |
install: "cmake gcc-multilib g++-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++20 (time-trace)" | |
time-trace: true | |
build-type: "Release" | |
cxxflags: "-ftime-trace" | |
ccflags: "-ftime-trace" | |
install: "cmake zlib1g-dev wget unzip" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20 (asan)" | |
asan: true | |
build-type: "RelWithDebInfo" | |
install: "cmake zlib1g-dev" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20 (asan, x86)" | |
asan: true | |
x86: true | |
build-type: "RelWithDebInfo" | |
install: "cmake gcc-multilib g++-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20 (ubsan)" | |
ubsan: true | |
build-type: "RelWithDebInfo" | |
install: "cmake zlib1g-dev" | |
- compiler: "clang" | |
version: "17" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-17" | |
cc: "clang-17" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.10" | |
b2-toolset: "clang" | |
is-latest: true | |
name: "Clang 17: C++17-20 (ubsan, x86)" | |
ubsan: true | |
x86: true | |
build-type: "RelWithDebInfo" | |
install: "cmake gcc-multilib g++-multilib zlib1g-dev zlib1g-dev:i386 libssl-dev:i386" | |
- compiler: "clang" | |
version: "16" | |
cxxstd: "17,20" | |
latest-cxxstd: "20" | |
cxx: "clang++-16" | |
cc: "clang-16" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:23.04" | |
install: "cmake" | |
b2-toolset: "clang" | |
name: "Clang 16: C++17-20" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
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" | |
build-type: "Release" | |
- compiler: "clang" | |
version: "^3.8" | |
cxxstd: "11" | |
latest-cxxstd: "11" | |
cxx: "clang++-3.8" | |
cc: "clang-3.8" | |
runs-on: "ubuntu-latest" | |
container: "ubuntu:16.04" | |
b2-toolset: "clang" | |
is-earliest: true | |
name: "Clang ^3.8: C++11" | |
build-type: "Release" | |
name: ${{ matrix.name }} | |
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)[matrix.runs-on] }} | |
container: | |
image: ${{ matrix.container }} | |
options: --privileged | |
timeout-minutes: 120 | |
steps: | |
- name: Clone Boost.WS.Io | |
uses: actions/checkout@v3 | |
with: | |
path: ws-io-root | |
- name: Clone Boost.Ws.Proto | |
uses: actions/checkout@v3 | |
with: | |
repository: cppalliance/ws_proto | |
path: ws-proto-root | |
ref: develop | |
- 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: Setup C++ | |
uses: alandefreitas/cpp-actions/[email protected] | |
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: alandefreitas/cpp-actions/[email protected] | |
id: package-install | |
with: | |
apt-get-add-architecture: 'i386' | |
apt-get: >- | |
${{ matrix.install }} | |
libssl-dev | |
build-essential | |
- name: Clone Boost | |
uses: alandefreitas/cpp-actions/[email protected] | |
id: boost-clone | |
with: | |
branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} | |
boost-dir: boost-source | |
scan-modules-dir: ws-io-root | |
scan-modules-ignore: ws_io | |
- name: Install packages (Windows) | |
uses: alandefreitas/cpp-actions/[email protected] | |
if: ${{ startsWith(matrix.runs-on, 'windows') }} | |
id: package-install-windows | |
with: | |
vcpkg: "zlib,openssl" | |
vcpkg-dir: vcpkg-root | |
vcpkg-triplet: ${{ matrix.x86 && 'x86-windows' || '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' || 'x64-windows' }} | |
addrmdl=${{ matrix.x86 && '32' || '64' }} | |
echo "using zlib : : <include>\"${home}/vcpkg-root/installed/${triplet}/include\" <search>\"${home}/vcpkg-root/installed/${triplet}/lib\" <name>zlib : <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\" <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' ) | |
cat ${toolchain} | |
echo "toolchain=${toolchain}" >> $GITHUB_OUTPUT | |
- 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"/ws-io-root "libs/$module" | |
cp -r "$workspace_root"/buffers-root libs/buffers | |
cp -r "$workspace_root"/http-proto-root libs/http_proto | |
cp -r "$workspace_root"/ws-proto-root libs/ws_proto | |
python3 tools/boostdep/depinst/depinst.py buffers | |
python3 tools/boostdep/depinst/depinst.py http_proto | |
python3 tools/boostdep/depinst/depinst.py ws_proto | |
- name: Boost B2 Workflow | |
uses: alandefreitas/cpp-actions/[email protected] | |
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: ws_io | |
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') && format('{0}/user-config.jam', steps.patch.outputs.workspace_root)) || '' }} | |
stop-on-error: true | |
- name: Boost CMake Workflow | |
uses: alandefreitas/cpp-actions/[email protected] | |
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_WS_IO_BUILD_TESTS=ON | |
export-compile-commands: ${{ matrix.time-trace }} | |
package: false | |
package-artifact: false | |
ref-source-dir: boost-root/libs/ws_io | |
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: alandefreitas/cpp-actions/[email protected] | |
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.15' | |
extra-args: | | |
-D BOOST_CI_INSTALL_TEST=ON | |
-D CMAKE_PREFIX_PATH=${{ steps.patch.outputs.workspace_root }}/.local | |
ref-source-dir: boost-root/libs/ws_io | |
trace-commands: true | |
toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
- name: Subdirectory Integration Workflow | |
uses: alandefreitas/cpp-actions/[email protected] | |
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.15' | |
extra-args: -D BOOST_CI_INSTALL_TEST=OFF | |
ref-source-dir: boost-root/libs/ws_io/test/cmake_test | |
toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }} | |
- name: Root Project CMake Workflow | |
uses: alandefreitas/cpp-actions/[email protected] | |
if: ${{ matrix.build-cmake || matrix.is-earliest }} | |
with: | |
source-dir: boost-root/libs/${{ steps.patch.outputs.module }} | |
build-dir: __build_root_test__ | |
generator: ${{ matrix.generator }} | |
generator-toolset: ${{ matrix.generator-toolset }} | |
build-type: ${{ matrix.build-type }} | |
run-tests: false | |
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 }} | |
extra-args: -D Boost_VERBOSE=ON -D BUILD_TESTING=ON -D BOOST_SRC_DIR="../boost-root" | |
cmake-version: '>=3.15' | |
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: alandefreitas/cpp-actions/[email protected] | |
if: matrix.time-trace | |
with: | |
source-dir: boost-root/libs/ws_io | |
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 "[![codecov](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA/graphs/sunburst.svg)](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "Commit: [![codecov](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA/graph/badge.svg)](https://codecov.io/github/$GITHUB_REPOSITORY/commit/$GITHUB_SHA)" >> $GITHUB_STEP_SUMMARY | |
echo "" >> $GITHUB_STEP_SUMMARY | |
echo "Branch: [![codecov](https://codecov.io/github/$GITHUB_REPOSITORY/branch/$GITHUB_REF_NAME/graph/badge.svg)](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.WS.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: alandefreitas/cpp-actions/[email protected] | |
with: | |
thank-non-regular: ${{ startsWith(github.ref, 'refs/tags/') }} | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
limit: 200 | |
tag-pattern: 'boost-.*\..*\..*' | |
antora: | |
name: Antora Docs | |
needs: [ runner-selection ] | |
runs-on: ${{ fromJSON(needs.runner-selection.outputs.labelmatrix)['ubuntu-latest'] }} | |
steps: | |
- name: Clone WS.Proto | |
uses: actions/checkout@v3 | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: 18 | |
- name: Setup C++ | |
uses: alandefreitas/cpp-actions/[email protected] | |
id: setup-cpp | |
with: | |
compiler: clang | |
version: 17 | |
- name: Build Antora Docs | |
run: | | |
cd doc | |
bash ./build_antora.sh | |
- name: Create Antora Docs Artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: antora-docs | |
path: doc/build/site |