Skip to content

fix: format_args zero serialization #2087

fix: format_args zero serialization

fix: format_args zero serialization #2087

Workflow file for this run

# Copyright 2020-2021 Peter Dimov
# Copyright 2021 Andrey Semashev
#
# 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:
branches:
- master
- develop
- feature/**
push:
branches:
- '*'
tags:
- "boost-*.*.*"
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
jobs:
cpp-matrix:
runs-on: ubuntu-latest
name: Generate Test Matrix
outputs:
matrix: ${{ steps.cpp-matrix.outputs.matrix }}
steps:
- name: Generate Test Matrix
uses: alandefreitas/cpp-actions/cpp-matrix@v1.4.1
id: cpp-matrix
with:
compilers: |
gcc >=4.8
clang >=3.8
msvc >=14.20
apple-clang *
mingw *
clang-cl *
standards: '>=11'
latest-factors: |
gcc Coverage UBSan
factors: |
gcc Asan Shared No-Threads
msvc Shared x86
clang Time-Trace
mingw Shared
trace-commands: true
build:
needs: cpp-matrix
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
include: ${{ fromJSON(needs.cpp-matrix.outputs.matrix) }}
name: ${{ matrix.name }}
runs-on: ${{matrix.runs-on}}
container: ${{matrix.container}}
timeout-minutes: 120
steps:
- name: Clone Boost.URL
uses: actions/checkout@v3
- name: Setup C++
uses: alandefreitas/cpp-actions/setup-cpp@v1.4.1
id: setup-cpp
with:
compiler: ${{ matrix.compiler }}
version: ${{ matrix.version }}
- name: Install packages
uses: alandefreitas/cpp-actions/package-install@v1.4.1
id: package-install
with:
apt-get: ${{ matrix.install }}
- name: Clone Boost
uses: alandefreitas/cpp-actions/boost-clone@v1.4.1
id: boost-clone
with:
branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }}
boost-dir: ../boost-source
scan-modules-dir: .
scan-modules-ignore: url
- name: Patch Boost
working-directory: ../boost-source
id: patch
shell: bash
run: |
set -xe
module=${GITHUB_REPOSITORY#*/}
echo "module=$module" >> $GITHUB_OUTPUT
workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g')
rm -r "libs/$module" || true
cd ..
mkdir boost-root || true
cp -r "boost-source"/* "boost-root"
cd boost-root
mkdir "libs/$module"
cp -r "$workspace_root"/* "libs/$module"
cxxstd=${{ matrix.cxxstd }}
latest_std=$(echo $cxxstd | awk -F ',' '{print $NF}')
echo "latest_std=$latest_std" >> $GITHUB_OUTPUT
- name: Boost CMake Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.4.1
with:
source-dir: ../boost-root
build-dir: __build_cmake_test__
generator: ${{ matrix.generator }}
build-type: ${{ matrix.build-type }}
build-target: tests boost_url_tests boost_url_limits boost_url_extra
run-tests: true
install-prefix: $GITHUB_WORKSPACE/.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: ${{ format('-D Boost_VERBOSE=ON -D BOOST_INCLUDE_LIBRARIES={0} -D BOOST_URL_DISABLE_THREADS={1}', steps.patch.outputs.module, ( matrix.no-threads && 'ON' ) || 'OFF') }}
export-compile-commands: ${{ matrix.time-trace }}
package: false
package-artifact: false
ref-source-dir: ../boost-root/libs/url
- name: Subdirectory Integration Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.4.1
with:
source-dir: ../boost-root/libs/${{ steps.patch.outputs.module }}/test/cmake_test
build-dir: __build_cmake_subdir_test__
generator: ${{ matrix.generator }}
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.11'
extra-args: -D BOOST_CI_INSTALL_TEST=OFF
ref-source-dir: ../boost-root/libs/url/test/cmake_test
- name: Find Package Integration Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.4.1
with:
source-dir: ../boost-root/libs/${{ steps.patch.outputs.module }}/test/cmake_test
build-dir: __build_cmake_install_test__
generator: ${{ matrix.generator }}
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
extra-args: -D BOOST_CI_INSTALL_TEST=ON -D CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE/.local
package: false
package-artifact: false
ref-source-dir: ../boost-root/libs/url/test/cmake_test
- name: Root Project CMake Workflow
uses: alandefreitas/cpp-actions/cmake-workflow@v1.4.1
with:
source-dir: .
build-dir: __build_root_test__
generator: ${{ matrix.generator }}
build-type: ${{ matrix.build-type }}
build-target: tests boost_url_tests boost_url_limits boost_url_extra
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"
package: false
package-artifact: false
ref-source-dir: .
- name: Boost B2 Workflow
uses: alandefreitas/cpp-actions/b2-workflow@v1.4.1
with:
source-dir: ../boost-root
modules: url
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 }}
tsan: ${{ matrix.tsan }}
shared: ${{ matrix.shared }}
- name: FlameGraph
uses: alandefreitas/cpp-actions/flamegraph@v1.4.1
if: matrix.time-trace
with:
source-dir: ../boost-root/libs/url
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: cpp-matrix
defaults:
run:
shell: bash
name: Changelog Summary
runs-on: ubuntu-22.04
timeout-minutes: 120
steps:
- name: Clone cpp-actions
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@5002c2c59e172031bba5626f6dff319e86d9bda1 # v1.4.1
with:
thank-non-regular: ${{ startsWith(github.ref, 'refs/tags/') }}
github-token: ${{ secrets.GITHUB_TOKEN }}
limit: 200
tag-pattern: 'boost-.*\..*\..*'