From f86d9fbc5e265dc0ae8ba545a341f509576d15b9 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sat, 7 Dec 2024 19:54:28 +0100 Subject: [PATCH 1/7] Fix node 20 issue on GHA CI --- .github/workflows/ci.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e436f52..66b0e8d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -174,24 +174,28 @@ jobs: os: macos-14 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: - - name: Enable Node 16 - run: | - echo "ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true" >> $GITHUB_ENV - - - 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 + if [[ "${{matrix.container}}" == "ubuntu:1"* ]]; then + # Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590 + curl -sL https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 + fi + + - uses: actions/checkout@v4 - name: Install packages if: matrix.install From 61667c6f913188a4fa5ba551a6a496e4e6bf13e3 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sun, 8 Dec 2024 13:52:10 +0100 Subject: [PATCH 2/7] Reformat CI and remove macos-12 --- .github/workflows/ci.yml | 189 ++++++--------------------------------- 1 file changed, 29 insertions(+), 160 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 66b0e8d..7ca234b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,161 +17,35 @@ jobs: fail-fast: false matrix: include: - - toolset: gcc-4.8 - cxxstd: "11" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-4.8-multilib - address-model: 32,64 - - toolset: gcc-5 - cxxstd: "11,14,1z" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-5-multilib - address-model: 32,64 - - toolset: gcc-6 - cxxstd: "11,14,1z" - os: ubuntu-latest - container: ubuntu:18.04 - install: g++-6-multilib - address-model: 32,64 - - toolset: gcc-7 - cxxstd: "11,14,17" - os: ubuntu-20.04 - install: g++-7-multilib - address-model: 32,64 - - toolset: gcc-8 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-8-multilib - address-model: 32,64 - - toolset: gcc-9 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-9-multilib - address-model: 32,64 - - toolset: gcc-10 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - install: g++-10-multilib - address-model: 32,64 - - toolset: gcc-11 - cxxstd: "11,14,17,20" - os: ubuntu-22.04 - install: g++-11-multilib - address-model: 32,64 - - toolset: gcc-12 - cxxstd: "11,14,17,20,2b" - os: ubuntu-22.04 - install: g++-12-multilib - address-model: 32,64 - - toolset: gcc-13 - cxxstd: "11,14,17,20,2b" - container: ubuntu:23.04 - os: ubuntu-latest - install: g++-13-multilib - address-model: 32,64 - - toolset: gcc-14 - cxxstd: "11,14,17,20,2b" - container: ubuntu:24.04 - os: ubuntu-latest - install: g++-14-multilib - address-model: 32,64 - - 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,2a" - os: ubuntu-20.04 - install: clang-9 - - toolset: clang - compiler: clang++-10 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - - toolset: clang - compiler: clang++-11 - cxxstd: "11,14,17,2a" - os: ubuntu-20.04 - - toolset: clang - compiler: clang++-12 - cxxstd: "11,14,17,20" - os: ubuntu-20.04 - - toolset: clang - compiler: clang++-13 - cxxstd: "11,14,17,20,2b" - container: ubuntu:22.04 - os: ubuntu-latest - install: clang-13 - - toolset: clang - compiler: clang++-14 - cxxstd: "11,14,17,20,2b" - container: ubuntu:22.04 - os: ubuntu-latest - install: clang-14 - - toolset: clang - compiler: clang++-15 - cxxstd: "11,14,17,20,2b" - container: ubuntu:22.04 - os: ubuntu-latest - install: clang-15 - - toolset: clang - compiler: clang++-16 - cxxstd: "11,14,17,20,2b" - container: ubuntu:23.04 - os: ubuntu-latest - install: clang-16 - - toolset: clang - compiler: clang++-17 - cxxstd: "11,14,17,20,2b" - container: ubuntu:23.10 - os: ubuntu-latest - install: clang-17 - - toolset: clang - compiler: clang++-18 - cxxstd: "11,14,17,20,2b" - container: ubuntu:24.04 - os: ubuntu-latest - install: clang-18 - - toolset: clang - cxxstd: "11,14,17,20,2b" - os: macos-12 - - toolset: clang - cxxstd: "11,14,17,20,2b" - os: macos-13 - - toolset: clang - cxxstd: "11,14,17,20,2b" - os: macos-14 + - { toolset: gcc-4.8, cxxstd: "11", os: ubuntu-latest, container: 'ubuntu:18.04', install: g++-4.8-multilib, address-model: 32,64 } + - { toolset: gcc-5, cxxstd: "11,14,1z", os: ubuntu-latest, container: 'ubuntu:18.04', install: g++-5-multilib, address-model: 32,64 } + - { toolset: gcc-6, cxxstd: "11,14,1z", os: ubuntu-latest, container: 'ubuntu:18.04', install: g++-6-multilib, address-model: 32,64 } + - { toolset: gcc-7, cxxstd: "11,14,17", os: ubuntu-20.04, install: g++-7-multilib, address-model: 32,64 } + - { toolset: gcc-8, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: g++-8-multilib, address-model: 32,64 } + - { toolset: gcc-9, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: g++-9-multilib, address-model: 32,64 } + - { toolset: gcc-10, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: g++-10-multilib, address-model: 32,64 } + - { toolset: gcc-11, cxxstd: "11,14,17,20", os: ubuntu-22.04, install: g++-11-multilib, address-model: 32,64 } + - { toolset: gcc-12, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: g++-12-multilib, address-model: 32,64 } + - { toolset: gcc-13, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: g++-13-multilib, address-model: 32,64 } + - { toolset: gcc-14, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: g++-14-multilib, address-model: 32,64 } + - { toolset: clang++-3.9, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-3.9 } + - { toolset: clang++-4.0, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-4.0 } + - { toolset: clang++-5.0, cxxstd: "11,14,1z", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-5.0 } + - { toolset: clang++-6.0, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-6.0 } + - { toolset: clang++-7, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-7 } + - { toolset: clang++-8, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-8 } + - { toolset: clang++-9, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: clang-9 } + - { toolset: clang++-10, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } + - { toolset: clang++-11, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } + - { toolset: clang++-12, cxxstd: "11,14,17,20", os: ubuntu-20.04 } + - { toolset: clang++-13, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-13 } + - { toolset: clang++-14, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-14 } + - { toolset: clang++-15, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-15 } + - { toolset: clang++-16, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-16 } + - { toolset: clang++-17, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-17 } + - { toolset: clang++-18, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-18 } + - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-13 } + - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-14 } runs-on: ${{matrix.os}} container: @@ -225,11 +99,6 @@ jobs: ./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 From e14036aa5ac67da40143078fd7570f79b82213a3 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sun, 8 Dec 2024 14:49:10 +0100 Subject: [PATCH 3/7] Fix clang toolset --- .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 7ca234b..73e33a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -103,7 +103,8 @@ jobs: run: | cd ../boost-root export ADDRMD=${{matrix.address-model}} - ./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} ${ADDRMD:+address-model=$ADDRMD} variant=debug,release + toolset="${{matrix.toolset}}" + ./b2 -j3 libs/$LIBRARY/test toolset="${toolset/clang++/clang}" cxxstd=${{matrix.cxxstd}} ${ADDRMD:+address-model=$ADDRMD} variant=debug,release windows: strategy: From bc5d837b8aae8b4faffc3349e042735b49c6b5e9 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sun, 8 Dec 2024 20:56:16 +0100 Subject: [PATCH 4/7] Install xz --- .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 73e33a9..ef20263 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,7 +63,7 @@ jobs: if: matrix.container run: | apt-get update - apt-get -y install sudo python3 git g++ curl + apt-get -y install sudo python3 git g++ curl xz-utils if [[ "${{matrix.container}}" == "ubuntu:1"* ]]; then # Node 20 doesn't work with Ubuntu 16/18 glibc: https://github.com/actions/checkout/issues/1590 curl -sL https://archives.boost.io/misc/node/node-v20.9.0-linux-x64-glibc-217.tar.xz | tar -xJ --strip-components 1 -C /node20217 From 1eb3271fdf6f06f140ee8e0eda68ae352e5f4aa7 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Tue, 10 Dec 2024 10:12:19 +0100 Subject: [PATCH 5/7] Remove C++2b from clang-17 There is a bug with libstdc++13 in 24.04: https://github.com/llvm/llvm-project/issues/59827 --- .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 ef20263..827f151 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -42,7 +42,7 @@ jobs: - { toolset: clang++-14, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-14 } - { toolset: clang++-15, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-15 } - { toolset: clang++-16, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-16 } - - { toolset: clang++-17, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-17 } + - { toolset: clang++-17, cxxstd: "11,14,17,20", os: ubuntu-24.04, install: clang-17 } - { toolset: clang++-18, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-18 } - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-13 } - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-14 } From 1d6f052604d1ce32e7002bbb087da791893664e3 Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sun, 2 Feb 2025 11:56:03 +0100 Subject: [PATCH 6/7] Use clang-yy as toolset --- .github/workflows/ci.yml | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 827f151..c163cab 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,22 +28,22 @@ jobs: - { toolset: gcc-12, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: g++-12-multilib, address-model: 32,64 } - { toolset: gcc-13, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: g++-13-multilib, address-model: 32,64 } - { toolset: gcc-14, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: g++-14-multilib, address-model: 32,64 } - - { toolset: clang++-3.9, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-3.9 } - - { toolset: clang++-4.0, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-4.0 } - - { toolset: clang++-5.0, cxxstd: "11,14,1z", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-5.0 } - - { toolset: clang++-6.0, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-6.0 } - - { toolset: clang++-7, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-7 } - - { toolset: clang++-8, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-8 } - - { toolset: clang++-9, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: clang-9 } - - { toolset: clang++-10, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } - - { toolset: clang++-11, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } - - { toolset: clang++-12, cxxstd: "11,14,17,20", os: ubuntu-20.04 } - - { toolset: clang++-13, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-13 } - - { toolset: clang++-14, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-14 } - - { toolset: clang++-15, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-15 } - - { toolset: clang++-16, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-16 } - - { toolset: clang++-17, cxxstd: "11,14,17,20", os: ubuntu-24.04, install: clang-17 } - - { toolset: clang++-18, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-18 } + - { toolset: clang-3.9, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-3.9 } + - { toolset: clang-4.0, cxxstd: "11,14", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-4.0 } + - { toolset: clang-5.0, cxxstd: "11,14,1z", os: ubuntu-latest, container: 'ubuntu:18.04', install: clang-5.0 } + - { toolset: clang-6.0, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-6.0 } + - { toolset: clang-7, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-7 } + - { toolset: clang-8, cxxstd: "11,14,17", os: ubuntu-20.04, install: clang-8 } + - { toolset: clang-9, cxxstd: "11,14,17,2a", os: ubuntu-20.04, install: clang-9 } + - { toolset: clang-10, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } + - { toolset: clang-11, cxxstd: "11,14,17,2a", os: ubuntu-20.04 } + - { toolset: clang-12, cxxstd: "11,14,17,20", os: ubuntu-20.04 } + - { toolset: clang-13, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-13 } + - { toolset: clang-14, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-14 } + - { toolset: clang-15, cxxstd: "11,14,17,20,2b", os: ubuntu-22.04, install: clang-15 } + - { toolset: clang-16, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-16 } + - { toolset: clang-17, cxxstd: "11,14,17,20", os: ubuntu-24.04, install: clang-17 } + - { toolset: clang-18, cxxstd: "11,14,17,20,2b", os: ubuntu-24.04, install: clang-18 } - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-13 } - { toolset: clang, cxxstd: "11,14,17,20,2b", os: macos-14 } @@ -103,8 +103,7 @@ jobs: run: | cd ../boost-root export ADDRMD=${{matrix.address-model}} - toolset="${{matrix.toolset}}" - ./b2 -j3 libs/$LIBRARY/test toolset="${toolset/clang++/clang}" cxxstd=${{matrix.cxxstd}} ${ADDRMD:+address-model=$ADDRMD} variant=debug,release + ./b2 -j3 libs/$LIBRARY/test toolset=${{matrix.toolset}} cxxstd=${{matrix.cxxstd}} ${ADDRMD:+address-model=$ADDRMD} variant=debug,release windows: strategy: From 424fc1e3d7cd95b777a2b89da9c498339eb2542a Mon Sep 17 00:00:00 2001 From: Alexander Grund Date: Sun, 2 Feb 2025 11:57:31 +0100 Subject: [PATCH 7/7] Bring back user config setting --- .github/workflows/ci.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c163cab..9bc59d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,6 +99,11 @@ jobs: ./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