From 57aca3865738c3697cb55eb72a1c2c9bd5470ffb Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 4 Feb 2024 09:04:15 -0600 Subject: [PATCH 01/18] Add modular library level build file. --- build.jam | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 build.jam diff --git a/build.jam b/build.jam new file mode 100644 index 0000000..9a15224 --- /dev/null +++ b/build.jam @@ -0,0 +1,21 @@ +# Copyright René Ferdinand Rivera Morell 2023 +# 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) + +require-b2 5 ; + +import project ; + +project /boost/callable_traits + : common-requirements + include + ; + +explicit + [ alias boost_callable_traits ] + [ alias all : boost_callable_traits example test ] + ; + +call-if : boost-library callable_traits + ; From 3f8e7dfbbdaf5de59ca7a17ef14fdb7f986f2376 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 11 Mar 2024 08:27:02 -0500 Subject: [PATCH 02/18] Make the library modular usable. --- test/Jamfile.v2 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index bce5f23..8d4d6ae 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -5,8 +5,10 @@ # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) +import-search /boost/config/checks ; + import testing ; -import ../../config/checks/config : requires ; +import config : requires ; project : requirements From c1fa3c91adb036d1e000827ef42f0fd76cc11583 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 4 May 2024 23:27:58 -0500 Subject: [PATCH 03/18] Add missing import-search for cconfig/predef checks. --- test/Jamfile.v2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 8d4d6ae..ffb189d 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -8,6 +8,7 @@ import-search /boost/config/checks ; import testing ; +import-search /boost/config/checks ; import config : requires ; project : From c1da5c053a0e5bb386bc2647df046980e3ddfa56 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 5 May 2024 09:00:00 -0500 Subject: [PATCH 04/18] Add requires-b2 check to top-level build file. --- build.jam | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.jam b/build.jam index 9a15224..ff94b60 100644 --- a/build.jam +++ b/build.jam @@ -3,6 +3,8 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) +require-b2 5.1 ; + require-b2 5 ; import project ; From 246c62ab42060c3519dc277bf3d65278d25d9561 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 6 May 2024 07:15:55 -0500 Subject: [PATCH 05/18] Remove extra import-search. --- test/Jamfile.v2 | 2 -- 1 file changed, 2 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index ffb189d..4b193b9 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -5,8 +5,6 @@ # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) -import-search /boost/config/checks ; - import testing ; import-search /boost/config/checks ; import config : requires ; From 26a8e5a1b3283ca0106e1df994b395c3ee110e05 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 6 May 2024 07:17:36 -0500 Subject: [PATCH 06/18] Remove extra require-b2. --- build.jam | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.jam b/build.jam index ff94b60..c42db7c 100644 --- a/build.jam +++ b/build.jam @@ -5,8 +5,6 @@ require-b2 5.1 ; -require-b2 5 ; - import project ; project /boost/callable_traits From 66d9296e32ee5b6ce3a070359f227d6c5c504b7d Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 14 Jun 2024 11:33:55 -0500 Subject: [PATCH 07/18] Bump B2 require to 5.2 --- build.jam | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/build.jam b/build.jam index c42db7c..9ec7de4 100644 --- a/build.jam +++ b/build.jam @@ -3,9 +3,7 @@ # (See accompanying file LICENSE_1_0.txt or copy at # http://www.boost.org/LICENSE_1_0.txt) -require-b2 5.1 ; - -import project ; +require-b2 5.2 ; project /boost/callable_traits : common-requirements From 7c9d002ff74ccec562efa76699596e1e46ddaf1c Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 20 Jul 2024 22:52:05 -0500 Subject: [PATCH 08/18] Update copyright dates. --- build.jam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.jam b/build.jam index 9ec7de4..f009721 100644 --- a/build.jam +++ b/build.jam @@ -1,4 +1,4 @@ -# Copyright René Ferdinand Rivera Morell 2023 +# Copyright René Ferdinand Rivera Morell 2023-2024 # 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) From b29ff8abb777ad5ad868760e808011c3e2ea31e9 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 23 Jul 2024 22:34:24 -0500 Subject: [PATCH 09/18] Move inter-lib dependencies to a project variable and into the build targets. --- build.jam | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.jam b/build.jam index f009721..acb44e0 100644 --- a/build.jam +++ b/build.jam @@ -11,9 +11,10 @@ project /boost/callable_traits ; explicit - [ alias boost_callable_traits ] + [ alias boost_callable_traits : : : : $(boost_dependencies) ] [ alias all : boost_callable_traits example test ] ; call-if : boost-library callable_traits ; + From 15c36eb085896d3c602b531661e19fdb39abf075 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 28 Jul 2024 14:19:04 -0500 Subject: [PATCH 10/18] Adjust doc build to avoid boost-root references. --- doc/callable_traits.qbk | 74 ++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/doc/callable_traits.qbk b/doc/callable_traits.qbk index ac2f649..12ca18e 100644 --- a/doc/callable_traits.qbk +++ b/doc/callable_traits.qbk @@ -67,7 +67,7 @@ The features in [libname] largely overlap with [function_types_link]. Here are s # [libname] supports lvalue/rvalue reference member qualifiers. # [libname] supports `noexcept` and `transaction_safe`. # [function_types] does not attempt to factor all callable types into a unified, [invoke]-aware interface. -# [function_types] relies heavily on "tag" types, while [libname] follows the style of instead. Supporting C++11 and later in [function_types] would have required significant proliferation of these tags. +# [function_types] relies heavily on "tag" types, while [libname] follows the style of instead. Supporting C++11 and later in [function_types] would have required significant proliferation of these tags. For example, here is how to remove member `const` from a member function pointer type in the [function_types] library: @@ -288,106 +288,106 @@ This reference will be most beneficial to readers familiar with the following C+ * [abominable_paper] * [@http://en.cppreference.com/w/c/language/variadic C-style variadics], a.k.a. varargs -[import ../../../boost/callable_traits/add_member_const.hpp] +[import ../include/boost/callable_traits/add_member_const.hpp] [add_member_const_hpp] -[import ../../../boost/callable_traits/add_member_cv.hpp] +[import ../include/boost/callable_traits/add_member_cv.hpp] [add_member_cv_hpp] -[import ../../../boost/callable_traits/add_member_lvalue_reference.hpp] +[import ../include/boost/callable_traits/add_member_lvalue_reference.hpp] [add_member_lvalue_reference_hpp] -[import ../../../boost/callable_traits/add_member_rvalue_reference.hpp] +[import ../include/boost/callable_traits/add_member_rvalue_reference.hpp] [add_member_rvalue_reference_hpp] -[import ../../../boost/callable_traits/add_member_volatile.hpp] +[import ../include/boost/callable_traits/add_member_volatile.hpp] [add_member_volatile_hpp] -[import ../../../boost/callable_traits/add_noexcept.hpp] +[import ../include/boost/callable_traits/add_noexcept.hpp] [add_noexcept_hpp] -[import ../../../boost/callable_traits/add_transaction_safe.hpp] +[import ../include/boost/callable_traits/add_transaction_safe.hpp] [add_transaction_safe_hpp] -[import ../../../boost/callable_traits/add_varargs.hpp] +[import ../include/boost/callable_traits/add_varargs.hpp] [add_varargs_hpp] -[import ../../../boost/callable_traits/apply_member_pointer.hpp] +[import ../include/boost/callable_traits/apply_member_pointer.hpp] [apply_member_pointer_hpp] -[import ../../../boost/callable_traits/apply_return.hpp] +[import ../include/boost/callable_traits/apply_return.hpp] [apply_return_hpp] -[import ../../../boost/callable_traits/args.hpp] +[import ../include/boost/callable_traits/args.hpp] [args_hpp] -[import ../../../boost/callable_traits/class_of.hpp] +[import ../include/boost/callable_traits/class_of.hpp] [class_of_hpp] -[import ../../../boost/callable_traits/function_type.hpp] +[import ../include/boost/callable_traits/function_type.hpp] [function_type_hpp] -[import ../../../boost/callable_traits/has_member_qualifiers.hpp] +[import ../include/boost/callable_traits/has_member_qualifiers.hpp] [has_member_qualifiers_hpp] -[import ../../../boost/callable_traits/has_varargs.hpp] +[import ../include/boost/callable_traits/has_varargs.hpp] [has_varargs_hpp] -[import ../../../boost/callable_traits/has_void_return.hpp] +[import ../include/boost/callable_traits/has_void_return.hpp] [has_void_return_hpp] -[import ../../../boost/callable_traits/is_const_member.hpp] +[import ../include/boost/callable_traits/is_const_member.hpp] [is_const_member_hpp] -[import ../../../boost/callable_traits/is_cv_member.hpp] +[import ../include/boost/callable_traits/is_cv_member.hpp] [is_cv_member_hpp] -[import ../../../boost/callable_traits/is_invocable.hpp] +[import ../include/boost/callable_traits/is_invocable.hpp] [is_invocable_hpp] -[import ../../../boost/callable_traits/is_lvalue_reference_member.hpp] +[import ../include/boost/callable_traits/is_lvalue_reference_member.hpp] [is_lvalue_reference_member_hpp] -[import ../../../boost/callable_traits/is_reference_member.hpp] +[import ../include/boost/callable_traits/is_reference_member.hpp] [is_reference_member_hpp] -[import ../../../boost/callable_traits/is_rvalue_reference_member.hpp] +[import ../include/boost/callable_traits/is_rvalue_reference_member.hpp] [is_rvalue_reference_member_hpp] -[import ../../../boost/callable_traits/is_noexcept.hpp] +[import ../include/boost/callable_traits/is_noexcept.hpp] [is_noexcept_hpp] -[import ../../../boost/callable_traits/is_transaction_safe.hpp] +[import ../include/boost/callable_traits/is_transaction_safe.hpp] [is_transaction_safe_hpp] -[import ../../../boost/callable_traits/is_volatile_member.hpp] +[import ../include/boost/callable_traits/is_volatile_member.hpp] [is_volatile_member_hpp] -[import ../../../boost/callable_traits/qualified_class_of.hpp] +[import ../include/boost/callable_traits/qualified_class_of.hpp] [qualified_class_of_hpp] -[import ../../../boost/callable_traits/remove_member_const.hpp] +[import ../include/boost/callable_traits/remove_member_const.hpp] [remove_member_const_hpp] -[import ../../../boost/callable_traits/remove_member_cv.hpp] +[import ../include/boost/callable_traits/remove_member_cv.hpp] [remove_member_cv_hpp] -[import ../../../boost/callable_traits/remove_member_reference.hpp] +[import ../include/boost/callable_traits/remove_member_reference.hpp] [remove_member_reference_hpp] -[import ../../../boost/callable_traits/remove_member_volatile.hpp] +[import ../include/boost/callable_traits/remove_member_volatile.hpp] [remove_member_volatile_hpp] -[import ../../../boost/callable_traits/remove_noexcept.hpp] +[import ../include/boost/callable_traits/remove_noexcept.hpp] [remove_noexcept_hpp] -[import ../../../boost/callable_traits/remove_transaction_safe.hpp] +[import ../include/boost/callable_traits/remove_transaction_safe.hpp] [remove_transaction_safe_hpp] -[import ../../../boost/callable_traits/remove_varargs.hpp] +[import ../include/boost/callable_traits/remove_varargs.hpp] [remove_varargs_hpp] -[import ../../../boost/callable_traits/return_type.hpp] +[import ../include/boost/callable_traits/return_type.hpp] [return_type_hpp] [endsect][/section:reference] @@ -410,12 +410,12 @@ If you ['are] writing generic code, take a moment to skim your header files, and }; Or maybe something like this: - + template class foo { // ^^^^^^^^^^^^^^^^^^ }; - + Or, if you are *really* unlucky, something like this: template From be1526ad256befba1dbe036826d5983bfd6956f7 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Wed, 31 Jul 2024 08:31:48 -0500 Subject: [PATCH 11/18] Update build deps. --- test/Jamfile.v2 | 1 + 1 file changed, 1 insertion(+) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 4b193b9..a45529c 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -14,6 +14,7 @@ project : [ requires cxx11_constexpr ] clang:"-pedantic -Wall -Wextra" darwin:"-pedantic -Wall -Wextra" + /boost/callable_traits//boost_callable_traits ; for local source in [ glob *.cpp ] From bed89da25811267edd866d38d22896046d10bdea Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 23:46:13 -0500 Subject: [PATCH 12/18] Replace GHA CI with simpler working one based on alandefreitas/cpp-actions utilities. --- .github/workflows/ci.yml | 474 +++++++++------------------------------ 1 file changed, 102 insertions(+), 372 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc08845..b592751 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,385 +12,115 @@ on: - pr/** jobs: - posix: + 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@master + id: cpp-matrix + with: + extra-values: | + boost-lib: callable_traits + scan-dirs: test + compilers: | + gcc >= 4.7 + clang >= 3.5 + msvc >= 14.1 + apple-clang * + mingw * + clang-cl * + standards: ">=11" + latest-factors: | + gcc Asan TSan UBSan + clang BoundsSan IntSan + factors: | + gcc Shared + msvc Shared x86 + mingw Shared + subrange-policy: one-per-minor + trace-commands: true + build: + needs: cpp-matrix strategy: fail-fast: false matrix: - include: - - name: "gcc 4.7" - buildtype: "boost" - packages: "g++-4.7" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-4.7" - cxxstd: "11" - - name: "gcc 4.8" - packages: "g++-4.8" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-4.8" - cxxstd: "11" - - name: "gcc 4.9" - packages: "g++-4.9" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-4.9" - cxxstd: "11" - - name: "gcc 5" - packages: "g++-5" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-5" - cxxstd: "11,14,1z" - - name: "gcc 6" - packages: "g++-6" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-6" - cxxstd: "11,14,1z" - - name: "gcc 7" - packages: "g++-7" - os: "ubuntu-20.04" - container: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-7" - cxxstd: "11,14,1z,17" - - name: "gcc 8" - packages: "g++-8" - os: "ubuntu-20.04" - container: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-8" - cxxstd: "11,14,1z,17,2a" - - name: "gcc 9" - packages: "g++-9" - os: "ubuntu-20.04" - container: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-9" - cxxstd: "11,14,17,2a" - - name: "gcc 10" - packages: "g++-10" - os: "ubuntu-20.04" - container: "" - llvm_os: "" - llvm_ver: "" - toolset: "gcc" - compiler: "g++-10" - cxxstd: "11,14,17,20" - - name: "clang 3.5" - packages: "clang-3.5" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "precise" - llvm_ver: "3.5" - toolset: "clang" - compiler: "clang++-3.5" - cxxstd: "11" - - name: "clang 3.6" - packages: "clang-3.6" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "precise" - llvm_ver: "3.6" - toolset: "clang" - compiler: "clang++-3.6" - cxxstd: "11" - - name: "clang 3.7" - packages: "clang-3.7" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "precise" - llvm_ver: "3.7" - toolset: "clang" - compiler: "clang++-3.7" - cxxstd: "11" - - name: "clang 3.8" - packages: "clang-3.8 libstdc++-4.9-dev" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "precise" - llvm_ver: "3.8" - toolset: "clang" - compiler: "clang++-3.8" - cxxstd: "11,14" - - name: "clang 3.9" - packages: "clang-3.9 libstdc++-4.9-dev" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "precise" - llvm_ver: "3.9" - toolset: "clang" - compiler: "clang++-3.9" - cxxstd: "11,14" - - name: "clang 4.0" - packages: "clang-4.0" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "xenial" - llvm_ver: "4.0" - toolset: "clang" - compiler: "clang++-4.0" - cxxstd: "11,14" - - name: "clang 5.0" - packages: "clang-5.0" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "clang" - compiler: "clang++-5.0" - cxxstd: "11,14,1z,17" - - name: "clang 6.0" - packages: "clang-6.0" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "" - llvm_ver: "" - toolset: "clang" - compiler: "clang++-6.0" - cxxstd: "11,14,1z,17,2a" - - name: "clang 7" - packages: "clang-7" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "xenial" - llvm_ver: "7" - toolset: "clang" - compiler: "clang++-7" - cxxstd: "11,14,1z,17,2a" - - name: "clang 8" - packages: "clang-8" - os: "ubuntu-20.04" - container: "ubuntu:16.04" - llvm_os: "xenial" - llvm_ver: "8" - toolset: "clang" - compiler: "clang++-8" - cxxstd: "11,14,17,2a" - - name: "clang 9" - packages: "clang-9" - os: "ubuntu-20.04" - container: "" - llvm_os: "focal" - llvm_ver: "9" - toolset: "clang" - compiler: "clang++-9" - cxxstd: "11,14,17,2a" - - name: "clang 10" - packages: "clang-10" - os: "ubuntu-20.04" - container: "" - llvm_os: "focal" - llvm_ver: "10" - toolset: "clang" - compiler: "clang++-10" - cxxstd: "11,14,17,20" - - name: "clang 11" - packages: "clang-11" - os: "ubuntu-20.04" - container: "" - sources: "" - llvm_os: "focal" - llvm_ver: "11" - toolset: "clang" - compiler: "clang++-11" - cxxstd: "11,14,17,20,latest" - - name: "clang 12" - packages: "clang-12" - os: "ubuntu-20.04" - container: "" - sources: "" - llvm_os: "focal" - llvm_ver: "12" - toolset: "clang" - compiler: "clang++-12" - cxxstd: "11,14,17,20,latest" + include: ${{ fromJSON(needs.cpp-matrix.outputs.matrix) }} - runs-on: ${{ matrix.os }} + # use matrix entries + name: ${{ matrix.name }} + runs-on: ${{ matrix.runs-on }} container: ${{ matrix.container }} 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 != '' + # GitHub Actions no longer support older containers. + # The workaround is to install our own Node.js for the actions. + - name: Patch Node + # The containers that need Node.js 20 will have volumes set up so that + # the Node.js 20 installation can go there. + if: ${{ matrix.container.volumes }} 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 apt-transport-https make apt-file sudo unzip libssl-dev build-essential g++ git - - - uses: actions/checkout@v2 - - - name: linux + set -x + apt-get update + apt-get install -y curl xz-utils + curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz + tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 + ldd /__e/node20/bin/node + + - name: Setup C++ Compiler + uses: alandefreitas/cpp-actions/setup-cpp@master + id: setup-cpp + with: + compiler: ${{ matrix.compiler }} + version: ${{ matrix.version }} + + - name: Install Packages + if: matrix.install != '' + uses: alandefreitas/cpp-actions/package-install@master + id: package-install + with: + apt-get: ${{ matrix.install }} + + - name: Clone Library + uses: actions/checkout@v4 + + - name: Clone Boost + uses: alandefreitas/cpp-actions/boost-clone@master + id: boost-clone + with: + branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} + boost-dir: ../boost-root + scan-modules-dir: . + scan-modules-ignore: ${{ matrix.boost-lib }} + modules-scan-paths: ${{ matrix.scan-dirs }} + cache: false + + - name: Copy Library shell: bash - env: - CXX: ${{ matrix.compiler }} - SOURCES: ${{ matrix.sources }} - LLVM_OS: ${{ matrix.llvm_os }} - LLVM_VER: ${{ matrix.llvm_ver }} - PACKAGES: ${{ matrix.packages }} - TOOLSET: ${{ matrix.toolset }} - CXXSTD: ${{ matrix.cxxstd }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "linux" run: | - set -e - 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 - sudo -E apt-get -o Acquire::Retries=3 update - sudo -E DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::Retries=3 -y --no-install-suggests --no-install-recommends install ${PACKAGES} - - 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 - - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - git submodule update --init tools/build - git submodule update --init tools/boost_install - git submodule update --init libs/config - git submodule update --init libs/headers - mkdir -p libs/callable_traits - cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits - ./bootstrap.sh - ./b2 headers - echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam - ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD} - osx: - strategy: - fail-fast: false - matrix: - include: - - name: "xcode 11.7" - os: "macos-10.15" - cxx: "clang++" - xcode_version: 11.7 - toolset: "clang" - compiler: "clang++" - cxxstd: "11,14,17" - - 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.compiler }} - TOOLSET: ${{ matrix.toolset }} - CXXSTD: ${{ matrix.cxxstd }} - TRAVIS_BRANCH: ${{ github.base_ref }} - TRAVIS_OS_NAME: "osx" - run: | - set -e - sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck - 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 - - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - git submodule update --init tools/build - git submodule update --init tools/boost_install - git submodule update --init libs/config - git submodule update --init libs/headers - mkdir -p libs/callable_traits - cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits - ./bootstrap.sh - ./b2 headers - - echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam - ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD} - - windows: - strategy: - fail-fast: false - matrix: - include: - - toolset: msvc-14.1 - cxxstd: "11,14,17" - arch: 32 - os: windows-2016 - - toolset: msvc-14.2 - cxxstd: "11,14,17,latest" - os: windows-2019 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v2 - - - name: "windows" - shell: cmd - run: | - echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% - for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi - echo LIBRARY: %LIBRARY% - echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% - echo GITHUB_BASE_REF: %GITHUB_BASE_REF% - echo GITHUB_REF: %GITHUB_REF% - if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% - set BOOST_BRANCH=develop - for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master - echo BOOST_BRANCH: %BOOST_BRANCH% - cd .. - git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ - git submodule update --init tools/build - git submodule update --init tools/boost_install - git submodule update --init libs/config - git submodule update --init libs/headers - cmd /c bootstrap - b2 libs\callable_traits\test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" && b2 libs\callable_traits\example toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" - + workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') + cd ../boost-root + rm -rf "libs/${{ matrix.boost-lib }}" + mkdir "libs/${{ matrix.boost-lib }}" + cp -r "$workspace_root"/* "libs/${{ matrix.boost-lib }}" + + - name: B2 Workflow + uses: alandefreitas/cpp-actions/b2-workflow@master + with: + source-dir: ${{ steps.boost-clone.outputs.boost-dir }} + modules: ${{ matrix.boost-lib }} + toolset: ${{ matrix.b2-toolset }} + build-variant: ${{ matrix.build-type }} + cxx: ${{ steps.setup-cpp.outputs.cxx || '' }} + cxxstd: ${{ matrix.cxxstd }} + address-model: ${{ matrix.address-model }} + asan: ${{ matrix.asan }} + ubsan: ${{ matrix.ubsan }} + tsan: ${{ matrix.tsan }} + shared: ${{ matrix.shared }} + abbreviate-paths: false + hash: true + debug-configuration: true + trace-commands: true From 87bd4ae4fafd5459175350c09205131fb56f8583 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 23:51:28 -0500 Subject: [PATCH 13/18] GCC 4.8 is the minimum available. --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b592751..21d4cb0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: boost-lib: callable_traits scan-dirs: test compilers: | - gcc >= 4.7 + gcc >= 4.8 clang >= 3.5 msvc >= 14.1 apple-clang * From 64e551c622a66baf2746859070f7122eb87e8009 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 7 Apr 2025 11:28:38 -0500 Subject: [PATCH 14/18] Move project global include to target local include. --- build.jam | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.jam b/build.jam index acb44e0..7660e93 100644 --- a/build.jam +++ b/build.jam @@ -6,12 +6,11 @@ require-b2 5.2 ; project /boost/callable_traits - : common-requirements - include ; explicit - [ alias boost_callable_traits : : : : $(boost_dependencies) ] + [ alias boost_callable_traits : : : + : include $(boost_dependencies) ] [ alias all : boost_callable_traits example test ] ; From 89388be3c429d67a8e0ad4ebd93ce2b3783b4a84 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Wed, 9 Apr 2025 23:03:53 -0500 Subject: [PATCH 15/18] Only msvc gets minor version tests. --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 21d4cb0..3844aab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,8 @@ jobs: gcc Shared msvc Shared x86 mingw Shared - subrange-policy: one-per-minor + subrange-policy: | + msvc: one-per-minor trace-commands: true build: needs: cpp-matrix From 11e1f09b29f640891d7e4eea0f66f12c7011c066 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 18:19:42 -0500 Subject: [PATCH 16/18] Redo GHA CI to undo move to cpp-actions. --- .github/workflows/ci.yml | 459 ++++++++++++++++++++++++++++++--------- 1 file changed, 360 insertions(+), 99 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3844aab..03b49ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,116 +12,377 @@ on: - pr/** 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@master - id: cpp-matrix - with: - extra-values: | - boost-lib: callable_traits - scan-dirs: test - compilers: | - gcc >= 4.8 - clang >= 3.5 - msvc >= 14.1 - apple-clang * - mingw * - clang-cl * - standards: ">=11" - latest-factors: | - gcc Asan TSan UBSan - clang BoundsSan IntSan - factors: | - gcc Shared - msvc Shared x86 - mingw Shared - subrange-policy: | - msvc: one-per-minor - trace-commands: true - build: - needs: cpp-matrix + posix: strategy: fail-fast: false matrix: - include: ${{ fromJSON(needs.cpp-matrix.outputs.matrix) }} + include: + - name: "gcc 4.7" + buildtype: "boost" + packages: "g++-4.7" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-4.7" + cxxstd: "11" + - name: "gcc 4.8" + packages: "g++-4.8" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-4.8" + cxxstd: "11" + - name: "gcc 4.9" + packages: "g++-4.9" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-4.9" + cxxstd: "11" + - name: "gcc 5" + packages: "g++-5" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-5" + cxxstd: "11,14,1z" + - name: "gcc 6" + packages: "g++-6" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-6" + cxxstd: "11,14,1z" + - name: "gcc 7" + packages: "g++-7" + os: "ubuntu-latest" + container: "" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-7" + cxxstd: "11,14,1z,17" + - name: "gcc 8" + packages: "g++-8" + os: "ubuntu-latest" + container: "" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-8" + cxxstd: "11,14,1z,17,2a" + - name: "gcc 9" + packages: "g++-9" + os: "ubuntu-latest" + container: "" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-9" + cxxstd: "11,14,17,2a" + - name: "gcc 10" + packages: "g++-10" + os: "ubuntu-latest" + container: "" + llvm_os: "" + llvm_ver: "" + toolset: "gcc" + compiler: "g++-10" + cxxstd: "11,14,17,20" + - name: "clang 3.5" + packages: "clang-3.5" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "precise" + llvm_ver: "3.5" + toolset: "clang" + compiler: "clang++-3.5" + cxxstd: "11" + - name: "clang 3.6" + packages: "clang-3.6" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "precise" + llvm_ver: "3.6" + toolset: "clang" + compiler: "clang++-3.6" + cxxstd: "11" + - name: "clang 3.7" + packages: "clang-3.7" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "precise" + llvm_ver: "3.7" + toolset: "clang" + compiler: "clang++-3.7" + cxxstd: "11" + - name: "clang 3.8" + packages: "clang-3.8 libstdc++-4.9-dev" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "precise" + llvm_ver: "3.8" + toolset: "clang" + compiler: "clang++-3.8" + cxxstd: "11,14" + - name: "clang 3.9" + packages: "clang-3.9 libstdc++-4.9-dev" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "precise" + llvm_ver: "3.9" + toolset: "clang" + compiler: "clang++-3.9" + cxxstd: "11,14" + - name: "clang 4.0" + packages: "clang-4.0" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "xenial" + llvm_ver: "4.0" + toolset: "clang" + compiler: "clang++-4.0" + cxxstd: "11,14" + - name: "clang 5.0" + packages: "clang-5.0" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "clang" + compiler: "clang++-5.0" + cxxstd: "11,14,1z,17" + - name: "clang 6.0" + packages: "clang-6.0" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "" + llvm_ver: "" + toolset: "clang" + compiler: "clang++-6.0" + cxxstd: "11,14,1z,17,2a" + - name: "clang 7" + packages: "clang-7" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "xenial" + llvm_ver: "7" + toolset: "clang" + compiler: "clang++-7" + cxxstd: "11,14,1z,17,2a" + - name: "clang 8" + packages: "clang-8" + os: "ubuntu-latest" + container: "ubuntu:16.04" + llvm_os: "xenial" + llvm_ver: "8" + toolset: "clang" + compiler: "clang++-8" + cxxstd: "11,14,17,2a" + - name: "clang 9" + packages: "clang-9" + os: "ubuntu-latest" + container: "" + llvm_os: "focal" + llvm_ver: "9" + toolset: "clang" + compiler: "clang++-9" + cxxstd: "11,14,17,2a" + - name: "clang 10" + packages: "clang-10" + os: "ubuntu-latest" + container: "" + llvm_os: "focal" + llvm_ver: "10" + toolset: "clang" + compiler: "clang++-10" + cxxstd: "11,14,17,20" + - name: "clang 11" + packages: "clang-11" + os: "ubuntu-latest" + container: "" + sources: "" + llvm_os: "focal" + llvm_ver: "11" + toolset: "clang" + compiler: "clang++-11" + cxxstd: "11,14,17,20,latest" + - name: "clang 12" + packages: "clang-12" + os: "ubuntu-latest" + container: "" + sources: "" + llvm_os: "focal" + llvm_ver: "12" + toolset: "clang" + compiler: "clang++-12" + cxxstd: "11,14,17,20,latest" - # use matrix entries - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - container: ${{ matrix.container }} + runs-on: ${{ matrix.os }} + container: + image: ${{matrix.container}} + volumes: + - /node20217:/node20217:rw,rshared + - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} steps: - # GitHub Actions no longer support older containers. - # The workaround is to install our own Node.js for the actions. - - name: Patch Node - # The containers that need Node.js 20 will have volumes set up so that - # the Node.js 20 installation can go there. - if: ${{ matrix.container.volumes }} + - name: Setup container environment + if: matrix.container run: | - set -x apt-get update - apt-get install -y curl xz-utils + apt-get -y install sudo python3 git g++ curl xz-utils + + - name: Install nodejs20glibc2.17 + if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} + run: | curl -LO https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 ldd /__e/node20/bin/node - - name: Setup C++ Compiler - uses: alandefreitas/cpp-actions/setup-cpp@master - id: setup-cpp - with: - compiler: ${{ matrix.compiler }} - version: ${{ matrix.version }} - - - name: Install Packages - if: matrix.install != '' - uses: alandefreitas/cpp-actions/package-install@master - id: package-install - with: - apt-get: ${{ matrix.install }} - - - name: Clone Library - uses: actions/checkout@v4 - - - name: Clone Boost - uses: alandefreitas/cpp-actions/boost-clone@master - id: boost-clone - with: - branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} - boost-dir: ../boost-root - scan-modules-dir: . - scan-modules-ignore: ${{ matrix.boost-lib }} - modules-scan-paths: ${{ matrix.scan-dirs }} - cache: false - - - name: Copy Library + - name: Install packages + if: matrix.packages + run: sudo apt-get -y install ${{matrix.packages}} + + - uses: actions/checkout@v2 + + - name: linux + shell: bash + env: + CXX: ${{ matrix.compiler }} + SOURCES: ${{ matrix.sources }} + LLVM_OS: ${{ matrix.llvm_os }} + LLVM_VER: ${{ matrix.llvm_ver }} + PACKAGES: ${{ matrix.packages }} + TOOLSET: ${{ matrix.toolset }} + CXXSTD: ${{ matrix.cxxstd }} + TRAVIS_BRANCH: ${{ github.base_ref }} + TRAVIS_OS_NAME: "linux" + run: | + 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 + + BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true + cd .. + git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + cd boost-root + git submodule update --init tools/build + git submodule update --init tools/boost_install + git submodule update --init libs/config + git submodule update --init libs/headers + mkdir -p libs/callable_traits + cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits + ./bootstrap.sh + ./b2 headers + echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam + ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD} + osx: + strategy: + fail-fast: false + matrix: + include: + - name: "xcode" + os: "macos-15" + cxx: "clang++" + toolset: "clang" + compiler: "clang++" + cxxstd: "11,14,17" + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: "osx" shell: bash + env: + CXX: ${{ matrix.compiler }} + TOOLSET: ${{ matrix.toolset }} + CXXSTD: ${{ matrix.cxxstd }} + TRAVIS_BRANCH: ${{ github.base_ref }} + TRAVIS_OS_NAME: "osx" + run: | + set -e + sudo mv /Library/Developer/CommandLineTools /Library/Developer/CommandLineTools.bck + 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 + + BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true + cd .. + git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + cd boost-root + git submodule update --init tools/build + git submodule update --init tools/boost_install + git submodule update --init libs/config + git submodule update --init libs/headers + mkdir -p libs/callable_traits + cp -r $TRAVIS_BUILD_DIR/* libs/callable_traits + ./bootstrap.sh + ./b2 headers + + echo "using $TOOLSET : : $CXX : ;" > ~/user-config.jam + ./b2 libs/callable_traits/test toolset=$TOOLSET cxxstd=${CXXSTD} && ./b2 libs/callable_traits/example toolset=$TOOLSET cxxstd=${CXXSTD} + + windows: + strategy: + fail-fast: false + matrix: + include: + - toolset: msvc-14.1 + cxxstd: "11,14,17" + arch: 32 + os: windows-2016 + - toolset: msvc-14.2 + cxxstd: "11,14,17,latest" + os: windows-2019 + + runs-on: ${{matrix.os}} + + steps: + - uses: actions/checkout@v2 + + - name: "windows" + shell: cmd run: | - workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') - cd ../boost-root - rm -rf "libs/${{ matrix.boost-lib }}" - mkdir "libs/${{ matrix.boost-lib }}" - cp -r "$workspace_root"/* "libs/${{ matrix.boost-lib }}" - - - name: B2 Workflow - uses: alandefreitas/cpp-actions/b2-workflow@master - with: - source-dir: ${{ steps.boost-clone.outputs.boost-dir }} - modules: ${{ matrix.boost-lib }} - toolset: ${{ matrix.b2-toolset }} - build-variant: ${{ matrix.build-type }} - cxx: ${{ steps.setup-cpp.outputs.cxx || '' }} - cxxstd: ${{ matrix.cxxstd }} - address-model: ${{ matrix.address-model }} - asan: ${{ matrix.asan }} - ubsan: ${{ matrix.ubsan }} - tsan: ${{ matrix.tsan }} - shared: ${{ matrix.shared }} - abbreviate-paths: false - hash: true - debug-configuration: true - trace-commands: true + echo GITHUB_REPOSITORY: %GITHUB_REPOSITORY% + for /f %%i in ("%GITHUB_REPOSITORY%") do set LIBRARY=%%~nxi + echo LIBRARY: %LIBRARY% + echo LIBRARY=%LIBRARY%>>%GITHUB_ENV% + echo GITHUB_BASE_REF: %GITHUB_BASE_REF% + echo GITHUB_REF: %GITHUB_REF% + if "%GITHUB_BASE_REF%" == "" set GITHUB_BASE_REF=%GITHUB_REF% + set BOOST_BRANCH=develop + for /f %%i in ("%GITHUB_BASE_REF%") do if "%%~nxi" == "master" set BOOST_BRANCH=master + echo BOOST_BRANCH: %BOOST_BRANCH% + cd .. + git clone -b %BOOST_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root + cd boost-root + xcopy /s /e /q %GITHUB_WORKSPACE% libs\%LIBRARY%\ + git submodule update --init tools/build + git submodule update --init tools/boost_install + git submodule update --init libs/config + git submodule update --init libs/headers + cmd /c bootstrap + b2 libs\callable_traits\test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" && b2 libs\callable_traits\example toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model="32,64" From 6bc3f6c8c30afe7ffeb6bdae4f88d16b11a7ac14 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 18:28:19 -0500 Subject: [PATCH 17/18] Update os/containers to account for unavailable packages in old containers. --- .github/workflows/ci.yml | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03b49ac..4185add 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -57,7 +57,7 @@ jobs: - name: "gcc 6" packages: "g++-6" os: "ubuntu-latest" - container: "ubuntu:16.04" + container: "ubuntu:18.04" llvm_os: "" llvm_ver: "" toolset: "gcc" @@ -66,7 +66,7 @@ jobs: - name: "gcc 7" packages: "g++-7" os: "ubuntu-latest" - container: "" + container: "ubuntu:18.04" llvm_os: "" llvm_ver: "" toolset: "gcc" @@ -75,7 +75,7 @@ jobs: - name: "gcc 8" packages: "g++-8" os: "ubuntu-latest" - container: "" + container: "ubuntu:18.04" llvm_os: "" llvm_ver: "" toolset: "gcc" @@ -84,7 +84,7 @@ jobs: - name: "gcc 9" packages: "g++-9" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" llvm_os: "" llvm_ver: "" toolset: "gcc" @@ -93,7 +93,7 @@ jobs: - name: "gcc 10" packages: "g++-10" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" llvm_os: "" llvm_ver: "" toolset: "gcc" @@ -174,7 +174,7 @@ jobs: - name: "clang 7" packages: "clang-7" os: "ubuntu-latest" - container: "ubuntu:16.04" + container: "ubuntu:20.04" llvm_os: "xenial" llvm_ver: "7" toolset: "clang" @@ -183,7 +183,7 @@ jobs: - name: "clang 8" packages: "clang-8" os: "ubuntu-latest" - container: "ubuntu:16.04" + container: "ubuntu:20.04" llvm_os: "xenial" llvm_ver: "8" toolset: "clang" @@ -192,7 +192,7 @@ jobs: - name: "clang 9" packages: "clang-9" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" llvm_os: "focal" llvm_ver: "9" toolset: "clang" @@ -201,7 +201,7 @@ jobs: - name: "clang 10" packages: "clang-10" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" llvm_os: "focal" llvm_ver: "10" toolset: "clang" @@ -210,7 +210,7 @@ jobs: - name: "clang 11" packages: "clang-11" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" sources: "" llvm_os: "focal" llvm_ver: "11" @@ -220,7 +220,7 @@ jobs: - name: "clang 12" packages: "clang-12" os: "ubuntu-latest" - container: "" + container: "ubuntu:20.04" sources: "" llvm_os: "focal" llvm_ver: "12" @@ -353,7 +353,7 @@ jobs: - toolset: msvc-14.1 cxxstd: "11,14,17" arch: 32 - os: windows-2016 + os: windows-2019 - toolset: msvc-14.2 cxxstd: "11,14,17,latest" os: windows-2019 From 6b31b4c25a8d0da0112abf47345acdf34fb20d86 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 19:15:15 -0500 Subject: [PATCH 18/18] Tweaks per comments. --- .github/workflows/ci.yml | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4185add..ea4aea2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -179,7 +179,7 @@ jobs: llvm_ver: "7" toolset: "clang" compiler: "clang++-7" - cxxstd: "11,14,1z,17,2a" + cxxstd: "11,14,1z,17" - name: "clang 8" packages: "clang-8" os: "ubuntu-latest" @@ -188,7 +188,7 @@ jobs: llvm_ver: "8" toolset: "clang" compiler: "clang++-8" - cxxstd: "11,14,17,2a" + cxxstd: "11,14,17" - name: "clang 9" packages: "clang-9" os: "ubuntu-latest" @@ -350,13 +350,12 @@ jobs: fail-fast: false matrix: include: - - toolset: msvc-14.1 - cxxstd: "11,14,17" - arch: 32 - os: windows-2019 - toolset: msvc-14.2 cxxstd: "11,14,17,latest" os: windows-2019 + - toolset: msvc-14.3 + cxxstd: "11,14,17,20,latest" + os: windows-2022 runs-on: ${{matrix.os}}