Skip to content

flex-await improvements #53

flex-await improvements

flex-await improvements #53

Workflow file for this run

#
# 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/http_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/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.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-14"
b2-toolset: "clang"
is-latest: true
is-earliest: true
name: "Apple-Clang (macOS 14)"
build-type: "Release"
build-cmake: true
- compiler: "apple-clang"
version: "*"
cxx: "clang++"
cc: "clang"
runs-on: "macos-14"
b2-toolset: "clang"
is-latest: true
name: "Apple-Clang (macOS 14, ubsan)"
build-type: "RelWithDebInfo"
ubsan: true
- compiler: "apple-clang"
version: "*"
cxx: "clang++"
cc: "clang"
runs-on: "macos-14"
b2-toolset: "clang"
is-latest: true
name: "Apple-Clang (macOS 14, 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: Enable Node 16
run: |
echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV
- name: ASLR Fix
if: ${{ startsWith(matrix.runs-on, 'ubuntu' )}}
run: sysctl vm.mmap_rnd_bits=28
- 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: Setup C++
uses: alandefreitas/cpp-actions/setup-cpp@v1.8.0
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/package-install@v1.8.0
id: package-install
with:
apt-get-add-architecture: 'i386'
apt-get: >-
${{ matrix.install }}
libssl-dev
build-essential
- name: Clone Boost
uses: alandefreitas/cpp-actions/boost-clone@v1.8.0
id: boost-clone
with:
branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }}
boost-dir: boost-source
scan-modules-dir: http-io-root
scan-modules-ignore: http_io
- name: Install packages (Windows)
uses: alandefreitas/cpp-actions/package-install@v1.8.0
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' }}
ls -lah "${home}/vcpkg-root/installed/${triplet}/include"
ls -lah "${home}/vcpkg-root/installed/${triplet}/lib"
touch user-config.jam
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' )
echo "toolchain=${toolchain}" >> $GITHUB_OUTPUT
- 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"/buffers-root libs/buffers
cp -r "$workspace_root"/http-proto-root libs/http_proto
python3 tools/boostdep/depinst/depinst.py buffers
python3 tools/boostdep/depinst/depinst.py http_proto
- name: Boost B2 Workflow
uses: alandefreitas/cpp-actions/b2-workflow@v1.7.0
if: ${{ !matrix.coverage && !matrix.time-trace }}
with:
source-dir: boost-root
modules: http_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/cmake-workflow@v1.8.0
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_HTTP_IO_BUILD_TESTS=ON
export-compile-commands: ${{ matrix.time-trace }}
package: false
package-artifact: false
ref-source-dir: boost-root/libs/http_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/cmake-workflow@v1.8.0
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/http_io
trace-commands: true
toolchain: ${{ (startsWith(matrix.runs-on, 'windows') && steps.patch-user-config.outputs.toolchain) || '' }}
- name: Subdirectory Integration Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.8.0
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/http_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/cmake-workflow@v1.8.0
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/flamegraph@v1.8.0
if: matrix.time-trace
with:
source-dir: boost-root/libs/http_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.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: alandefreitas/cpp-actions/create-changelog@v1.8.0
with:
thank-non-regular: ${{ startsWith(github.ref, 'refs/tags/') }}
github-token: ${{ secrets.GITHUB_TOKEN }}
limit: 200
tag-pattern: 'boost-.*\..*\..*'
antora:
name: Antora Docs
runs-on: ubuntu-latest
steps:
- name: Clone Boost.Http.Io
uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Setup C++
uses: alandefreitas/cpp-actions/setup-cpp@v1.8.2
id: setup-cpp
with:
compiler: clang
version: 18
- name: Build Antora Docs
run: |
set -xe
CXX="/usr/bin/clang++-18"
export CXX
CC="/usr/bin/clang-18"
export CC
cd doc
bash ./build_antora.sh
- name: Create Antora Docs Artifact
uses: actions/upload-artifact@v3
with:
name: antora-docs
path: doc/build/site