diff --git a/.appveyor.yml b/.appveyor.yml new file mode 100644 index 0000000..b5af410 --- /dev/null +++ b/.appveyor.yml @@ -0,0 +1,116 @@ +# Copyright 2016, 2017 Peter Dimov +# Copyright 2017 - 2019 James E. King III +# Copyright 2019 - 2021 Alexander Grund +# 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) + +# +# Generic Appveyor build script for boostorg repositories +# See: https://github.com/boostorg/boost-ci/ +# +# Instructions for customizing this script for your library: +# +# 1. Customize the compilers and language levels you want. +# 2. If you have more than include/, src/, test/, example/, examples/, +# benchmark/ or tools/ directories, set the environment variable DEPINST. +# For example if your build uses code in "bench/" and "fog/" directories: +# - DEPINST: --include bench --include fog +# 3. Enable pull request builds in your boostorg/ account. +# +# That's it - the script will do everything else for you. +# + +version: 1.0.{build}-{branch} + +shallow_clone: true + +branches: + only: + - master + - develop + - /bugfix\/.*/ + - /feature\/.*/ + - /fix\/.*/ + - /pr\/.*/ + +matrix: + fast_finish: false + # Adding MAYFAIL to any matrix job allows it to fail but the build stays green: + allow_failures: + - MAYFAIL: true + +environment: + global: + SELF: logic + B2_CI_VERSION: 1 + GIT_FETCH_JOBS: 4 + # see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties + # to use the default for a given environment, comment it out; recommend you build debug and release however: + # on Windows it is important to exercise all the possibilities, especially shared vs static, however most + # libraries that care about this exercise it in their Jamfiles... + B2_ADDRESS_MODEL: 32,64 + B2_LINK: shared,static + # B2_THREADING: threading=multi,single + B2_VARIANT: release + + matrix: + - FLAVOR: Visual Studio 2017 C++2a Strict + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_CXXFLAGS: -permissive- + B2_CXXSTD: 2a + B2_TOOLSET: msvc-14.1 + + - FLAVOR: Visual Studio 2017 C++14/17 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_CXXSTD: 14,17 + B2_TOOLSET: msvc-14.1 + + - FLAVOR: clang-cl + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + B2_ADDRESS_MODEL: 64 + B2_CXXSTD: 11,14,17 + B2_TOOLSET: clang-win + + - FLAVOR: Visual Studio 2015, 2013 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + B2_TOOLSET: msvc-12.0,msvc-14.0 + + - FLAVOR: cygwin (32-bit) + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ADDPATH: C:\cygwin\bin; + B2_ADDRESS_MODEL: 32 + B2_CXXSTD: 03,11,14,1z + B2_TOOLSET: gcc + + - FLAVOR: cygwin (64-bit) + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 + ADDPATH: C:\cygwin64\bin; + B2_ADDRESS_MODEL: 64 + B2_CXXSTD: 03,11,14,1z + B2_TOOLSET: gcc + + - FLAVOR: mingw32 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + B2_ADDRESS_MODEL: 32 + ADDPATH: C:\mingw\bin; + B2_CXXSTD: 03,11,14,1z + B2_TOOLSET: gcc + + - FLAVOR: mingw64 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 + ADDPATH: C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin; + B2_ADDRESS_MODEL: 64 + B2_CXXSTD: 03,11,14,17,2a + B2_TOOLSET: gcc + +install: + - git clone --depth 1 https://github.com/boostorg/boost-ci.git C:\boost-ci-cloned + # Copy ci folder if not testing Boost.CI + - if NOT "%APPVEYOR_PROJECT_NAME%" == "boost-ci" xcopy /s /e /q /i /y C:\boost-ci-cloned\ci .\ci + - rmdir /s /q C:\boost-ci-cloned + - ci\appveyor\install.bat + +build: off + +test_script: ci\build.bat + diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000..a049272 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,31 @@ +# Copyright 2019 - 2021 Alexander Grund +# 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) +# +# Sample codecov configuration file. Edit as required + +codecov: + max_report_age: off + require_ci_to_pass: yes + notify: + # Increase this if you have multiple coverage collection jobs + after_n_builds: 2 + wait_for_ci: yes + +parsers: + gcov: + branch_detection: + conditional: yes + loop: yes + method: no + macro: no + +# Change how pull request comments look +comment: + layout: "reach,diff,flags,files,footer" + +# Ignore specific files or folders. Glob patterns are supported. +# See https://docs.codecov.com/docs/ignoring-paths +ignore: + - libs/logic/test/ + - test/ diff --git a/.drone.star b/.drone.star deleted file mode 100644 index 56d4654..0000000 --- a/.drone.star +++ /dev/null @@ -1,41 +0,0 @@ -# Use, modification, and distribution are -# subject to the Boost Software License, Version 1.0. (See accompanying -# file LICENSE.txt) -# -# Copyright Rene Rivera 2020. - -# For Drone CI we use the Starlark scripting language to reduce duplication. -# As the yaml syntax for Drone CI is rather limited. -# -# -globalenv={'B2_VARIANT': 'variant=release'} -linuxglobalimage="cppalliance/droneubuntu1604:1" -windowsglobalimage="cppalliance/dronevs2019" - -def main(ctx): - return [ - linux_cxx("B2_TOOLSET=gcc-4.8 B2_CXXSTD=03,11 Job 0", "g++-4.8", packages="g++-4.8", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'B2_TOOLSET': 'gcc-4.8', 'B2_CXXSTD': '03,11', 'DRONE_JOB_UUID': 'b6589fc6ab'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-4.9 B2_CXXSTD=03,11 Job 1", "g++-4.9", packages="g++-4.9", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'B2_TOOLSET': 'gcc-4.9', 'B2_CXXSTD': '03,11', 'DRONE_JOB_UUID': '356a192b79'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-5 B2_CXXSTD=03,11 Job 2", "g++-5", packages="g++-5", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-5', 'B2_CXXSTD': '03,11', 'DRONE_JOB_UUID': 'da4b9237ba'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-6 B2_CXXSTD=11,14 Job 3", "g++-6", packages="g++-6", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-6', 'B2_CXXSTD': '11,14', 'DRONE_JOB_UUID': '77de68daec'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-7 B2_CXXSTD=14,17 Job 4", "g++-7", packages="g++-7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-7', 'B2_CXXSTD': '14,17', 'DRONE_JOB_UUID': '1b64538924'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-8 B2_CXXSTD=17,2a Job 5", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '17,2a', 'DRONE_JOB_UUID': 'ac3478d69a'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=gcc-9 B2_CXXSTD=17,2a Job 6", "g++-9", packages="g++-9", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'gcc-9', 'B2_CXXSTD': '17,2a', 'DRONE_JOB_UUID': 'c1dfd96eea'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-3.8 B2_CXXSTD=03,11 Job 7", "clang++-3.8", packages="clang-3.8 libstdc++-6-dev", llvm_os="xenial", llvm_ver="3.8", buildtype="boost", buildscript="drone", image="cppalliance/droneubuntu1404:1", environment={'B2_TOOLSET': 'clang-3.8', 'B2_CXXSTD': '03,11', 'DRONE_JOB_UUID': '902ba3cda1'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 8", "clang++-4.0", packages="clang-4.0 libstdc++-6-dev", llvm_os="xenial", llvm_ver="4.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-4.0', 'B2_CXXSTD': '11,14', 'DRONE_JOB_UUID': 'fe5dbbcea5'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-5.0 B2_CXXSTD=11,14 Job 9", "clang++-5.0", packages="clang-5.0 libstdc++-7-dev", llvm_os="xenial", llvm_ver="5.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-5.0', 'B2_CXXSTD': '11,14', 'DRONE_JOB_UUID': '0ade7c2cf9'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17 Job 10", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '14,17', 'DRONE_JOB_UUID': 'b1d5781111'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-7 B2_CXXSTD=17,2a Job 11", "clang++-7", packages="clang-7 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="7", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-7', 'B2_CXXSTD': '17,2a', 'DRONE_JOB_UUID': '17ba079149'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-8 B2_CXXSTD=17,2a Job 12", "clang++-8", packages="clang-8 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-8', 'B2_CXXSTD': '17,2a', 'DRONE_JOB_UUID': '7b52009b64'}, globalenv=globalenv), - linux_cxx("B2_TOOLSET=clang-6.0 B2_CXXSTD=03,11,14 Job 13", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '03,11,14', 'B2_CXXFLAGS': '-stdlib=libc++', 'DRONE_JOB_UUID': 'bd307a3ec3'}, globalenv=globalenv), - osx_cxx("B2_TOOLSET=clang B2_CXXSTD=03,11,17 Job 14", "g++", packages="", buildtype="boost", buildscript="drone", environment={'B2_TOOLSET': 'clang', 'B2_CXXSTD': '03,11,17', 'DRONE_JOB_UUID': 'fa35e19212'}, globalenv=globalenv), - linux_cxx("COMMENT=codecov.io B2_CXXSTD=03,11 B2_TOOLSET Job 15", "g++-8", packages="g++-8", buildtype="b5847f804b-0fcaf592f9", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'codecov.io', 'B2_CXXSTD': '03,11', 'B2_TOOLSET': 'gcc-8', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'DRONE_JOB_UUID': 'f1abd67035'}, globalenv=globalenv), - linux_cxx("COMMENT=asan B2_VARIANT=variant=debug B2_TOOL Job 16", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'asan', 'B2_VARIANT': 'variant=debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '03,11,14', 'B2_CXXFLAGS': 'address-sanitizer=norecover', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'DRONE_EXTRA_PRIVILEGED': 'True', 'DRONE_JOB_UUID': '1574bddb75'}, globalenv=globalenv, privileged=True), - linux_cxx("COMMENT=tsan B2_VARIANT=variant=debug B2_TOOL Job 17", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'tsan', 'B2_VARIANT': 'variant=debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '03,11,14', 'B2_CXXFLAGS': 'thread-sanitizer=norecover', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'DRONE_JOB_UUID': '0716d9708d'}, globalenv=globalenv), - linux_cxx("COMMENT=ubsan B2_VARIANT=variant=debug B2_TOO Job 18", "g++-8", packages="g++-8", buildtype="boost", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'ubsan', 'B2_VARIANT': 'variant=debug', 'B2_TOOLSET': 'gcc-8', 'B2_CXXSTD': '03,11,14', 'B2_CXXFLAGS': 'undefined-sanitizer=norecover', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'B2_LINKFLAGS': 'linkflags=-fuse-ld=gold', 'UBSAN_OPTIONS': 'print_stacktrace=1', 'DRONE_JOB_UUID': '9e6a55b6b4'}, globalenv=globalenv), - linux_cxx("COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 19", "clang++-6.0", packages="clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev", llvm_os="xenial", llvm_ver="6.0", buildtype="b5847f804b-db180b7bd2", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'valgrind', 'B2_TOOLSET': 'clang-6.0', 'B2_CXXSTD': '03,11,14', 'B2_DEFINES': 'define=BOOST_NO_STRESS_TEST=1', 'B2_VARIANT': 'variant=debug', 'B2_TESTFLAGS': 'testing.launcher=valgrind', 'VALGRIND_OPTS': '--error-exitcode=1', 'DRONE_JOB_UUID': 'b3f0c7f6bb'}, globalenv=globalenv), - linux_cxx("COMMENT=Coverity Scan B2_TOOLSET=clang Job 20", "g++", packages="binutils-gold gdb libc6-dbg qemu-user-static", buildtype="b5847f804b-cce9827eb5", buildscript="drone", image=linuxglobalimage, environment={'COMMENT': 'Coverity Scan', 'B2_TOOLSET': 'clang', 'DRONE_JOB_UUID': '91032ad7bb'}, globalenv=globalenv), - ] - -# from https://github.com/boostorg/boost-ci -load("@boost_ci//ci/drone/:functions.star", "linux_cxx","windows_cxx","osx_cxx","freebsd_cxx") diff --git a/.drone/drone.sh b/.drone/drone.sh deleted file mode 100755 index 1fc262e..0000000 --- a/.drone/drone.sh +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash - -# Copyright 2020 Rene Rivera, Sam Darwin -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE.txt or copy at http://boost.org/LICENSE_1_0.txt) - -set -e -export TRAVIS_BUILD_DIR=$(pwd) -export DRONE_BUILD_DIR=$(pwd) -export TRAVIS_BRANCH=$DRONE_BRANCH -export VCS_COMMIT_ID=$DRONE_COMMIT -export GIT_COMMIT=$DRONE_COMMIT -export REPO_NAME=$DRONE_REPO -export PATH=~/.local/bin:/usr/local/bin:$PATH - -if [ "$DRONE_JOB_BUILDTYPE" == "boost" ]; then - -echo '==================================> INSTALL' - -git clone https://github.com/boostorg/boost-ci.git boost-ci -cp -pr boost-ci/ci boost-ci/.codecov.yml . - -if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd -fi - -export SELF=`basename $REPO_NAME` -export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" -export BOOST_CI_SRC_FOLDER=$(pwd) - -. ./ci/common_install.sh - -echo '==================================> SCRIPT' - -cd $BOOST_ROOT/libs/$SELF -ci/travis/build.sh - -elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-0fcaf592f9" ]; then - -echo '==================================> INSTALL' - -git clone https://github.com/boostorg/boost-ci.git boost-ci -cp -pr boost-ci/ci boost-ci/.codecov.yml . - -if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd -fi - -export SELF=`basename $REPO_NAME` -export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" -export BOOST_CI_SRC_FOLDER=$(pwd) - -. ./ci/common_install.sh - -echo '==================================> SCRIPT' - -cd $BOOST_ROOT/libs/$SELF -ci/travis/codecov.sh - -elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-db180b7bd2" ]; then - -echo '==================================> INSTALL' - -git clone https://github.com/boostorg/boost-ci.git boost-ci -cp -pr boost-ci/ci boost-ci/.codecov.yml . - -if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd -fi - -export SELF=`basename $REPO_NAME` -export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" -export BOOST_CI_SRC_FOLDER=$(pwd) - -. ./ci/common_install.sh - -echo '==================================> SCRIPT' - -cd $BOOST_ROOT/libs/$SELF -ci/travis/valgrind.sh - -elif [ "$DRONE_JOB_BUILDTYPE" == "b5847f804b-cce9827eb5" ]; then - -echo '==================================> INSTALL' - -git clone https://github.com/boostorg/boost-ci.git boost-ci -cp -pr boost-ci/ci boost-ci/.codecov.yml . - -if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd -fi - -export SELF=`basename $REPO_NAME` -export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" -export BOOST_CI_SRC_FOLDER=$(pwd) - -. ./ci/common_install.sh - -echo '==================================> SCRIPT' - -if [ -n "${COVERITY_SCAN_NOTIFICATION_EMAIL}" -a \( "$DRONE_BRANCH" = "develop" -o "$DRONE_BRANCH" = "master" \) -a "$DRONE_BUILD_EVENT" = "push" ] ; then -cd $BOOST_ROOT/libs/$SELF -ci/travis/coverity.sh -fi - -fi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8420c5..28dbf9e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,12 @@ -name: GitHub Actions CI +# Copyright 2020-2021 Peter Dimov +# Copyright 2021 Andrey Semashev +# Copyright 2021 Alexander Grund +# Copyright 2022 James E. King III +# +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) +--- +name: CI on: pull_request: @@ -6,538 +14,324 @@ on: branches: - master - develop - - githubactions* + - bugfix/** - feature/** - fix/** - pr/** +concurrency: + group: ${{format('{0}:{1}', github.repository, github.ref)}} + cancel-in-progress: true + env: - B2_VARIANT: variant=release + SELF: logic + ASAN_OPTIONS: allocator_may_return_null=1 + GIT_FETCH_JOBS: 8 + NET_RETRY_COUNT: 5 + B2_CI_VERSION: 1 + B2_VARIANT: debug,release + B2_LINK: shared,static + LCOV_BRANCH_COVERAGE: 0 + CODECOV_NAME: Github Actions jobs: posix: + defaults: + run: + shell: bash + strategy: fail-fast: false matrix: include: - - name: "B2_TOOLSET=gcc-4.8 B2_CXXSTD=03,11 Job 0" - buildtype: "boost" - packages: "g++-4.8" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:14.04" - cxx: "g++-4.8" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-4.8" - b2_cxxstd: "03,11" - - name: "B2_TOOLSET=gcc-4.9 B2_CXXSTD=03,11 Job 1" - buildtype: "boost" - packages: "g++-4.9" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-4.9" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-4.9" - b2_cxxstd: "03,11" - - name: "B2_TOOLSET=gcc-5 B2_CXXSTD=03,11 Job 2" - buildtype: "boost" - packages: "g++-5" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-5" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-5" - b2_cxxstd: "03,11" - - name: "B2_TOOLSET=gcc-6 B2_CXXSTD=11,14 Job 3" - buildtype: "boost" - packages: "g++-6" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-6" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-6" - b2_cxxstd: "11,14" - - name: "B2_TOOLSET=gcc-7 B2_CXXSTD=14,17 Job 4" - buildtype: "boost" - packages: "g++-7" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-7" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-7" - b2_cxxstd: "14,17" - - name: "B2_TOOLSET=gcc-8 B2_CXXSTD=17,2a Job 5" - buildtype: "boost" - packages: "g++-8" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-8" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-8" - b2_cxxstd: "17,2a" - - name: "B2_TOOLSET=gcc-9 B2_CXXSTD=17,2a Job 6" - buildtype: "boost" - packages: "g++-9" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-9" - sources: "" - llvm_os: "" - llvm_ver: "" - b2_toolset: "gcc-9" - b2_cxxstd: "17,2a" - - name: "B2_TOOLSET=clang-3.8 B2_CXXSTD=03,11 Job 7" - buildtype: "boost" - packages: "clang-3.8 libstdc++-6-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:14.04" - cxx: "clang++-3.8" - sources: "" - llvm_os: "xenial" - llvm_ver: "3.8" - b2_toolset: "clang-3.8" - b2_cxxstd: "03,11" - - name: "B2_TOOLSET=clang-4.0 B2_CXXSTD=11,14 Job 8" - buildtype: "boost" - packages: "clang-4.0 libstdc++-6-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-4.0" - sources: "" - llvm_os: "xenial" - llvm_ver: "4.0" - b2_toolset: "clang-4.0" - b2_cxxstd: "11,14" - - name: "B2_TOOLSET=clang-5.0 B2_CXXSTD=11,14 Job 9" - buildtype: "boost" - packages: "clang-5.0 libstdc++-7-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-5.0" - sources: "" - llvm_os: "xenial" - llvm_ver: "5.0" - b2_toolset: "clang-5.0" - b2_cxxstd: "11,14" - - name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=14,17 Job 10" - buildtype: "boost" - packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-6.0" - sources: "" - llvm_os: "xenial" - llvm_ver: "6.0" - b2_toolset: "clang-6.0" - b2_cxxstd: "14,17" - - name: "B2_TOOLSET=clang-7 B2_CXXSTD=17,2a Job 11" - buildtype: "boost" - packages: "clang-7 libc6-dbg libc++-dev libstdc++-8-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-7" - sources: "" - llvm_os: "xenial" - llvm_ver: "7" - b2_toolset: "clang-7" - b2_cxxstd: "17,2a" - - name: "B2_TOOLSET=clang-8 B2_CXXSTD=17,2a Job 12" - buildtype: "boost" - packages: "clang-8 libc6-dbg libc++-dev libstdc++-8-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-8" - sources: "" - llvm_os: "xenial" - llvm_ver: "8" - b2_toolset: "clang-8" - b2_cxxstd: "17,2a" - - name: "B2_TOOLSET=clang-6.0 B2_CXXSTD=03,11,14 Job 13" - buildtype: "boost" - packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-6.0" - sources: "" - llvm_os: "xenial" - llvm_ver: "6.0" - b2_toolset: "clang-6.0" - b2_cxxstd: "03,11,14" - b2_cxxflags: "-stdlib=libc++" - - name: "COMMENT=codecov.io B2_CXXSTD=03,11 B2_TOOLSET Job 15" - buildtype: "b5847f804b-0fcaf592f9" - packages: "g++-8" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-8" - sources: "" - llvm_os: "" - llvm_ver: "" - comment: "codecov.io" - b2_cxxstd: "03,11" - b2_toolset: "gcc-8" - b2_defines: "define=BOOST_NO_STRESS_TEST=1" - - name: "COMMENT=asan B2_VARIANT=variant=debug B2_TOOL Job 16" - buildtype: "boost" - packages: "g++-8" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-8" - sources: "" - llvm_os: "" - llvm_ver: "" - comment: "asan" - b2_variant: "variant=debug" - b2_toolset: "gcc-8" - b2_cxxstd: "03,11,14" - b2_cxxflags: "address-sanitizer=norecover" - b2_defines: "define=BOOST_NO_STRESS_TEST=1" - - name: "COMMENT=tsan B2_VARIANT=variant=debug B2_TOOL Job 17" - buildtype: "boost" - packages: "g++-8" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "g++-8" - sources: "" - llvm_os: "" - llvm_ver: "" - comment: "tsan" - b2_variant: "variant=debug" - b2_toolset: "gcc-8" - b2_cxxstd: "03,11,14" - b2_cxxflags: "thread-sanitizer=norecover" - b2_defines: "define=BOOST_NO_STRESS_TEST=1" - - name: "COMMENT=ubsan B2_VARIANT=variant=debug B2_TOO Job 18" - buildtype: "boost" - packages: "g++-8" - packages_to_remove: "" - os: "ubuntu-18.04" - cxx: "g++-8" - sources: "" - llvm_os: "" - llvm_ver: "" - comment: "ubsan" - b2_variant: "variant=debug" - b2_toolset: "gcc-8" - b2_cxxstd: "03,11,14" - b2_cxxflags: "undefined-sanitizer=norecover" - b2_defines: "define=BOOST_NO_STRESS_TEST=1" - b2_linkflags: "linkflags=-fuse-ld=gold" - ubsan_options: "print_stacktrace=1" - - name: "COMMENT=valgrind B2_TOOLSET=clang-6.0 B2_CXXS Job 19" - buildtype: "b5847f804b-db180b7bd2" - packages: "clang-6.0 libc6-dbg libc++-dev libstdc++-8-dev" - packages_to_remove: "" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - cxx: "clang++-6.0" - sources: "" - llvm_os: "xenial" - llvm_ver: "6.0" - comment: "valgrind" - b2_toolset: "clang-6.0" - b2_cxxstd: "03,11,14" - b2_defines: "define=BOOST_NO_STRESS_TEST=1" - b2_variant: "variant=debug" - b2_testflags: "testing.launcher=valgrind" - valgrind_opts: "--error-exitcode=1" - - name: "COMMENT=Coverity Scan B2_TOOLSET=clang Job 20" - buildtype: "b5847f804b-cce9827eb5" - packages: "binutils-gold gdb libc6-dbg qemu-user-static" - packages_to_remove: "" - os: "ubuntu-18.04" - cxx: "g++" - sources: "" - llvm_os: "" - llvm_ver: "" - comment: "Coverity Scan" - b2_toolset: "clang" + # Linux, gcc + - { compiler: gcc-4.4, cxxstd: '98,0x', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: gcc-4.6, cxxstd: '03,0x', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: gcc-4.7, cxxstd: '03,11', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: gcc-4.8, cxxstd: '03,11', os: ubuntu-18.04 } + - { compiler: gcc-4.9, cxxstd: '03,11', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: gcc-5, cxxstd: '03,11,14,1z', os: ubuntu-18.04 } + - { compiler: gcc-6, cxxstd: '03,11,14,17', os: ubuntu-18.04 } + - { compiler: gcc-7, cxxstd: '03,11,14,17', os: ubuntu-18.04 } + - { compiler: gcc-8, cxxstd: '03,11,14,17,2a', os: ubuntu-18.04 } + - { compiler: gcc-9, cxxstd: '03,11,14,17,2a', os: ubuntu-18.04 } + - { compiler: gcc-10, cxxstd: '03,11,14,17,20', os: ubuntu-20.04 } + - { compiler: gcc-11, cxxstd: '03,11,14,17,20', os: ubuntu-20.04 } + - { name: GCC w/ sanitizers, sanitize: yes, + compiler: gcc-11, cxxstd: '03,11,14,17,20', os: ubuntu-20.04 } + - { name: Collect coverage, coverage: yes, + compiler: gcc-10, cxxstd: '03,11', os: ubuntu-20.04, install: 'g++-10-multilib', address-model: '32,64' } - runs-on: ${{ matrix.os }} - container: ${{ matrix.container }} + # Linux, clang + - { compiler: clang-3.5, cxxstd: '03,11', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: clang-3.6, cxxstd: '03,11,14', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: clang-3.7, cxxstd: '03,11,14', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: clang-3.8, cxxstd: '03,11,14', os: ubuntu-20.04, container: 'ubuntu:16.04' } + - { compiler: clang-3.9, cxxstd: '03,11,14', os: ubuntu-18.04 } + - { compiler: clang-4.0, cxxstd: '03,11,14', os: ubuntu-18.04 } + - { compiler: clang-5.0, cxxstd: '03,11,14,1z', os: ubuntu-18.04 } + - { compiler: clang-6.0, cxxstd: '03,11,14,17', os: ubuntu-18.04 } + - { compiler: clang-7, cxxstd: '03,11,14,17', os: ubuntu-18.04 } + # Note: clang-8 does not fully support C++20, so it is not compatible with some libstdc++ versions in this mode + - { compiler: clang-8, cxxstd: '03,11,14,17,2a', os: ubuntu-18.04, install: 'clang-8 g++-7', gcc_toolchain: 7 } + - { compiler: clang-9, cxxstd: '03,11,14,17,2a', os: ubuntu-20.04 } + - { compiler: clang-10, cxxstd: '03,11,14,17,20', os: ubuntu-20.04 } + - { compiler: clang-11, cxxstd: '03,11,14,17,20', os: ubuntu-20.04 } + - { name: Clang w/ valgrind, valgrind: yes, + compiler: clang-12, cxxstd: '03,11,14,17,20', os: ubuntu-20.04, install: 'valgrind' } + + # libc++ + - { compiler: clang-6.0, cxxstd: '03,11,14', os: ubuntu-18.04, stdlib: libc++, install: 'clang-6.0 libc++-dev libc++abi-dev' } + - { compiler: clang-12, cxxstd: '03,11,14,17,20', os: ubuntu-20.04, stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev' } + - { name: Clang w/ sanitizers, sanitize: yes, + compiler: clang-12, cxxstd: '03,11,14,17,20', os: ubuntu-20.04, stdlib: libc++, install: 'clang-12 libc++-12-dev libc++abi-12-dev' } + + # OSX, clang + - { compiler: clang, cxxstd: '03,11,14,17,2a', os: macos-10.15, sanitize: yes } + + # Coverity Scan + # requires two github secrets in repo to activate; see ci/github/coverity.sh + # does not run on pull requests, only on pushes into develop and master + - { name: Coverity, coverity: yes, + compiler: clang-10, cxxstd: '17', os: ubuntu-20.04, ccache: no } + + # multiarch (bigendian testing) - does not support coverage yet + - { name: Big-endian, multiarch: yes, + compiler: clang, cxxstd: '17', os: ubuntu-20.04, ccache: no, distro: fedora, edition: 34, arch: s390x } + + + timeout-minutes: 120 + runs-on: ${{matrix.os}} + container: ${{matrix.container}} + env: {B2_USE_CCACHE: 1} steps: - - name: Check if running in container - if: matrix.container != '' - run: echo "GHA_CONTAINER=${{ matrix.container }}" >> $GITHUB_ENV - - name: If running in container, upgrade packages - if: matrix.container != '' + - name: Setup environment run: | - apt-get -o Acquire::Retries=3 update && DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata && apt-get -o Acquire::Retries=3 install -y sudo software-properties-common wget curl apt-transport-https make apt-file sudo unzip libssl-dev build-essential autotools-dev autoconf automake g++ libc++-helpers python ruby cpio gcc-multilib g++-multilib pkgconf python3 ccache libpython-dev - sudo apt-add-repository ppa:git-core/ppa - sudo apt-get -o Acquire::Retries=3 update && apt-get -o Acquire::Retries=3 -y install git - python_version=$(python3 -c 'import sys; print("{0.major}.{0.minor}".format(sys.version_info))') - sudo wget https://bootstrap.pypa.io/pip/$python_version/get-pip.py - sudo python3 get-pip.py - sudo /usr/local/bin/pip install cmake + if [ -f "/etc/debian_version" ]; then + echo "DEBIAN_FRONTEND=noninteractive" >> $GITHUB_ENV + export DEBIAN_FRONTEND=noninteractive + fi + if [ -n "${{matrix.container}}" ] && [ -f "/etc/debian_version" ]; then + apt-get -o Acquire::Retries=$NET_RETRY_COUNT update + apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y sudo software-properties-common + # Need (newer) git + for i in {1..${NET_RETRY_COUNT:-3}}; do sudo -E add-apt-repository -y ppa:git-core/ppa && break || sleep 10; done + apt-get -o Acquire::Retries=$NET_RETRY_COUNT update + apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y g++ python libpython-dev git + fi + # multiple job types are not compatible with ccache, they use "ccache: no" in the matrix + if [[ "${{ matrix.ccache }}" == "no" ]]; then + echo "B2_USE_CCACHE=0" >> $GITHUB_ENV + fi + if [[ "${{ matrix.valgrind }}" == "yes" ]]; then + echo "B2_DEFINES=BOOST_NO_STRESS_TEST=1" >> $GITHUB_ENV + echo "B2_TESTFLAGS=testing.launcher=valgrind" >> $GITHUB_ENV + echo "B2_FLAGS=define=BOOST_USE_VALGRIND=1" >> $GITHUB_ENV + echo "VALGRIND_OPTS=--error-exitcode=1" >> $GITHUB_ENV + fi + git config --global pack.threads 0 - uses: actions/checkout@v2 + with: + # For coverage builds fetch the whole history, else only 1 commit using a 'fake ternary' + fetch-depth: ${{ matrix.coverage && '0' || '1' }} - - name: linux - shell: bash - env: - CXX: ${{ matrix.cxx }} - SOURCES: ${{ matrix.sources }} - LLVM_OS: ${{ matrix.llvm_os }} - LLVM_VER: ${{ matrix.llvm_ver }} - PACKAGES: ${{ matrix.packages }} - PACKAGES_TO_REMOVE: ${{ matrix.packages_to_remove }} - JOB_BUILDTYPE: ${{ matrix.buildtype }} - B2_TOOLSET: ${{ matrix.b2_toolset }} - B2_CXXSTD: ${{ matrix.b2_cxxstd }} - B2_CXXFLAGS: ${{ matrix.b2_cxxflags }} - COMMENT: ${{ matrix.comment }} - B2_DEFINES: ${{ matrix.b2_defines }} - B2_VARIANT: ${{ matrix.b2_variant }} - B2_LINKFLAGS: ${{ matrix.b2_linkflags }} - UBSAN_OPTIONS: ${{ matrix.ubsan_options }} - B2_TESTFLAGS: ${{ matrix.b2_testflags }} - VALGRIND_OPTS: ${{ matrix.valgrind_opts }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "linux" + - name: Cache ccache + uses: actions/cache@v2 + if: env.B2_USE_CCACHE + with: + path: ~/.ccache + key: ${{matrix.os}}-${{matrix.container}}-${{matrix.compiler}} + + - name: Fetch Boost.CI + uses: actions/checkout@v2 + with: + repository: boostorg/boost-ci + ref: master + path: boost-ci-cloned + + - name: Get CI scripts folder run: | - echo '==================================> SETUP' - echo '==================================> PACKAGES' - set -e - if [ -n "$PACKAGES_TO_REMOVE" ]; then sudo apt-get purge -y $PACKAGES_TO_REMOVE; fi - echo ">>>>> APT: REPO.." - for i in {1..3}; do sudo -E apt-add-repository -y "ppa:ubuntu-toolchain-r/test" && break || sleep 2; done - - if test -n "${LLVM_OS}" ; then - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - - if test -n "${LLVM_VER}" ; then - sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS}-${LLVM_VER} main" - else - # Snapshot (i.e. trunk) build of clang - sudo -E apt-add-repository "deb http://apt.llvm.org/${LLVM_OS}/ llvm-toolchain-${LLVM_OS} main" - fi - fi - echo ">>>>> APT: UPDATE.." - sudo -E apt-get -o Acquire::Retries=3 update - if test -n "${SOURCES}" ; then - echo ">>>>> APT: INSTALL SOURCES.." - for SOURCE in $SOURCES; do - sudo -E apt-add-repository ppa:$SOURCE - done - fi - echo ">>>>> APT: INSTALL ${PACKAGES}.." - sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES} + # Copy ci folder if not testing Boost.CI + [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . + rm -rf boost-ci-cloned - echo '==================================> INSTALL AND COMPILE' - set -e - export TRAVIS_BUILD_DIR=$(pwd) - export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')} - export VCS_COMMIT_ID=$GITHUB_SHA - export GIT_COMMIT=$GITHUB_SHA - export REPO_NAME=$(basename $GITHUB_REPOSITORY) - export USER=$(whoami) - export CC=${CC:-gcc} - export PATH=~/.local/bin:/usr/local/bin:$PATH + - name: Install packages + if: startsWith(matrix.os, 'ubuntu') + run: | + SOURCE_KEYS=(${{join(matrix.source_keys, ' ')}}) + SOURCES=(${{join(matrix.sources, ' ')}}) + # Add this by default + SOURCES+=(ppa:ubuntu-toolchain-r/test) + for key in "${SOURCE_KEYS[@]}"; do + for i in {1..$NET_RETRY_COUNT}; do + wget -O - "$key" | sudo apt-key add - && break || sleep 10 + done + done + for source in "${SOURCES[@]}"; do + for i in {1..$NET_RETRY_COUNT}; do + sudo add-apt-repository $source && break || sleep 10 + done + done + sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT update + if [[ -z "${{matrix.install}}" ]]; then + pkgs="${{matrix.compiler}}" + pkgs="${pkgs/gcc-/g++-}" + else + pkgs="${{matrix.install}}" + fi + sudo apt-get -o Acquire::Retries=$NET_RETRY_COUNT install -y $pkgs - if [ "$JOB_BUILDTYPE" == "boost" ]; then + - name: Setup GCC Toolchain + if: matrix.gcc_toolchain + run: | + GCC_TOOLCHAIN_ROOT="$HOME/gcc-toolchain" + echo "GCC_TOOLCHAIN_ROOT=$GCC_TOOLCHAIN_ROOT" >> $GITHUB_ENV + MULTIARCH_TRIPLET="$(dpkg-architecture -qDEB_HOST_MULTIARCH)" + mkdir -p "$GCC_TOOLCHAIN_ROOT" + ln -s /usr/include "$GCC_TOOLCHAIN_ROOT/include" + ln -s /usr/bin "$GCC_TOOLCHAIN_ROOT/bin" + mkdir -p "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET" + ln -s "/usr/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" "$GCC_TOOLCHAIN_ROOT/lib/gcc/$MULTIARCH_TRIPLET/${{matrix.gcc_toolchain}}" - echo '==================================> INSTALL' + - name: Setup multiarch + if: matrix.multiarch + run: | + sudo apt-get install --no-install-recommends -y binfmt-support qemu-user-static + sudo docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + git clone https://github.com/jeking3/bdde.git + echo "$(pwd)/bdde/bin/linux" >> ${GITHUB_PATH} + echo "BDDE_DISTRO=${{ matrix.distro }}" >> ${GITHUB_ENV} + echo "BDDE_EDITION=${{ matrix.edition }}" >> ${GITHUB_ENV} + echo "BDDE_ARCH=${{ matrix.arch }}" >> ${GITHUB_ENV} + echo "B2_DEFINES=BOOST_NO_STRESS_TEST=1" >> ${GITHUB_ENV} + echo "B2_WRAPPER=bdde" >> ${GITHUB_ENV} - git clone https://github.com/boostorg/boost-ci.git boost-ci - cp -pr boost-ci/ci boost-ci/.codecov.yml . + - name: Setup Boost + env: + B2_ADDRESS_MODEL: ${{matrix.address-model}} + B2_COMPILER: ${{matrix.compiler}} + B2_CXXSTD: ${{matrix.cxxstd}} + B2_SANITIZE: ${{matrix.sanitize}} + B2_STDLIB: ${{matrix.stdlib}} + run: source ci/github/install.sh - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd - fi + - name: Setup coverage collection + if: matrix.coverage + run: ci/github/codecov.sh "setup" - export SELF=`basename $REPO_NAME` - export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" - export BOOST_CI_SRC_FOLDER=$(pwd) + - name: Run tests + if: '!matrix.coverity' + run: ci/build.sh - . ./ci/common_install.sh + - name: Upload coverage + if: matrix.coverage + run: ci/codecov.sh "upload" - echo '==================================> SCRIPT' + - name: Run coverity + if: matrix.coverity && github.event_name == 'push' && (github.ref_name == 'develop' || github.ref_name == 'master') + run: ci/github/coverity.sh + env: + COVERITY_SCAN_NOTIFICATION_EMAIL: ${{ secrets.COVERITY_SCAN_NOTIFICATION_EMAIL }} + COVERITY_SCAN_TOKEN: ${{ secrets.COVERITY_SCAN_TOKEN }} - cd $BOOST_ROOT/libs/$SELF - ci/travis/build.sh - - elif [ "$JOB_BUILDTYPE" == "b5847f804b-0fcaf592f9" ]; then - - echo '==================================> INSTALL' - - git clone https://github.com/boostorg/boost-ci.git boost-ci - cp -pr boost-ci/ci boost-ci/.codecov.yml . - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd - fi - - export SELF=`basename $REPO_NAME` - export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" - export BOOST_CI_SRC_FOLDER=$(pwd) - - . ./ci/common_install.sh - - echo '==================================> SCRIPT' - - cd $BOOST_ROOT/libs/$SELF - ci/travis/codecov.sh - - elif [ "$JOB_BUILDTYPE" == "b5847f804b-db180b7bd2" ]; then - - echo '==================================> INSTALL' - - git clone https://github.com/boostorg/boost-ci.git boost-ci - cp -pr boost-ci/ci boost-ci/.codecov.yml . - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd - fi - - export SELF=`basename $REPO_NAME` - export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" - export BOOST_CI_SRC_FOLDER=$(pwd) - - . ./ci/common_install.sh - - echo '==================================> SCRIPT' - - cd $BOOST_ROOT/libs/$SELF - ci/travis/valgrind.sh - - elif [ "$JOB_BUILDTYPE" == "b5847f804b-cce9827eb5" ]; then - - echo '==================================> INSTALL' - - git clone https://github.com/boostorg/boost-ci.git boost-ci - cp -pr boost-ci/ci boost-ci/.codecov.yml . - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd - fi - - export SELF=`basename $REPO_NAME` - export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" - export BOOST_CI_SRC_FOLDER=$(pwd) - - . ./ci/common_install.sh - - echo '==================================> SCRIPT' - - if [ -n "${COVERITY_SCAN_NOTIFICATION_EMAIL}" -a \( "$TRAVIS_BRANCH" = "develop" -o "$TRAVIS_BRANCH" = "master" \) -a \("$GITHUB_EVENT_NAME" = "push" -o "$GITHUB_EVENT_NAME" = "cron" \) ] ; then - cd $BOOST_ROOT/libs/$SELF - ci/travis/coverity.sh - fi - - fi - osx: + windows: + defaults: + run: + shell: cmd strategy: fail-fast: false matrix: include: - - name: "B2_TOOLSET=clang B2_CXXSTD=03,11,17 Job 14" - buildtype: "boost" - packages: "" - os: "macos-10.15" - cxx: "g++" - sources: "" - llvm_os: "" - llvm_ver: "" - xcode_version: 11.7 - b2_toolset: "clang" - b2_cxxstd: "03,11,17" + - { toolset: msvc-14.2, cxxstd: '14,17,20', addrmd: '32,64', os: windows-2019 } + - { name: Collect coverage, coverage: yes, + toolset: msvc-14.3, cxxstd: '14,17,20', addrmd: '32,64', os: windows-2022 } + - { toolset: gcc, cxxstd: '03,11,14,17,2a', addrmd: '64', os: windows-2019 } - runs-on: ${{ matrix.os }} + runs-on: ${{matrix.os}} steps: - uses: actions/checkout@v2 - - name: Set DEVELOPER_DIR - if: matrix.xcode_version != '' - run: echo "DEVELOPER_DIR=/Applications/Xcode_${{ matrix.xcode_version }}.app/Contents/Developer" >> $GITHUB_ENV - - name: Test DEVELOPER_DIR - run: echo $DEVELOPER_DIR - - - name: "osx" - shell: bash - env: - CXX: ${{ matrix.cxx }} - SOURCES: ${{ matrix.sources }} - LLVM_OS: ${{ matrix.llvm_os }} - LLVM_VER: ${{ matrix.llvm_ver }} - PACKAGES: ${{ matrix.packages }} - JOB_BUILDTYPE: ${{ matrix.buildtype }} - B2_TOOLSET: ${{ matrix.b2_toolset }} - B2_CXXSTD: ${{ matrix.b2_cxxstd }} - B2_CXXFLAGS: ${{ matrix.b2_cxxflags }} - COMMENT: ${{ matrix.comment }} - B2_DEFINES: ${{ matrix.b2_defines }} - B2_VARIANT: ${{ matrix.b2_variant }} - B2_LINKFLAGS: ${{ matrix.b2_linkflags }} - UBSAN_OPTIONS: ${{ matrix.ubsan_options }} - B2_TESTFLAGS: ${{ matrix.b2_testflags }} - VALGRIND_OPTS: ${{ matrix.valgrind_opts }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "osx" + - name: Fetch Boost.CI + uses: actions/checkout@v2 + with: + repository: boostorg/boost-ci + ref: master + path: boost-ci-cloned + - name: Get CI scripts folder run: | - echo '==================================> SETUP' - set -e - sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck - echo '==================================> PACKAGES' - echo '==================================> INSTALL AND COMPILE' - set -e - export TRAVIS_BUILD_DIR=$(pwd) - export TRAVIS_BRANCH=${TRAVIS_BRANCH:-$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')} - export VCS_COMMIT_ID=$GITHUB_SHA - export GIT_COMMIT=$GITHUB_SHA - export REPO_NAME=$(basename $GITHUB_REPOSITORY) - export USER=$(whoami) - export CC=${CC:-gcc} - export PATH=~/.local/bin:/usr/local/bin:$PATH + REM Copy ci folder if not testing Boost.CI + if "%GITHUB_REPOSITORY%" == "%GITHUB_REPOSITORY:boost-ci=%" xcopy /s /e /q /i /y boost-ci-cloned\ci .\ci + rmdir /s /q boost-ci-cloned - if [ "$JOB_BUILDTYPE" == "boost" ]; then + - name: Setup Boost + run: ci\github\install.bat - echo '==================================> INSTALL' + - name: Run tests + if: '!matrix.coverage' + run: ci\build.bat + env: + B2_TOOLSET: ${{matrix.toolset}} + B2_CXXSTD: ${{matrix.cxxstd}} + B2_ADDRESS_MODEL: ${{matrix.addrmd}} - git clone https://github.com/boostorg/boost-ci.git boost-ci - cp -pr boost-ci/ci boost-ci/.codecov.yml . + - name: Collect coverage + shell: powershell + if: matrix.coverage + run: ci\opencppcoverage.ps1 + env: + B2_TOOLSET: ${{matrix.toolset}} + B2_CXXSTD: ${{matrix.cxxstd}} + B2_ADDRESS_MODEL: ${{matrix.addrmd}} - if [ "$TRAVIS_OS_NAME" == "osx" ]; then - unset -f cd - fi + - name: Upload coverage + if: matrix.coverage + uses: codecov/codecov-action@v2 + with: + files: __out/cobertura.xml - export SELF=`basename $REPO_NAME` - export BOOST_CI_TARGET_BRANCH="$TRAVIS_BRANCH" - export BOOST_CI_SRC_FOLDER=$(pwd) + CMake: + defaults: + run: + shell: bash - . ./ci/common_install.sh + strategy: + fail-fast: false + matrix: + include: + - { os: ubuntu-20.04, build_shared: ON, build_type: Release, generator: 'Unix Makefiles' } + - { os: ubuntu-20.04, build_shared: OFF, build_type: Debug, generator: 'Unix Makefiles' } + - { os: windows-2019, build_shared: ON, build_type: Release, generator: 'Visual Studio 16 2019' } + - { os: windows-2019, build_shared: OFF, build_type: Debug, generator: 'Visual Studio 16 2019' } - echo '==================================> SCRIPT' + timeout-minutes: 120 + runs-on: ${{matrix.os}} - cd $BOOST_ROOT/libs/$SELF - ci/travis/build.sh + steps: + - uses: actions/checkout@v2 - fi + - name: Fetch Boost.CI + uses: actions/checkout@v2 + with: + repository: boostorg/boost-ci + ref: master + path: boost-ci-cloned + + - name: Get CI scripts folder + run: | + # Copy ci folder if not testing Boost.CI + [[ "$GITHUB_REPOSITORY" =~ "boost-ci" ]] || cp -r boost-ci-cloned/ci . + rm -rf boost-ci-cloned + + - name: Setup Boost + env: {B2_DONT_BOOTSTRAP: 1} + run: source ci/github/install.sh + + - name: Run CMake + run: | + cd "$BOOST_ROOT" + mkdir __build_cmake_test__ && cd __build_cmake_test__ + cmake -G "${{matrix.generator}}" -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DBOOST_INCLUDE_LIBRARIES=$SELF -DBUILD_SHARED_LIBS=${{matrix.build_shared}} -DBUILD_TESTING=ON -DBoost_VERBOSE=ON .. + cmake --build . --config ${{matrix.build_type}} diff --git a/README.md b/README.md index a71ecd3..290f4cb 100644 --- a/README.md +++ b/README.md @@ -11,10 +11,10 @@ Distributed under the [Boost Software License, Version 1.0](http://www.boost.org ### Build Status -Branch | Travis | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests | +Branch | GHA CI | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests | :-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- | -[`master`](https://github.com/boostorg/logic/tree/master) | [![Build Status](https://travis-ci.org/boostorg/logic.svg?branch=master)](https://travis-ci.org/boostorg/logic) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/master?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/master) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/master)| [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/logic.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](http://www.boost.org/doc/libs/master/doc/html/logic.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/logic.html) -[`develop`](https://github.com/boostorg/logic/tree/develop) | [![Build Status](https://travis-ci.org/boostorg/logic.svg?branch=develop)](https://travis-ci.org/boostorg/logic) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/develop?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/develop) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/logic.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/logic.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/logic.html) +[`master`](https://github.com/boostorg/logic/tree/master) | [![Build Status](https://github.com/boostorg/logic/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/logic/actions?query=branch:master) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/master?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/master) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/master)| [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/logic.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](http://www.boost.org/doc/libs/master/doc/html/tribool.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/logic.html) +[`develop`](https://github.com/boostorg/logic/tree/develop) | [![Build Status](https://github.com/boostorg/logic/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/logic/actions?query=branch:develop) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/develop?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/develop) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/logic.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/tribool.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/logic.html) ### Directories diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index ab75949..0000000 --- a/appveyor.yml +++ /dev/null @@ -1,149 +0,0 @@ -# Copyright 2016, 2017 Peter Dimov -# Copyright (C) 2017 - 2019 James E. King III -# Distributed under the Boost Software License, Version 1.0. -# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) - -# -# Generic Appveyor build script for boostorg repositories -# See: https://github.com/boostorg/boost-ci/ -# -# Instructions for customizing this script for your library: -# -# 1. Customize the compilers and language levels you want. -# 2. If you have more than include/, src/, test/, example/, examples/, -# benchmark/ or tools/ directories, set the environment variable DEPINST. -# For example if your build uses code in "bench/" and "fog/" directories: -# - DEPINST: --include bench --include fog -# 3. Enable pull request builds in your boostorg/ account. -# -# That's it - the script will do everything else for you. -# - -version: 1.0.{build}-{branch} - -shallow_clone: true - -branches: - only: - - master - - develop - - /bugfix\/.*/ - - /feature\/.*/ - - /fix\/.*/ - - /pr\/.*/ - -matrix: - # Adding MAYFAIL to any matrix job allows it to fail but the build stays green: - allow_failures: - - MAYFAIL: true - -environment: - global: - # see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties - # to use the default for a given environment, comment it out; recommend you build debug and release however: - # on Windows it is important to exercise all the possibilities, especially shared vs static, however most - # libraries that care about this exercise it in their Jamfiles... - # B2_ADDRESS_MODEL: address-model=64,32 - # B2_LINK: link=shared,static - # B2_THREADING: threading=multi,single - B2_VARIANT: variant=release - - matrix: - - FLAVOR: Visual Studio 2019 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 - B2_ADDRESS_MODEL: address-model=64 - B2_CXXFLAGS: cxxflags=-permissive- - B2_CXXSTD: latest # 2a - B2_TOOLSET: msvc-14.2 - - - FLAVOR: Visual Studio 2017 C++2a Strict - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - B2_ADDRESS_MODEL: address-model=64 - B2_CXXFLAGS: cxxflags=-permissive- - B2_CXXSTD: latest # 2a - B2_TOOLSET: msvc-14.1 - - - FLAVOR: Visual Studio 2017 C++17 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - B2_ADDRESS_MODEL: address-model=64 - B2_CXXSTD: 17 - B2_TOOLSET: msvc-14.1 - B2_VARIANT: variant=debug - - - FLAVOR: Visual Studio 2017 C++14 (Default) - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - B2_ADDRESS_MODEL: address-model=64,32 - B2_TOOLSET: msvc-14.1 - - - FLAVOR: clang-cl - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - B2_ADDRESS_MODEL: address-model=64 - B2_CXXSTD: 11 - B2_TOOLSET: clang-win - - - FLAVOR: Visual Studio 2015 C++14 (Default) - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - B2_ADDRESS_MODEL: address-model=64,32 - B2_TOOLSET: msvc-14.0 - B2_VARIANT: variant=debug - - - FLAVOR: Visual Studio 2010, 2012, 2013 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 - B2_TOOLSET: msvc-10.0,msvc-11.0,msvc-12.0 - MAYFAIL: true - REASON: https://github.com/boostorg/logic/issues/8 - - - FLAVOR: cygwin (32-bit) - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ADDPATH: C:\cygwin\bin; - B2_ADDRESS_MODEL: address-model=32 - B2_CXXSTD: 03,11 - # https://github.com/boostorg/test/issues/144 - B2_DEFINES: define=_POSIX_C_SOURCE=200112L - B2_THREADING: threadapi=pthread - B2_TOOLSET: gcc - B2_VARIANT: variant=debug - - - FLAVOR: cygwin (64-bit) - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ADDPATH: C:\cygwin64\bin; - B2_ADDRESS_MODEL: address-model=64 - B2_CXXSTD: 11,17 - # https://github.com/boostorg/test/issues/144 - B2_DEFINES: define=_POSIX_C_SOURCE=200112L define=__USE_ISOC99 - B2_THREADING: threadapi=pthread - B2_TOOLSET: gcc - - - FLAVOR: mingw32 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARCH: i686 - B2_ADDRESS_MODEL: address-model=32 - B2_CXXSTD: 03,11 - SCRIPT: ci\appveyor\mingw.bat - B2_VARIANT: variant=debug - - - FLAVOR: mingw64 - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017 - ARCH: x86_64 - B2_ADDRESS_MODEL: address-model=64 - B2_CXXSTD: 11,17 - B2_DEFINES: define=__USE_ISOC99 - SCRIPT: ci\appveyor\mingw.bat - -install: - - set SELF=%APPVEYOR_PROJECT_NAME:-=_% - - git clone https://github.com/boostorg/boost-ci.git C:\boost-ci - - xcopy /s /e /q /i C:\boost-ci\ci .\ci - - ci\appveyor\install.bat - -build: off - -test_script: - - set SELF=%APPVEYOR_PROJECT_NAME:-=_% - - PATH=%ADDPATH%%PATH% - # The definition of B2_TOOLCXX omits B2_CXXSTD= if it was not defined above - - IF NOT DEFINED B2_CXXSTD (SET B2_TOOLCXX=toolset=%B2_TOOLSET%) ELSE (SET B2_TOOLCXX=toolset=%B2_TOOLSET% cxxstd=%B2_CXXSTD%) - # Echo the complete build command to the build log - - IF NOT DEFINED SCRIPT (ECHO b2 libs/%SELF:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3) - # Now go build... - - IF DEFINED SCRIPT (call libs\%SELF%\%SCRIPT%) ELSE (b2 libs/%SELF:\=/% %B2_TOOLCXX% %B2_CXXFLAGS% %B2_DEFINES% %B2_THREADING% %B2_ADDRESS_MODEL% %B2_LINK% %B2_THREADING% %B2_VARIANT% -j3)