From 973554d380b3aea10a978fc323b36e57bbc0d8ae Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Wed, 7 May 2025 18:54:51 +0000 Subject: [PATCH 1/7] Try out testing container --- .github/workflows/ci.yml | 70 ++++++---------------------------------- 1 file changed, 10 insertions(+), 60 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7abeb6c4..e462324e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,75 +13,25 @@ jobs: build: name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} + container: + image: ghcr.io/bemanproject/testing-images:test-${{ matrix.config.tag }} strategy: fail-fast: false matrix: config: - - {name: "Ubuntu Clang 21", os: ubuntu-24.04, toolchain: "clang-21", clang_version: 21, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 20", os: ubuntu-24.04, toolchain: "clang-20", clang_version: 20, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 21", tag: "llvm-21", os: ubuntu-24.04, toolchain: "clang-21", clang_version: 21, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 20", tag: "llvm-20", os: ubuntu-24.04, toolchain: "clang-20", clang_version: 20, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. - - {name: "Ubuntu Clang 19", os: ubuntu-24.04, toolchain: "clang-19", clang_version: 19, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} - - {name: "Ubuntu Clang 18", os: ubuntu-24.04, toolchain: "clang-18", clang_version: 18, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 17", os: ubuntu-24.04, toolchain: "clang-17", clang_version: 17, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 14", os: ubuntu-24.04, toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} - - {name: "Ubuntu GCC 13", os: ubuntu-24.04, toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 12", os: ubuntu-24.04, toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 19", tag: "llvm-19", os: ubuntu-24.04, toolchain: "clang-19", clang_version: 19, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} + - {name: "Ubuntu Clang 18", tag: "llvm-18", os: ubuntu-24.04, toolchain: "clang-18", clang_version: 18, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 17", tag: "llvm-17", os: ubuntu-24.04, toolchain: "clang-17", clang_version: 17, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 14", tag: "gnu-14", os: ubuntu-24.04, toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} + - {name: "Ubuntu GCC 13", tag: "gnu-13", os: ubuntu-24.04, toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 12", tag: "gnu-12", os: ubuntu-24.04, toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} steps: - uses: actions/checkout@v3 with: submodules: 'true' - - uses: seanmiddleditch/gha-setup-ninja@master - - name: Activate verbose shell - run: set -x - - name: Install LLVM+Clang - if: startsWith(matrix.config.name, 'Ubuntu Clang') - run: | - set -x - cat /etc/lsb-release - # Remove existing Clang installations. - sudo apt-get remove \ - clang-${{matrix.config.installed_clang_version}} \ - clang++-${{matrix.config.installed_clang_version}} \ - clangd-${{matrix.config.installed_clang_version}} \ - clang-tidy-${{matrix.config.installed_clang_version}} \ - clang-format-${{matrix.config.installed_clang_version}} \ - clang-tools-${{matrix.config.installed_clang_version}} \ - llvm-${{matrix.config.installed_clang_version}}-dev \ - lld-${{matrix.config.installed_clang_version}} \ - lldb-${{matrix.config.installed_clang_version}} \ - llvm-${{matrix.config.installed_clang_version}}-tools \ - libc++-${{matrix.config.installed_clang_version}}-dev \ - libc++abi-${{matrix.config.installed_clang_version}}-dev \ - libclang-common-${{matrix.config.installed_clang_version}}-dev \ - libclang-${{matrix.config.installed_clang_version}}-dev \ - libclang-cpp${{matrix.config.installed_clang_version}}-dev \ - libomp-${{matrix.config.installed_clang_version}}-dev \ - libunwind-${{matrix.config.installed_clang_version}}-dev \ - libc++-dev libc++1 libc++abi-dev libc++abi1 - # Install LLVM+Clang. - CLANG_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh ${CLANG_VERSION} all - # Link Clang libraries (if not done by llvm.sh - some links are already set). - sudo ln -fs /usr/lib/llvm-${CLANG_VERSION}/lib/lib* /usr/lib/x86_64-linux-gnu/ || true - # If Clang 17, install a newer version of libc++ and libc++abi. - [[ ${CLANG_VERSION} = 17 ]] && sudo apt-get install libc++-dev libc++1 libc++abi-dev libc++abi1 - find /usr/lib/x86_64-linux-gnu/ -name libc++.so* || true - clang++-${CLANG_VERSION} --version - - name: Install GCC - if: startsWith(matrix.config.name, 'Ubuntu GCC') - run: | - set -x - # Remove existing GCC installations. - sudo apt-get remove gcc-13 g++-13 gcc-14 g++-14 gcc g++ - sudo apt update - # Install GCC. - GCC_VERSION=$(echo ${{matrix.config.toolchain}} | cut -d '-' -f2) - echo "GCC_VERSION=$GCC_VERSION" - sudo apt-get install g++-${GCC_VERSION} gcc-${GCC_VERSION} - find /usr/lib/x86_64-linux-gnu/ -name libstdc++.so* - g++-${GCC_VERSION} --version - name: Install Gcovr if: matrix.config.coverage run: | From a1f940edac98f876c6d9d7ccea17b0156942c524 Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Wed, 7 May 2025 18:55:57 +0000 Subject: [PATCH 2/7] Fix repo --- .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 e462324e..6ded9e97 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: name: ${{ matrix.config.name }} runs-on: ${{ matrix.config.os }} container: - image: ghcr.io/bemanproject/testing-images:test-${{ matrix.config.tag }} + image: ghcr.io/bemanproject/infra:test-${{ matrix.config.tag }} strategy: fail-fast: false matrix: From 52d44cb571c6172b373e22f0ea25214fffb15215 Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Wed, 7 May 2025 18:59:24 +0000 Subject: [PATCH 3/7] confirm apt-get install --- .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 6ded9e97..b0a9ae5b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -36,7 +36,7 @@ jobs: if: matrix.config.coverage run: | set -x - sudo apt-get install gcovr + sudo apt-get install -y gcovr - name: CMake Configure run: | set -x From b32ce1b918f7ef3b53a5e9fca9d72f69cb58d9ae Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Thu, 8 May 2025 17:27:33 -0400 Subject: [PATCH 4/7] Cleanup Matrix --- .github/workflows/ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b0a9ae5b..1ff65f53 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,22 +12,22 @@ on: jobs: build: name: ${{ matrix.config.name }} - runs-on: ${{ matrix.config.os }} + runs-on: ubuntu-24.04 container: image: ghcr.io/bemanproject/infra:test-${{ matrix.config.tag }} strategy: fail-fast: false matrix: config: - - {name: "Ubuntu Clang 21", tag: "llvm-21", os: ubuntu-24.04, toolchain: "clang-21", clang_version: 21, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 20", tag: "llvm-20", os: ubuntu-24.04, toolchain: "clang-20", clang_version: 20, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 21", tag: "llvm-21", toolchain: "clang-21", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 20", tag: "llvm-20", toolchain: "clang-20", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. - - {name: "Ubuntu Clang 19", tag: "llvm-19", os: ubuntu-24.04, toolchain: "clang-19", clang_version: 19, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} - - {name: "Ubuntu Clang 18", tag: "llvm-18", os: ubuntu-24.04, toolchain: "clang-18", clang_version: 18, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 17", tag: "llvm-17", os: ubuntu-24.04, toolchain: "clang-17", clang_version: 17, installed_clang_version: 17, cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 14", tag: "gnu-14", os: ubuntu-24.04, toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} - - {name: "Ubuntu GCC 13", tag: "gnu-13", os: ubuntu-24.04, toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 12", tag: "gnu-12", os: ubuntu-24.04, toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 19", tag: "llvm-19", toolchain: "clang-19", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} + - {name: "Ubuntu Clang 18", tag: "llvm-18", toolchain: "clang-18", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 17", tag: "llvm-17", toolchain: "clang-17", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 14", tag: "gnu-14", toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} + - {name: "Ubuntu GCC 13", tag: "gnu-13", toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 12", tag: "gnu-12", toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} steps: - uses: actions/checkout@v3 with: From 613817c34d9fe27fcdb55095d720bcca3f302ba8 Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Thu, 8 May 2025 17:35:40 -0400 Subject: [PATCH 5/7] Apply special treatment for clang 17 --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1ff65f53..747ad33f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,6 +32,13 @@ jobs: - uses: actions/checkout@v3 with: submodules: 'true' + # If Clang 17, install a newer version of libc++ and libc++abi. + - name: Install libc++ + if: matrix.config.tag == 'llvm-17' + run: | + set -x + sudo apt-get install -y libc++-dev libc++1 libc++abi-dev libc++abi1 + find /usr/lib/x86_64-linux-gnu/ -name libc++.so* || true - name: Install Gcovr if: matrix.config.coverage run: | From 5d72d3a70eaeb7962a3180e8bc3d1524d4a376e1 Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Sat, 10 May 2025 21:29:58 +0000 Subject: [PATCH 6/7] use relative path --- .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 747ad33f..82833d59 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -99,7 +99,7 @@ jobs: if: matrix.config.coverage uses: coverallsapp/github-action@main with: - file: ${{runner.workspace}}/optional/.build/coverage.json + file: .build/coverage.json github-token: ${{ secrets.GITHUB_TOKEN }} create-issue-when-fault: From d8b13f9344ae3a8444f8f333d2a871bb54e889ec Mon Sep 17 00:00:00 2001 From: River <26424577+wusatosi@users.noreply.github.com> Date: Sat, 17 May 2025 12:20:52 -0400 Subject: [PATCH 7/7] Update ci.yml --- .github/workflows/ci.yml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 82833d59..604d6254 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,27 +14,27 @@ jobs: name: ${{ matrix.config.name }} runs-on: ubuntu-24.04 container: - image: ghcr.io/bemanproject/infra:test-${{ matrix.config.tag }} + image: ghcr.io/bemanproject/testingcontainers-${{ matrix.config.tag }} strategy: fail-fast: false matrix: config: - - {name: "Ubuntu Clang 21", tag: "llvm-21", toolchain: "clang-21", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 20", tag: "llvm-20", toolchain: "clang-20", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 21", tag: "clang:21", toolchain: "clang-21", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 20", tag: "clang:20", toolchain: "clang-20", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} # Note: clang-19 + Asan setup causes errors on some platforms. Temporary skip some checks via .asan_options. - - {name: "Ubuntu Clang 19", tag: "llvm-19", toolchain: "clang-19", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} - - {name: "Ubuntu Clang 18", tag: "llvm-18", toolchain: "clang-18", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu Clang 17", tag: "llvm-17", toolchain: "clang-17", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 14", tag: "gnu-14", toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} - - {name: "Ubuntu GCC 13", tag: "gnu-13", toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} - - {name: "Ubuntu GCC 12", tag: "gnu-12", toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 19", tag: "clang:19", toolchain: "clang-19", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" ", asan_options: "new_delete_type_mismatch=0"} + - {name: "Ubuntu Clang 18", tag: "clang:18", toolchain: "clang-18", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu Clang 17", tag: "clang:17", toolchain: "clang-17", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 14", tag: "gcc:14", toolchain: "gcc-14", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan;Gcov\" ", coverage: true} + - {name: "Ubuntu GCC 13", tag: "gcc:13", toolchain: "gcc-13", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} + - {name: "Ubuntu GCC 12", tag: "gcc:12", toolchain: "gcc-12", cmake_args: "-G \"Ninja Multi-Config\" -DCMAKE_CONFIGURATION_TYPES=\"RelWithDebInfo;Asan\" "} steps: - uses: actions/checkout@v3 with: submodules: 'true' # If Clang 17, install a newer version of libc++ and libc++abi. - name: Install libc++ - if: matrix.config.tag == 'llvm-17' + if: matrix.config.tag == 'clang:17' run: | set -x sudo apt-get install -y libc++-dev libc++1 libc++abi-dev libc++abi1