diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e436f52..9bc59d7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,181 +17,59 @@ 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", 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: ${{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 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 + fi + + - uses: actions/checkout@v4 - name: Install packages if: matrix.install