From 57099141465ec87d251722d6c0c03b95659d7318 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 11 Mar 2024 08:27:02 -0500 Subject: [PATCH 01/31] Make the library modular usable. --- build.jam | 39 +++++++++++++++++++++++++++++++++++++++ example/Jamfile.v2 | 4 +--- test/Jamfile.v2 | 12 +++++------- 3 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 build.jam diff --git a/build.jam b/build.jam new file mode 100644 index 00000000..fb985ab6 --- /dev/null +++ b/build.jam @@ -0,0 +1,39 @@ +# 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) + +import project ; + +project /boost/accumulators + : common-requirements + /boost/array//boost_array + /boost/assert//boost_assert + /boost/circular_buffer//boost_circular_buffer + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/fusion//boost_fusion + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/numeric_conversion//boost_numeric_conversion + /boost/ublas//boost_ublas + /boost/parameter//boost_parameter + /boost/preprocessor//boost_preprocessor + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/static_assert//boost_static_assert + /boost/throw_exception//boost_throw_exception + /boost/tuple//boost_tuple + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof + include + ; + +explicit + [ alias boost_accumulators ] + [ alias all : boost_accumulators example test ] + ; + +call-if : boost-library algorithm + ; diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index eff105b3..534a2cf8 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -6,8 +6,6 @@ exe example : main.cpp : - ../../.. - $(BOOST_ROOT) - /boost/serialization + /boost/foreach//boost_foreach "-Wno-deprecated-declarations" ; diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 4770113f..a894cb29 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -19,8 +19,7 @@ project : default-build static : requirements - /boost/test//boost_unit_test_framework - ../../.. + /boost/test//boost_unit_test_framework/static msvc:_SCL_SECURE_NO_DEPRECATE # MSVC's iterator debugging causes some tests to run forever. msvc:off @@ -28,7 +27,6 @@ project gcc:"-Wno-deprecated-declarations" clang:"-Wno-deprecated-declarations" intel-linux:"-Wno-deprecated-declarations" - /boost/serialization ; alias accumulators_regular_tests @@ -36,11 +34,11 @@ alias accumulators_regular_tests [ run covariance.cpp ] [ run droppable.cpp ] [ run error_of.cpp ] - [ run extended_p_square.cpp : : : msvc-14.2,release,14:no ] - [ run extended_p_square_quantile.cpp ] + [ run extended_p_square.cpp : : : msvc-14.2,release,14:no /boost/random//boost_random ] + [ run extended_p_square_quantile.cpp : : : /boost/random//boost_random ] [ run external_accumulator.cpp ] [ run external_weights.cpp ] - [ run kurtosis.cpp ] + [ run kurtosis.cpp : : : /boost/random//boost_random ] [ run max.cpp ] [ run mean.cpp ] [ run median.cpp ] @@ -57,7 +55,7 @@ alias accumulators_regular_tests [ run skewness.cpp ] [ run sum.cpp ] [ run sum_kahan.cpp ] - [ run tail.cpp ] + [ run tail.cpp : : : /boost/foreach//boost_foreach ] [ run tail_mean.cpp ] [ run tail_quantile.cpp ] [ run variance.cpp ] From aefcd77b645508eb1cbfea48c502db218d95bee9 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 17 Mar 2024 19:39:16 -0500 Subject: [PATCH 02/31] Fix to avoid using gcc/clang option in other compilers. --- example/Jamfile.v2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index 534a2cf8..b32a2634 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -7,5 +7,6 @@ exe example main.cpp : /boost/foreach//boost_foreach - "-Wno-deprecated-declarations" + gcc:"-Wno-deprecated-declarations" + clang:"-Wno-deprecated-declarations" ; From fab75ebda1c85268f33b0766fd172f13fc4d7d5e Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 29 Mar 2024 21:12:36 -0500 Subject: [PATCH 03/31] Switch to library requirements instead of source. As source puts extra source in install targets. --- build.jam | 40 ++++++++++++++++++++-------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/build.jam b/build.jam index fb985ab6..bb9c3fcc 100644 --- a/build.jam +++ b/build.jam @@ -7,26 +7,26 @@ import project ; project /boost/accumulators : common-requirements - /boost/array//boost_array - /boost/assert//boost_assert - /boost/circular_buffer//boost_circular_buffer - /boost/concept_check//boost_concept_check - /boost/config//boost_config - /boost/core//boost_core - /boost/fusion//boost_fusion - /boost/iterator//boost_iterator - /boost/mpl//boost_mpl - /boost/numeric_conversion//boost_numeric_conversion - /boost/ublas//boost_ublas - /boost/parameter//boost_parameter - /boost/preprocessor//boost_preprocessor - /boost/range//boost_range - /boost/serialization//boost_serialization - /boost/static_assert//boost_static_assert - /boost/throw_exception//boost_throw_exception - /boost/tuple//boost_tuple - /boost/type_traits//boost_type_traits - /boost/typeof//boost_typeof + /boost/array//boost_array + /boost/assert//boost_assert + /boost/circular_buffer//boost_circular_buffer + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/fusion//boost_fusion + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/numeric_conversion//boost_numeric_conversion + /boost/ublas//boost_ublas + /boost/parameter//boost_parameter + /boost/preprocessor//boost_preprocessor + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/static_assert//boost_static_assert + /boost/throw_exception//boost_throw_exception + /boost/tuple//boost_tuple + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof include ; From 354a0172dd857c05f339055a054b2e28ed6b4330 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 13 Apr 2024 11:13:03 -0500 Subject: [PATCH 04/31] Change global boost refs to local refs. --- doc/Jamfile.v2 | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2 index 65c00538..42fc2311 100644 --- a/doc/Jamfile.v2 +++ b/doc/Jamfile.v2 @@ -52,8 +52,8 @@ else # features shows the dependency relationships between them. doxygen tagfile : - ../../../boost/accumulators/framework/depends_on.hpp - ../../../boost/accumulators/framework/extractor.hpp + ../include/boost/accumulators/framework/depends_on.hpp + ../include/boost/accumulators/framework/extractor.hpp : MACRO_EXPANSION=YES EXPAND_ONLY_PREDEF=YES @@ -68,10 +68,10 @@ doxygen tagfile doxygen accdoc : - [ glob ../../../boost/accumulators/accumulators*.hpp ] - [ glob ../../../boost/accumulators/framework/*.hpp ] - [ glob ../../../boost/accumulators/framework/parameters/*.hpp ] - [ glob ../../../boost/accumulators/framework/accumulators/*.hpp ] + [ glob ../include/boost/accumulators/accumulators*.hpp ] + [ glob ../include/boost/accumulators/framework/*.hpp ] + [ glob ../include/boost/accumulators/framework/parameters/*.hpp ] + [ glob ../include/boost/accumulators/framework/accumulators/*.hpp ] : EXTRACT_ALL=YES "PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\ @@ -97,9 +97,9 @@ doxygen accdoc # generate .png images for the LaTeX formulas embedded in the doc comments. doxygen statsdoc.html : - [ glob ../../../boost/accumulators/statistics*.hpp ] - [ glob ../../../boost/accumulators/statistics/*.hpp ] - [ glob ../../../boost/accumulators/statistics/variates/*.hpp ] + [ glob ../include/boost/accumulators/statistics*.hpp ] + [ glob ../include/boost/accumulators/statistics/*.hpp ] + [ glob ../include/boost/accumulators/statistics/variates/*.hpp ] : latex.check dvips.check @@ -141,9 +141,9 @@ make statsdoclatex.tag doxygen statsdoc : - [ glob ../../../boost/accumulators/statistics*.hpp ] - [ glob ../../../boost/accumulators/statistics/*.hpp ] - [ glob ../../../boost/accumulators/statistics/variates/*.hpp ] + [ glob ../include/boost/accumulators/statistics*.hpp ] + [ glob ../include/boost/accumulators/statistics/*.hpp ] + [ glob ../include/boost/accumulators/statistics/variates/*.hpp ] : EXTRACT_ALL=YES "PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\ @@ -171,8 +171,8 @@ doxygen statsdoc doxygen opdoc : - [ glob ../../../boost/accumulators/numeric/functional.hpp ] - [ glob ../../../boost/accumulators/numeric/functional/*.hpp ] + [ glob ../include/boost/accumulators/numeric/functional.hpp ] + [ glob ../include/boost/accumulators/numeric/functional/*.hpp ] : EXTRACT_ALL=YES "PREDEFINED=\"BOOST_NUMERIC_FUNCTIONAL_DOXYGEN_INVOKED=1\" \\ From 75c7ea8d16782107231c363d9c8141697f62796a Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sun, 5 May 2024 09:00:00 -0500 Subject: [PATCH 05/31] 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 bb9c3fcc..338857a5 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 ; + import project ; project /boost/accumulators From fc3a435cdfd6e559259fc8e30c97b24e30bd5494 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 14 May 2024 07:32:55 -0500 Subject: [PATCH 06/31] Add missing test deps. --- test/Jamfile.v2 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index a894cb29..30bd1964 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -27,6 +27,7 @@ project gcc:"-Wno-deprecated-declarations" clang:"-Wno-deprecated-declarations" intel-linux:"-Wno-deprecated-declarations" + /boost/random//boost_random ; alias accumulators_regular_tests @@ -34,11 +35,11 @@ alias accumulators_regular_tests [ run covariance.cpp ] [ run droppable.cpp ] [ run error_of.cpp ] - [ run extended_p_square.cpp : : : msvc-14.2,release,14:no /boost/random//boost_random ] - [ run extended_p_square_quantile.cpp : : : /boost/random//boost_random ] + [ run extended_p_square.cpp : : : msvc-14.2,release,14:no ] + [ run extended_p_square_quantile.cpp ] [ run external_accumulator.cpp ] [ run external_weights.cpp ] - [ run kurtosis.cpp : : : /boost/random//boost_random ] + [ run kurtosis.cpp ] [ run max.cpp ] [ run mean.cpp ] [ run median.cpp ] From 4722332bc6d51e41944ebc1b25cf52467e60e4f6 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 11 Jun 2024 16:07:11 -0500 Subject: [PATCH 07/31] Fix library name in lib declaration. --- build.jam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.jam b/build.jam index 338857a5..5ea0453e 100644 --- a/build.jam +++ b/build.jam @@ -37,5 +37,5 @@ explicit [ alias all : boost_accumulators example test ] ; -call-if : boost-library algorithm +call-if : boost-library accumulators ; From b8322d89416443acc3da5b023a4bc9e116e39ef3 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 14 Jun 2024 11:33:55 -0500 Subject: [PATCH 08/31] 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 5ea0453e..63b478ac 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/accumulators : common-requirements From 53ef07f91355f9421eb76496e4013d5113cb3d28 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 20 Jul 2024 22:52:04 -0500 Subject: [PATCH 09/31] Update copyright dates. --- build.jam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.jam b/build.jam index 63b478ac..691fcef1 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 e7af08a290e0a9ce6ec39805c6f9d8d0ef5e8ad8 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 23 Jul 2024 22:34:23 -0500 Subject: [PATCH 10/31] Move inter-lib dependencies to a project variable and into the build targets. --- build.jam | 45 ++++++++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/build.jam b/build.jam index 691fcef1..07705127 100644 --- a/build.jam +++ b/build.jam @@ -5,35 +5,38 @@ require-b2 5.2 ; +constant boost_dependencies : + /boost/array//boost_array + /boost/assert//boost_assert + /boost/circular_buffer//boost_circular_buffer + /boost/concept_check//boost_concept_check + /boost/config//boost_config + /boost/core//boost_core + /boost/fusion//boost_fusion + /boost/iterator//boost_iterator + /boost/mpl//boost_mpl + /boost/numeric_conversion//boost_numeric_conversion + /boost/ublas//boost_ublas + /boost/parameter//boost_parameter + /boost/preprocessor//boost_preprocessor + /boost/range//boost_range + /boost/serialization//boost_serialization + /boost/static_assert//boost_static_assert + /boost/throw_exception//boost_throw_exception + /boost/tuple//boost_tuple + /boost/type_traits//boost_type_traits + /boost/typeof//boost_typeof ; + project /boost/accumulators : common-requirements - /boost/array//boost_array - /boost/assert//boost_assert - /boost/circular_buffer//boost_circular_buffer - /boost/concept_check//boost_concept_check - /boost/config//boost_config - /boost/core//boost_core - /boost/fusion//boost_fusion - /boost/iterator//boost_iterator - /boost/mpl//boost_mpl - /boost/numeric_conversion//boost_numeric_conversion - /boost/ublas//boost_ublas - /boost/parameter//boost_parameter - /boost/preprocessor//boost_preprocessor - /boost/range//boost_range - /boost/serialization//boost_serialization - /boost/static_assert//boost_static_assert - /boost/throw_exception//boost_throw_exception - /boost/tuple//boost_tuple - /boost/type_traits//boost_type_traits - /boost/typeof//boost_typeof include ; explicit - [ alias boost_accumulators ] + [ alias boost_accumulators : : : : $(boost_dependencies) ] [ alias all : boost_accumulators example test ] ; call-if : boost-library accumulators ; + From d4b1bcc0f4737e56e8847743fe7aa480e4479371 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 27 Jul 2024 09:57:46 -0500 Subject: [PATCH 11/31] Adjust self dependencies as inter-lib deps no longer apply globally. --- example/Jamfile.v2 | 1 + test/Jamfile.v2 | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/example/Jamfile.v2 b/example/Jamfile.v2 index b32a2634..c02911e8 100644 --- a/example/Jamfile.v2 +++ b/example/Jamfile.v2 @@ -6,6 +6,7 @@ exe example : main.cpp : + /boost/accumulators//boost_accumulators /boost/foreach//boost_foreach gcc:"-Wno-deprecated-declarations" clang:"-Wno-deprecated-declarations" diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 30bd1964..48d0d46e 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -19,7 +19,9 @@ project : default-build static : requirements + /boost/accumulators//boost_accumulators /boost/test//boost_unit_test_framework/static + /boost/random//boost_random msvc:_SCL_SECURE_NO_DEPRECATE # MSVC's iterator debugging causes some tests to run forever. msvc:off @@ -27,7 +29,6 @@ project gcc:"-Wno-deprecated-declarations" clang:"-Wno-deprecated-declarations" intel-linux:"-Wno-deprecated-declarations" - /boost/random//boost_random ; alias accumulators_regular_tests From 84de91b41b929240cb53c7ad0863787b22960137 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 09:05:00 -0500 Subject: [PATCH 12/31] Kludge node20 into containers. --- .github/workflows/ci.yml | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0dad7ac..a7a431bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -145,20 +145,31 @@ jobs: os: macos-13 runs-on: ${{matrix.os}} - container: ${{matrix.container}} + container: + image: ${{matrix.container}} + volumes: + - /node20217:/node20217:rw,rshared + - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} defaults: run: shell: bash steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup container environment if: matrix.container run: | apt-get update - apt-get -y install sudo python3 git g++ + 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: Install packages if: matrix.install @@ -233,7 +244,7 @@ jobs: runs-on: ${{matrix.os}} steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup Boost shell: cmd From a5ee8b31f905d728827677db878d9d768a9366be Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 09:18:57 -0500 Subject: [PATCH 13/31] Checkout needs to happen after node20 is set up. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7a431bf..b04a864d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -156,8 +156,6 @@ jobs: shell: bash steps: - - uses: actions/checkout@v4 - - name: Setup container environment if: matrix.container run: | @@ -171,6 +169,8 @@ jobs: tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 ldd /__e/node20/bin/node + - uses: actions/checkout@v4 + - name: Install packages if: matrix.install run: sudo apt-get -y install ${{matrix.install}} From 0ca11f141ead3e1547e8667aabb1c38f7a1c9d09 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 11:59:23 -0500 Subject: [PATCH 14/31] Rewrite GHA CI to use alandefreitas/cpp-actions utilities. --- .github/workflows/ci.yml | 330 +++++++++------------------------------ 1 file changed, 78 insertions(+), 252 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b04a864d..bfa6372f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,268 +8,94 @@ on: - develop - feature/** -env: - UBSAN_OPTIONS: print_stacktrace=1 - 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: + compilers: | + gcc >= 4.8 + clang >= 3.9 + msvc >= 14 + apple-clang * + mingw * + clang-cl * + standards: '>=11' + trace-commands: true + build: + needs: cpp-matrix strategy: fail-fast: false matrix: - include: - - toolset: gcc-4.8 - cxxstd: "11" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-4.8 - - toolset: gcc-5 - cxxstd: "11,14,1z" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-5 - - toolset: gcc-6 - cxxstd: "11,14,1z" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-6 - - toolset: gcc-7 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: g++-7 - - toolset: gcc-8 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-8 - - toolset: gcc-9 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - - toolset: gcc-10 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-10 - - toolset: gcc-11 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-11 - - toolset: gcc-12 - cxxstd: "11,14,17,20,2b" - os: ubuntu-22.04 - install: g++-12 - - toolset: gcc-13 - cxxstd: "11,14,17,20,2b" - os: ubuntu-latest - container: ubuntu:23.04 - install: g++-13 - - toolset: clang - compiler: clang++-3.9 - cxxstd: "11,14" - os: ubuntu-latest - container: ubuntu:18.04 - install: clang-3.9 - - toolset: clang - compiler: clang++-4.0 - cxxstd: "11,14" - os: ubuntu-latest - container: ubuntu:18.04 - install: clang-4.0 - - toolset: clang - compiler: clang++-5.0 - cxxstd: "11,14,1z" - os: ubuntu-latest - container: ubuntu:18.04 - install: clang-5.0 - - toolset: clang - compiler: clang++-6.0 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: clang-6.0 - - toolset: clang - compiler: clang++-7 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: clang-7 - - toolset: clang - compiler: clang++-8 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: clang-8 - - toolset: clang - compiler: clang++-9 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: clang-9 - - toolset: clang - compiler: clang++-10 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: clang-10 - - toolset: clang - compiler: clang++-11 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: clang-11 - - toolset: clang - compiler: clang++-12 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: clang-12 - - toolset: clang - compiler: clang++-13 - cxxstd: "11,14,17,20,2b" - os: ubuntu-22.04 - install: clang-13 - - toolset: clang - compiler: clang++-14 - cxxstd: "11,14,17,20,2b" - os: ubuntu-22.04 - install: clang-14 - - toolset: clang - compiler: clang++-15 - cxxstd: "11,14,17,20,2b" - os: ubuntu-22.04 - install: clang-15 - - toolset: clang - compiler: clang++-16 - cxxstd: "11,14,17,20,2b" - os: ubuntu-latest - container: ubuntu:23.04 - install: clang-16 - - toolset: clang - cxxstd: "11,14,17,2a" - os: macos-11 - - toolset: clang - cxxstd: "11,14,17,20,2b" - os: macos-12 - - toolset: clang - cxxstd: "11,14,17,20,2b" - os: macos-13 - - runs-on: ${{matrix.os}} - container: - image: ${{matrix.container}} - volumes: - - /node20217:/node20217:rw,rshared - - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} + include: fromJSON(needs.cpp-matrix.outputs.matrix) - defaults: - run: - shell: bash + # use matrix entries + name: ${{ matrix.name }} + runs-on: ${{ matrix.runs-on }} + container: ${{ matrix.container }} steps: - - name: Setup container environment - 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: | + set -x apt-get update - apt-get -y install sudo python3 git g++ curl xz-utils - - - name: Install nodejs20glibc2.17 - if: ${{ startsWith( matrix.container, 'ubuntu:1' ) }} - run: | + 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 - - uses: actions/checkout@v4 - - - name: Install packages - if: matrix.install - run: sudo apt-get -y install ${{matrix.install}} - - - name: Setup Boost - run: | - echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY - LIBRARY=${GITHUB_REPOSITORY#*/} - echo LIBRARY: $LIBRARY - echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV - echo GITHUB_BASE_REF: $GITHUB_BASE_REF - echo GITHUB_REF: $GITHUB_REF - REF=${GITHUB_BASE_REF:-$GITHUB_REF} - REF=${REF#refs/heads/} - echo REF: $REF - BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true - echo BOOST_BRANCH: $BOOST_BRANCH - cd .. - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root - cd boost-root - cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY - git submodule update --init tools/boostdep - python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY - ./bootstrap.sh - ./b2 -d0 headers - - - name: Create user-config.jam - if: matrix.compiler - run: | - echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam - - - name: Run tests - run: | - cd ../boost-root - ./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release - - windows: - strategy: - fail-fast: false - matrix: - include: - - toolset: msvc-14.0 - cxxstd: "14" - addrmd: 32,64 - os: windows-2019 - - toolset: msvc-14.2 - cxxstd: "14,17,20,latest" - addrmd: 32 - os: windows-2019 - - toolset: msvc-14.2 - cxxstd: "14,17,20,latest" - addrmd: 64 - os: windows-2019 - - toolset: msvc-14.3 - cxxstd: "14,17,20,latest" - addrmd: 32 - os: windows-2022 - - toolset: msvc-14.3 - cxxstd: "14,17,20,latest" - addrmd: 64 - os: windows-2022 - - toolset: clang-win - cxxstd: "14,17,latest" - addrmd: 32,64 - os: windows-2022 - - toolset: gcc - cxxstd: "11,14,17,2a" - addrmd: 64 - os: windows-2019 - - runs-on: ${{matrix.os}} - - steps: - - uses: actions/checkout@v4 - - - name: Setup Boost - 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/boostdep - python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% - cmd /c bootstrap - b2 -d0 headers - - - name: Run tests - shell: cmd - run: | - cd ../boost-root - b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release embed-manifest-via=linker + - name: Clone Library + uses: actions/checkout@v4 + + - 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 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: accumulators + + - name: B2 Workflow + uses: alandefreitas/cpp-actions/b2-workflow@master + with: + source-dir: ${{ steps.boost-clone.outputs.boost-dir }} + modules: accumulators + 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 ee74565e503cbae7bb822dfa3aecaa9883ca9c87 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 12:11:16 -0500 Subject: [PATCH 15/31] Fix GHA CI matrix evaluation value. --- .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 bfa6372f..c21ccd51 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,7 +33,7 @@ jobs: strategy: fail-fast: false matrix: - include: fromJSON(needs.cpp-matrix.outputs.matrix) + include: ${{ fromJSON(needs.cpp-matrix.outputs.matrix) }} # use matrix entries name: ${{ matrix.name }} From 3827439142f29ecf262613c8d286bf9962147e52 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 13:39:26 -0500 Subject: [PATCH 16/31] Need to copy tested lib to boost-root. --- .github/workflows/ci.yml | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c21ccd51..0fd533df 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,6 +8,9 @@ on: - develop - feature/** +env: + BOOST_LIBRARY: accumulators + jobs: cpp-matrix: runs-on: ubuntu-latest @@ -27,6 +30,8 @@ jobs: mingw * clang-cl * standards: '>=11' + subrange-policy: | + msvc: one-per-minor trace-commands: true build: needs: cpp-matrix @@ -55,9 +60,6 @@ jobs: tar -xf node-v20.9.0-linux-x64-glibc-217.tar.xz --strip-components 1 -C /node20217 ldd /__e/node20/bin/node - - name: Clone Library - uses: actions/checkout@v4 - - name: Setup C++ Compiler uses: alandefreitas/cpp-actions/setup-cpp@master id: setup-cpp @@ -72,6 +74,9 @@ jobs: 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 @@ -79,13 +84,19 @@ jobs: branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} boost-dir: ../boost-root scan-modules-dir: . - scan-modules-ignore: accumulators + scan-modules-ignore: ${{ env.BOOST_LIBRARY }} + + - name: Copy Library + shell: bash + run: | + cd ${{ steps.boost-clone.outputs.boost-dir }} + cp -r $GITHUB_WORKSPACE/* libs/$BOOST_LIBRARY - name: B2 Workflow uses: alandefreitas/cpp-actions/b2-workflow@master with: source-dir: ${{ steps.boost-clone.outputs.boost-dir }} - modules: accumulators + modules: ${{ env.BOOST_LIBRARY }} toolset: ${{ matrix.b2-toolset }} build-variant: ${{ matrix.build-type }} cxx: ${{ steps.setup-cpp.outputs.cxx || '' }} From 9230513f83327eba0e2c3a4712d4b8a7b4f2e4d5 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 13:52:06 -0500 Subject: [PATCH 17/31] Tweak copy-library step to work on Windows bash. --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0fd533df..540257d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -89,8 +89,10 @@ jobs: - name: Copy Library shell: bash run: | - cd ${{ steps.boost-clone.outputs.boost-dir }} - cp -r $GITHUB_WORKSPACE/* libs/$BOOST_LIBRARY + workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') + cd ../boost-root + mkdir "libs/$BOOST_LIBRARY" + cp -r "$workspace_root"/* "libs/$BOOST_LIBRARY" - name: B2 Workflow uses: alandefreitas/cpp-actions/b2-workflow@master From 78b8f1b61da69a5db6b1ee62184d57ec3e68dd7a Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 13:59:14 -0500 Subject: [PATCH 18/31] Move library name to matrix variable instead of env var. --- .github/workflows/ci.yml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 540257d8..da5b7cc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,9 +8,6 @@ on: - develop - feature/** -env: - BOOST_LIBRARY: accumulators - jobs: cpp-matrix: runs-on: ubuntu-latest @@ -22,6 +19,8 @@ jobs: uses: alandefreitas/cpp-actions/cpp-matrix@master id: cpp-matrix with: + extra-values: | + boost-lib: accumulators compilers: | gcc >= 4.8 clang >= 3.9 @@ -84,21 +83,21 @@ jobs: branch: ${{ (github.ref_name == 'master' && github.ref_name) || 'develop' }} boost-dir: ../boost-root scan-modules-dir: . - scan-modules-ignore: ${{ env.BOOST_LIBRARY }} + scan-modules-ignore: ${{ matrix.boost-lib }} - name: Copy Library shell: bash run: | workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') cd ../boost-root - mkdir "libs/$BOOST_LIBRARY" - cp -r "$workspace_root"/* "libs/$BOOST_LIBRARY" + 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: ${{ env.BOOST_LIBRARY }} + modules: ${{ matrix.boost-lib }} toolset: ${{ matrix.b2-toolset }} build-variant: ${{ matrix.build-type }} cxx: ${{ steps.setup-cpp.outputs.cxx || '' }} From 70797fdc1f9b971ac80ad442549b0b465fc5cfb0 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 14:11:31 -0500 Subject: [PATCH 19/31] Add test dir to scan to fill missing deps. --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da5b7cc0..3e5fe461 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,7 @@ jobs: with: extra-values: | boost-lib: accumulators + test-dirs: test compilers: | gcc >= 4.8 clang >= 3.9 @@ -84,6 +85,7 @@ jobs: boost-dir: ../boost-root scan-modules-dir: . scan-modules-ignore: ${{ matrix.boost-lib }} + modules-scan-paths: ${{ matrix.test-dirs }} - name: Copy Library shell: bash From 2a3eaac15bb55da8db41645c57532354f0378c8d Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 14:19:14 -0500 Subject: [PATCH 20/31] Clear out library dir to be able to copy in workspace tree. --- .github/workflows/ci.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e5fe461..950108c1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: with: extra-values: | boost-lib: accumulators - test-dirs: test + scan-dirs: test compilers: | gcc >= 4.8 clang >= 3.9 @@ -85,13 +85,14 @@ jobs: boost-dir: ../boost-root scan-modules-dir: . scan-modules-ignore: ${{ matrix.boost-lib }} - modules-scan-paths: ${{ matrix.test-dirs }} + modules-scan-paths: ${{ matrix.scan-dirs }} - name: Copy Library shell: bash 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 }}" From 764ba7cddfc7f23df4ede868d5dab23411483e70 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 15:08:39 -0500 Subject: [PATCH 21/31] Avoid the boost tree cache for testing the scanning. --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 950108c1..ed7d33a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -86,12 +86,14 @@ jobs: scan-modules-dir: . scan-modules-ignore: ${{ matrix.boost-lib }} modules-scan-paths: ${{ matrix.scan-dirs }} + cache: false - name: Copy Library shell: bash run: | workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') cd ../boost-root + ls -d1 libs/*/include rm -rf "libs/${{ matrix.boost-lib }}" mkdir "libs/${{ matrix.boost-lib }}" cp -r "$workspace_root"/* "libs/${{ matrix.boost-lib }}" From 0ca43ac8ae0d7594c44cb3f00177026e6c0030fd Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 15:19:24 -0500 Subject: [PATCH 22/31] Remove CI debug listing. --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ed7d33a9..fafca403 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -93,7 +93,6 @@ jobs: run: | workspace_root=$(echo "$GITHUB_WORKSPACE" | sed 's/\\/\//g') cd ../boost-root - ls -d1 libs/*/include rm -rf "libs/${{ matrix.boost-lib }}" mkdir "libs/${{ matrix.boost-lib }}" cp -r "$workspace_root"/* "libs/${{ matrix.boost-lib }}" From f663e25c789694a55426cfe2a870b156ddebd993 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 15:35:55 -0500 Subject: [PATCH 23/31] Tweak factors to reduce over-builds. --- .github/workflows/ci.yml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fafca403..bbd4b105 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,8 +30,14 @@ jobs: mingw * clang-cl * standards: '>=11' - subrange-policy: | - msvc: one-per-minor + latest-factors: | + gcc Asan TSan UBSan + clang BoundsSan + factors: | + gcc Shared + msvc Shared x86 + mingw Shared + subrange-policy: one-per-minor trace-commands: true build: needs: cpp-matrix From ad679ee3250ddad7afafc0f2aa3ed4d80dbff460 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Sat, 5 Apr 2025 16:42:49 -0500 Subject: [PATCH 24/31] Try and coax more msvc testing. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbd4b105..70e43627 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,14 +25,14 @@ jobs: compilers: | gcc >= 4.8 clang >= 3.9 - msvc >= 14 + msvc >= 14.0 apple-clang * mingw * clang-cl * standards: '>=11' latest-factors: | gcc Asan TSan UBSan - clang BoundsSan + clang BoundsSan IntSan factors: | gcc Shared msvc Shared x86 From c094c138355fd05444862a9780539ff2990655eb Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Mon, 7 Apr 2025 10:50:42 -0500 Subject: [PATCH 25/31] 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 07705127..5ccb142e 100644 --- a/build.jam +++ b/build.jam @@ -28,12 +28,11 @@ constant boost_dependencies : /boost/typeof//boost_typeof ; project /boost/accumulators - : common-requirements - include ; explicit - [ alias boost_accumulators : : : : $(boost_dependencies) ] + [ alias boost_accumulators : : : + : include $(boost_dependencies) ] [ alias all : boost_accumulators example test ] ; From bf6da00b665ff0812b0f9882744854d6be48e475 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Wed, 9 Apr 2025 23:03:37 -0500 Subject: [PATCH 26/31] 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 70e43627..faaf4ac2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,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 c50c5f7c36262eb6a96ca48b340573684dc095eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Ferdinand=20Rivera=20Morell?= Date: Thu, 5 Jun 2025 13:06:37 -0500 Subject: [PATCH 27/31] Revert GHA CI changes. --- .github/workflows/ci.yml | 346 +++++++++++++++++++++++++++------------ 1 file changed, 243 insertions(+), 103 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index faaf4ac2..f0dad7ac 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,117 +8,257 @@ on: - develop - feature/** +env: + UBSAN_OPTIONS: print_stacktrace=1 + 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: accumulators - scan-dirs: test - compilers: | - gcc >= 4.8 - clang >= 3.9 - msvc >= 14.0 - 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: + - toolset: gcc-4.8 + cxxstd: "11" + os: ubuntu-latest + container: ubuntu:18.04 + install: g++-4.8 + - toolset: gcc-5 + cxxstd: "11,14,1z" + os: ubuntu-latest + container: ubuntu:18.04 + install: g++-5 + - toolset: gcc-6 + cxxstd: "11,14,1z" + os: ubuntu-latest + container: ubuntu:18.04 + install: g++-6 + - toolset: gcc-7 + cxxstd: "11,14,17" + os: ubuntu-20.04 + install: g++-7 + - toolset: gcc-8 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: g++-8 + - toolset: gcc-9 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + - toolset: gcc-10 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: g++-10 + - toolset: gcc-11 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: g++-11 + - toolset: gcc-12 + cxxstd: "11,14,17,20,2b" + os: ubuntu-22.04 + install: g++-12 + - toolset: gcc-13 + cxxstd: "11,14,17,20,2b" + os: ubuntu-latest + container: ubuntu:23.04 + install: g++-13 + - toolset: clang + compiler: clang++-3.9 + cxxstd: "11,14" + os: ubuntu-latest + container: ubuntu:18.04 + install: clang-3.9 + - toolset: clang + compiler: clang++-4.0 + cxxstd: "11,14" + os: ubuntu-latest + container: ubuntu:18.04 + install: clang-4.0 + - toolset: clang + compiler: clang++-5.0 + cxxstd: "11,14,1z" + os: ubuntu-latest + container: ubuntu:18.04 + install: clang-5.0 + - toolset: clang + compiler: clang++-6.0 + cxxstd: "11,14,17" + os: ubuntu-20.04 + install: clang-6.0 + - toolset: clang + compiler: clang++-7 + cxxstd: "11,14,17" + os: ubuntu-20.04 + install: clang-7 + - toolset: clang + compiler: clang++-8 + cxxstd: "11,14,17" + os: ubuntu-20.04 + install: clang-8 + - toolset: clang + compiler: clang++-9 + cxxstd: "11,14,17" + os: ubuntu-20.04 + install: clang-9 + - toolset: clang + compiler: clang++-10 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: clang-10 + - toolset: clang + compiler: clang++-11 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: clang-11 + - toolset: clang + compiler: clang++-12 + cxxstd: "11,14,17,2a" + os: ubuntu-20.04 + install: clang-12 + - toolset: clang + compiler: clang++-13 + cxxstd: "11,14,17,20,2b" + os: ubuntu-22.04 + install: clang-13 + - toolset: clang + compiler: clang++-14 + cxxstd: "11,14,17,20,2b" + os: ubuntu-22.04 + install: clang-14 + - toolset: clang + compiler: clang++-15 + cxxstd: "11,14,17,20,2b" + os: ubuntu-22.04 + install: clang-15 + - toolset: clang + compiler: clang++-16 + cxxstd: "11,14,17,20,2b" + os: ubuntu-latest + container: ubuntu:23.04 + install: clang-16 + - toolset: clang + cxxstd: "11,14,17,2a" + os: macos-11 + - toolset: clang + cxxstd: "11,14,17,20,2b" + os: macos-12 + - toolset: clang + cxxstd: "11,14,17,20,2b" + os: macos-13 + + runs-on: ${{matrix.os}} + container: ${{matrix.container}} - # use matrix entries - name: ${{ matrix.name }} - runs-on: ${{ matrix.runs-on }} - container: ${{ matrix.container }} + defaults: + run: + shell: bash 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 }} + - uses: actions/checkout@v3 + + - name: Setup container environment + if: matrix.container run: | - 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 + apt-get -y install sudo python3 git g++ + + - name: Install packages + if: matrix.install + run: sudo apt-get -y install ${{matrix.install}} + + - name: Setup Boost + run: | + echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY + LIBRARY=${GITHUB_REPOSITORY#*/} + echo LIBRARY: $LIBRARY + echo "LIBRARY=$LIBRARY" >> $GITHUB_ENV + echo GITHUB_BASE_REF: $GITHUB_BASE_REF + echo GITHUB_REF: $GITHUB_REF + REF=${GITHUB_BASE_REF:-$GITHUB_REF} + REF=${REF#refs/heads/} + echo REF: $REF + BOOST_BRANCH=develop && [ "$REF" == "master" ] && BOOST_BRANCH=master || true + echo BOOST_BRANCH: $BOOST_BRANCH + cd .. + git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root + cd boost-root + cp -r $GITHUB_WORKSPACE/* libs/$LIBRARY + git submodule update --init tools/boostdep + python3 tools/boostdep/depinst/depinst.py --git_args "--jobs 3" $LIBRARY + ./bootstrap.sh + ./b2 -d0 headers + + - name: Create user-config.jam + if: matrix.compiler + run: | + echo "using ${{matrix.toolset}} : : ${{matrix.compiler}} ;" > ~/user-config.jam + + - name: Run tests + run: | + cd ../boost-root + ./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} variant=debug,release + + windows: + strategy: + fail-fast: false + matrix: + include: + - toolset: msvc-14.0 + cxxstd: "14" + addrmd: 32,64 + os: windows-2019 + - toolset: msvc-14.2 + cxxstd: "14,17,20,latest" + addrmd: 32 + os: windows-2019 + - toolset: msvc-14.2 + cxxstd: "14,17,20,latest" + addrmd: 64 + os: windows-2019 + - toolset: msvc-14.3 + cxxstd: "14,17,20,latest" + addrmd: 32 + os: windows-2022 + - toolset: msvc-14.3 + cxxstd: "14,17,20,latest" + addrmd: 64 + os: windows-2022 + - toolset: clang-win + cxxstd: "14,17,latest" + addrmd: 32,64 + os: windows-2022 + - toolset: gcc + cxxstd: "11,14,17,2a" + addrmd: 64 + os: windows-2019 + + runs-on: ${{matrix.os}} + + steps: + - uses: actions/checkout@v3 + + - name: Setup Boost + 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/boostdep + python tools/boostdep/depinst/depinst.py --git_args "--jobs 3" %LIBRARY% + cmd /c bootstrap + b2 -d0 headers + + - name: Run tests + 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 + b2 -j3 libs/%LIBRARY%/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} address-model=${{matrix.addrmd}} variant=debug,release embed-manifest-via=linker From 6ca9244c0776179aa09faf9260c03a40c3d2e78d Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 08:29:18 -0500 Subject: [PATCH 28/31] Less impactful update of CI. --- .github/workflows/ci.yml | 68 ++++++++++++++++++++++++++-------------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f0dad7ac..e39f941f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,22 +34,27 @@ jobs: install: g++-6 - toolset: gcc-7 cxxstd: "11,14,17" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: g++-7 - toolset: gcc-8 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: g++-8 - toolset: gcc-9 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 - toolset: gcc-10 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: g++-10 - toolset: gcc-11 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: g++-11 - toolset: gcc-12 cxxstd: "11,14,17,20,2b" @@ -58,7 +63,7 @@ jobs: - toolset: gcc-13 cxxstd: "11,14,17,20,2b" os: ubuntu-latest - container: ubuntu:23.04 + container: ubuntu:24.04 install: g++-13 - toolset: clang compiler: clang++-3.9 @@ -81,37 +86,44 @@ jobs: - toolset: clang compiler: clang++-6.0 cxxstd: "11,14,17" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-6.0 - toolset: clang compiler: clang++-7 cxxstd: "11,14,17" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-7 - toolset: clang compiler: clang++-8 cxxstd: "11,14,17" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-8 - toolset: clang compiler: clang++-9 cxxstd: "11,14,17" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-9 - toolset: clang compiler: clang++-10 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-10 - toolset: clang compiler: clang++-11 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-11 - toolset: clang compiler: clang++-12 cxxstd: "11,14,17,2a" - os: ubuntu-20.04 + os: ubuntu-latest + container: ubuntu:20.04 install: clang-12 - toolset: clang compiler: clang++-13 @@ -131,39 +143,49 @@ jobs: - toolset: clang compiler: clang++-16 cxxstd: "11,14,17,20,2b" - os: ubuntu-latest - container: ubuntu:23.04 + os: ubuntu-24.04 install: clang-16 - toolset: clang - cxxstd: "11,14,17,2a" - os: macos-11 + cxxstd: "11,14,17,20,2b" + os: macos-13 - toolset: clang cxxstd: "11,14,17,20,2b" - os: macos-12 + os: macos-14 - toolset: clang cxxstd: "11,14,17,20,2b" - os: macos-13 + os: macos-15 runs-on: ${{matrix.os}} - container: ${{matrix.container}} + container: + image: ${{matrix.container}} + volumes: + - /node20217:/node20217:rw,rshared + - ${{ startsWith(matrix.container, 'ubuntu:1') && '/node20217:/__e/node20:ro,rshared' || ' ' }} defaults: run: shell: bash steps: - - uses: actions/checkout@v3 - - name: Setup container environment if: matrix.container run: | apt-get update - apt-get -y install sudo python3 git g++ + 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: Install packages if: matrix.install run: sudo apt-get -y install ${{matrix.install}} + - uses: actions/checkout@v3 + - name: Setup Boost run: | echo GITHUB_REPOSITORY: $GITHUB_REPOSITORY From ead93463691ea72113bc881e8142d2be3d881d7b Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 09:03:05 -0500 Subject: [PATCH 29/31] Bump gcc-11 container and be explicit about the exe to try and make it findable. --- .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 e39f941f..10c91de0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,9 +52,10 @@ jobs: container: ubuntu:20.04 install: g++-10 - toolset: gcc-11 + compiler: g++-11 cxxstd: "11,14,17,2a" os: ubuntu-latest - container: ubuntu:20.04 + container: ubuntu:24.04 install: g++-11 - toolset: gcc-12 cxxstd: "11,14,17,20,2b" From 281307ae93e24addbac79af8b3a4e2e380ea118c Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Fri, 6 Jun 2025 17:46:16 -0500 Subject: [PATCH 30/31] Be explicit about compiler gcc commands. --- .github/workflows/ci.yml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 10c91de0..4a11e7f9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,51 +17,60 @@ jobs: fail-fast: false matrix: include: - - toolset: gcc-4.8 + - toolset: gcc + compiler: g++-4.8 cxxstd: "11" os: ubuntu-latest container: ubuntu:18.04 install: g++-4.8 - - toolset: gcc-5 + - toolset: gcc + compiler: g++-5 cxxstd: "11,14,1z" os: ubuntu-latest container: ubuntu:18.04 install: g++-5 - - toolset: gcc-6 + - toolset: gcc + compiler: g++-6 cxxstd: "11,14,1z" os: ubuntu-latest container: ubuntu:18.04 install: g++-6 - - toolset: gcc-7 + - toolset: gcc + compiler: g++-7 cxxstd: "11,14,17" os: ubuntu-latest container: ubuntu:20.04 install: g++-7 - - toolset: gcc-8 + - toolset: gcc + compiler: g++-8 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 install: g++-8 - - toolset: gcc-9 + - toolset: gcc + compiler: g++-9 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 - - toolset: gcc-10 + - toolset: gcc + compiler: g++-10 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 install: g++-10 - - toolset: gcc-11 + - toolset: gcc compiler: g++-11 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:24.04 install: g++-11 - - toolset: gcc-12 + - toolset: gcc + compiler: g++-12 cxxstd: "11,14,17,20,2b" os: ubuntu-22.04 install: g++-12 - - toolset: gcc-13 + - toolset: gcc + compiler: g++-13 cxxstd: "11,14,17,20,2b" os: ubuntu-latest container: ubuntu:24.04 From 16e59a372c71cd573cf62defbdd2262984af5ac6 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Thu, 26 Jun 2025 08:46:39 -0500 Subject: [PATCH 31/31] Undo compiler spec change. --- .github/workflows/ci.yml | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4a11e7f9..d28a6295 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,60 +17,50 @@ jobs: fail-fast: false matrix: include: - - toolset: gcc - compiler: g++-4.8 + - toolset: gcc-4.8 cxxstd: "11" os: ubuntu-latest container: ubuntu:18.04 install: g++-4.8 - - toolset: gcc - compiler: g++-5 + - toolset: gcc-5 cxxstd: "11,14,1z" os: ubuntu-latest container: ubuntu:18.04 install: g++-5 - - toolset: gcc - compiler: g++-6 + - toolset: gcc-6 cxxstd: "11,14,1z" os: ubuntu-latest container: ubuntu:18.04 install: g++-6 - - toolset: gcc - compiler: g++-7 + - toolset: gcc-7 cxxstd: "11,14,17" os: ubuntu-latest container: ubuntu:20.04 install: g++-7 - - toolset: gcc - compiler: g++-8 + - toolset: gcc-8 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 install: g++-8 - - toolset: gcc - compiler: g++-9 + - toolset: gcc-9 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 - - toolset: gcc - compiler: g++-10 + - toolset: gcc-10 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:20.04 install: g++-10 - - toolset: gcc - compiler: g++-11 + - toolset: gcc-11 cxxstd: "11,14,17,2a" os: ubuntu-latest container: ubuntu:24.04 install: g++-11 - - toolset: gcc - compiler: g++-12 + - toolset: gcc-12 cxxstd: "11,14,17,20,2b" os: ubuntu-22.04 install: g++-12 - - toolset: gcc - compiler: g++-13 + - toolset: gcc-13 cxxstd: "11,14,17,20,2b" os: ubuntu-latest container: ubuntu:24.04