From cc87b132f8062939bcd2a2ade7d30dcb149648f3 Mon Sep 17 00:00:00 2001 From: jzmaddock Date: Tue, 15 Apr 2025 10:40:21 +0100 Subject: [PATCH] Modular Boost and big CI update. * Make the library modular usable. * Add missing import-search for cconfig/predef checks. * Add requires-b2 check to top-level build file. * Bump B2 require to 5.2 * Remove boost-root target refs. * Change all references to . * Update copyright dates. * Fix library global (relative) references. * Move inter-lib dependencies to a project variable and into the build targets. * Add Boost.StaticAssert transitive dep module. * Only test on latest macOS. * Add Boost.ThrowExceptions transitive dep module. * Add Boost.Preprocessor transitive dep module. * Change MacOS Clang std version to 20 from 2a * Disable ranges on MacOS. Remove CUDA testing - I just can't get CUDA to install any more. * Update drone checkouts. --------- Co-authored-by: Rene Rivera --- .drone/boost.sh | 3 + .github/workflows/ci.yml | 142 +++++-------------------- build.jam | 32 ++++++ include/boost/config/stdlib/libcpp.hpp | 5 + test/Jamfile.v2 | 9 +- test/all/options_v2.jam | 10 +- tools/Jamfile.v2 | 10 +- 7 files changed, 83 insertions(+), 128 deletions(-) create mode 100644 build.jam diff --git a/.drone/boost.sh b/.drone/boost.sh index e2e9aecd..3a4d9ae0 100755 --- a/.drone/boost.sh +++ b/.drone/boost.sh @@ -25,6 +25,9 @@ git submodule update --init libs/detail git submodule update --init libs/core git submodule update --init libs/assert git submodule update --init libs/type_traits +git submodule update --init libs/throw_exception +git submodule update --init libs/static_assert +git submodule update --init libs/preprocessor cp -r $TRAVIS_BUILD_DIR/* libs/config ./bootstrap.sh ./b2 headers diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7bcd582..0ee8b8c5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -82,7 +82,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -126,7 +126,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -170,7 +170,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -190,43 +190,8 @@ jobs: - name: Test run: ../../../b2 toolset=$TOOLSET cxxstd=03,11,14,17,2a working-directory: ../boost-root/libs/config/test - macos_11: - runs-on: macos-11 - strategy: - fail-fast: false - matrix: - toolset: [ clang, gcc-11, gcc-10 ] - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: '0' - - uses: mstachniuk/ci-skip@v1 - with: - commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[linux];[Linux];[LINUX]' - commit-filter-separator: ';' - fail-fast: true - - name: Checkout main boost - run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits - working-directory: ../boost-root - - name: Copy files - run: cp -r $GITHUB_WORKSPACE/* libs/config - working-directory: ../boost-root - - name: Bootstrap - run: ./bootstrap.sh - working-directory: ../boost-root - - name: Generate headers - run: ./b2 headers - working-directory: ../boost-root - - name: Config info - run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a - working-directory: ../boost-root/libs/config/test - - name: Test - run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a - working-directory: ../boost-root/libs/config/test - macos_12: - runs-on: macos-12 + macos: + runs-on: macos-latest strategy: fail-fast: false matrix: @@ -243,7 +208,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -255,7 +220,7 @@ jobs: run: ./b2 headers working-directory: ../boost-root - name: Config info - run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a + run: ../../../b2 print_config_info toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,20 working-directory: ../boost-root/libs/config/test - name: Test run: ../../../b2 toolset=${{ matrix.toolset }} cxxstd=03,11,14,17,2a @@ -281,7 +246,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\config @@ -319,7 +284,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\config @@ -357,7 +322,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\config @@ -395,7 +360,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: xcopy /s /e /q %GITHUB_WORKSPACE% libs\config @@ -412,20 +377,20 @@ jobs: - name: Test run: ..\..\..\b2 --hash address-model=64 cxxstd=14,17,latest toolset=clang-win embed-manifest-via=linker working-directory: ../boost-root/libs/config/test - non_intel_ubuntu_20_04_gcc: - runs-on: ubuntu-20.04 + non_intel_ubuntu_22_04_gcc: + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: qemu_arch: [ aarch64, s390x, ppc64le ] steps: - uses: actions/checkout@v3 - - uses: uraimo/run-on-arch-action@v2 + - uses: uraimo/run-on-arch-action@v3 name: Run commands id: runcmd with: arch: ${{ matrix.qemu_arch }} - distro: ubuntu20.04 + distro: ubuntu22.04 # Not required, but speeds up builds by storing container images in # a GitHub package registry. @@ -435,7 +400,7 @@ jobs: run: | uname -a apt update - apt -y install gcc g++ git python + apt -y install gcc g++ git python3 echo $PWD config=$PWD cd .. @@ -443,25 +408,25 @@ jobs: cd boost-root rm -rf libs/config/* cp -r $config/* libs/config - git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor ./bootstrap.sh ./b2 headers ./b2 toolset=gcc libs/config/test//print_config_info libs/config/test//print_math_info cd libs/config/test && ../../../b2 toolset=gcc cxxstd=03,11,14,17 - non_intel_ubuntu_20_04_clang: - runs-on: ubuntu-20.04 + non_intel_ubuntu_22_04_clang: + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: qemu_arch: [ aarch64, ppc64le ] steps: - uses: actions/checkout@v3 - - uses: uraimo/run-on-arch-action@v2 + - uses: uraimo/run-on-arch-action@v3 name: Run commands id: runcmd with: arch: ${{ matrix.qemu_arch }} - distro: ubuntu20.04 + distro: ubuntu22.04 # Not required, but speeds up builds by storing container images in # a GitHub package registry. @@ -471,7 +436,7 @@ jobs: run: | uname -a apt update - apt -y install clang gcc g++ git python + apt -y install clang gcc g++ git python3 echo $PWD config=$PWD cd .. @@ -479,14 +444,14 @@ jobs: cd boost-root rm -rf libs/config/* cp -r $config/* libs/config - git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor ./bootstrap.sh ./b2 headers ./b2 toolset=clang libs/config/test//print_config_info libs/config/test//print_math_info cd libs/config/test ../../../b2 toolset=clang cxxstd=03,11,14,17 emscripten_wasm: - runs-on: ubuntu-20.04 + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: @@ -515,7 +480,7 @@ jobs: - name: Checkout main boost run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits + run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits libs/static_assert libs/throw_exception libs/preprocessor working-directory: ../boost-root - name: Copy files run: cp -r $GITHUB_WORKSPACE/* libs/config @@ -562,58 +527,3 @@ jobs: source ../emsdk/emsdk_env.sh emcc -pthread -s EXIT_RUNTIME=1 -s PTHREAD_POOL_SIZE=32 -s DISABLE_EXCEPTION_CATCHING=0 -I. -O3 -o config_test_pthread libs/config/test/config_test.cpp node --experimental-wasm-threads config_test_pthread - ubuntu-cuda: - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: - std: [ 11, 14, 17 ] - steps: - - uses: actions/checkout@v3 - with: - fetch-depth: '0' - - uses: mstachniuk/ci-skip@v1 - with: - commit-filter: '[skip ci];[ci skip];[CI SKIP];[SKIP CI];***CI SKIP***;***SKIP CI***;[windows];[Windows];[WINDOWS];[apple];[Apple];[APPLE]' - commit-filter-separator: ';' - fail-fast: true - - uses: Jimver/cuda-toolkit@v0.2.4 - - name: Add repository - run: sudo apt-add-repository -y "ppa:ubuntu-toolchain-r/test" - - name: Install packages - run: sudo apt install g++-11 clang-11 - - name: Checkout main boost - run: git clone -b develop --depth 1 https://github.com/boostorg/boost.git ../boost-root - - name: Update Dependencies - run: git submodule update --init tools/build tools/boost_install libs/headers libs/detail libs/core libs/assert libs/type_traits - working-directory: ../boost-root - - name: Copy files - run: cp -r $GITHUB_WORKSPACE/* libs/config - working-directory: ../boost-root - - name: Bootstrap - run: ./bootstrap.sh - working-directory: ../boost-root - - name: Generate headers - run: ./b2 headers - working-directory: ../boost-root - - name: nvcc version - run: nvcc --version - working-directory: ../boost-root/libs/config/test - - name: Config info nvcc - run: nvcc -std=c++${{ matrix.std }} -o config_info -I../../.. config_info.cpp && ./config_info - working-directory: ../boost-root/libs/config/test - - name: Config_test nvcc - run: nvcc -std=c++${{ matrix.std }} -o config_test -I../../.. config_test.cpp && ./config_test - working-directory: ../boost-root/libs/config/test - - name: Config_test nvcc-cuda - run: nvcc -c -std=c++${{ matrix.std }} -I../../.. config_test.cu - working-directory: ../boost-root/libs/config/test - - name: Config info nvcc+clang - run: nvcc -std=c++${{ matrix.std }} --compiler-bindir=clang++ -o config_info -I../../.. config_info.cpp && ./config_info - working-directory: ../boost-root/libs/config/test - - name: Config_test nvcc+clang - run: nvcc -std=c++${{ matrix.std }} --compiler-bindir=clang++ -o config_test -I../../.. config_test.cpp -latomic && ./config_test - working-directory: ../boost-root/libs/config/test - - name: Config_test clang-cuda - run: clang++ -nocudalib --no-cuda-version-check -c --cuda-gpu-arch=sm_75 -std=c++${{ matrix.std }} -I../../.. config_test.cu - working-directory: ../boost-root/libs/config/test diff --git a/build.jam b/build.jam new file mode 100644 index 00000000..5d3a4ff5 --- /dev/null +++ b/build.jam @@ -0,0 +1,32 @@ +# 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) + +require-b2 5.2 ; + +path-constant BOOST_CONFIG_ROOT : . ; +import-search $(BOOST_CONFIG_ROOT)/checks ; + +project /boost/config + : common-requirements + include + ; + +explicit + [ alias boost_config : : : : $(boost_dependencies) ] + [ alias all : boost_config test ] + [ alias testing + : # sources + : # requirements + : # default-buidl + : # usage-requirements + test + ] + ; + +call-if : boost-library config + ; + +use-project /boost/architecture : checks/architecture ; + diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp index 0e9f2445..777228fa 100644 --- a/include/boost/config/stdlib/libcpp.hpp +++ b/include/boost/config/stdlib/libcpp.hpp @@ -177,4 +177,9 @@ #endif #endif +#if _LIBCPP_VERSION <= 170006 +// no std::ranges::join_view +# define BOOST_NO_CXX20_HDR_RANGES +#endif + // --- end --- diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index f4fe179c..e97fb911 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -10,15 +10,20 @@ import feature ; import testing ; +import notfile ; project : requirements gcc:-Wno-deprecated-declarations + /boost/core//boost_core + /boost/detail//boost_detail + /boost/type_traits//boost_type_traits ; import modules ; -import ../checks/config : requires ; +import-search /boost/config/checks ; +import config : requires ; local is_unix = [ modules.peek : UNIX ] ; @@ -98,7 +103,7 @@ test-suite config single BOOST_DYN_LINK=1 BOOST_CONFIG_NO_LIB=1 - vxworks:shared + vxworks:shared : config_link_test ] diff --git a/test/all/options_v2.jam b/test/all/options_v2.jam index ac748ef0..aa7daca9 100644 --- a/test/all/options_v2.jam +++ b/test/all/options_v2.jam @@ -1,12 +1,12 @@ # copyright John Maddock 2003 -# Use, modification and distribution are subject to the -# Boost Software License, Version 1.0. (See accompanying file +# Use, modification and distribution are subject to 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) project - : requirements + : requirements # threading tests require thread support turned on: multi ; - -local test-requirements = ../../test/build//boost_test_exec_monitor ; + +local test-requirements = /boost/test//boost_test_exec_monitor ; diff --git a/tools/Jamfile.v2 b/tools/Jamfile.v2 index de66b8d2..110843e0 100644 --- a/tools/Jamfile.v2 +++ b/tools/Jamfile.v2 @@ -1,11 +1,11 @@ # Copyright John Maddock 2005. -# Use, modification and distribution are subject to the -# Boost Software License, Version 1.0. (See accompanying file +# Use, modification and distribution are subject to 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) -run generate.cpp - ../../regex/build//boost_regex - ../../filesystem/build//boost_filesystem ../../system/build//boost_system +run generate.cpp + /boost/regex//boost_regex + /boost/filesystem//boost_filesystem /boost/system//boost_system : ../../.. ;