From 4af29cb2a84ec2f399028ae43c05d86437ddcb4b Mon Sep 17 00:00:00 2001 From: iphydf Date: Wed, 11 Dec 2024 11:12:21 +0000 Subject: [PATCH] chore: Fix tsan build on circleci. --- .circleci/config.yml | 59 ++++++++++++----------------- other/docker/circleci/Dockerfile | 8 ++-- other/docker/circleci/entrypoint.sh | 4 +- other/docker/circleci/run | 4 +- 4 files changed, 34 insertions(+), 41 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 8692cd0a1b..7541738fa4 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,7 +12,7 @@ workflows: # - bazel-tsan # Dynamic analysis with CMake - asan - # - tsan + - tsan - ubsan # Static analysis - clang-analyze @@ -55,54 +55,28 @@ jobs: //c-toxcore/auto_tests:lossless_packet_test asan: - working_directory: ~/work - docker: - - image: ubuntu + machine: { image: ubuntu-2204:current } steps: - - run: &apt_install - apt-get update && - DEBIAN_FRONTEND=noninteractive - apt-get install -y - ca-certificates - clang - cmake - git - libbenchmark-dev - libconfig-dev - libgmock-dev - libgtest-dev - libopus-dev - libsodium-dev - libvpx-dev - llvm-dev - ninja-build - pkg-config - checkout - run: git submodule update --init --recursive - - run: CC=clang .circleci/cmake-asan + - run: other/docker/circleci/run asan tsan: - working_directory: ~/work - docker: - - image: ubuntu + machine: { image: ubuntu-2204:current } steps: - - run: *apt_install - checkout - run: git submodule update --init --recursive - - run: CC=clang .circleci/cmake-tsan + - run: other/docker/circleci/run tsan ubsan: - working_directory: ~/work - docker: - - image: ubuntu + machine: { image: ubuntu-2204:current } steps: - - run: *apt_install - checkout - run: git submodule update --init --recursive - - run: CC=clang .circleci/cmake-ubsan + - run: other/docker/circleci/run ubsan static-analysis: working_directory: ~/work @@ -110,7 +84,24 @@ jobs: - image: ubuntu steps: - - run: *apt_install + - run: &apt_install + apt-get update && + DEBIAN_FRONTEND=noninteractive + apt-get install -y + ca-certificates + clang + cmake + git + libbenchmark-dev + libconfig-dev + libgmock-dev + libgtest-dev + libopus-dev + libsodium-dev + libvpx-dev + llvm-dev + ninja-build + pkg-config - run: apt-get install -y --no-install-recommends ca-certificates diff --git a/other/docker/circleci/Dockerfile b/other/docker/circleci/Dockerfile index 3b23eed793..cb431c3d9f 100644 --- a/other/docker/circleci/Dockerfile +++ b/other/docker/circleci/Dockerfile @@ -1,18 +1,18 @@ ################################################ # cmake-asan -FROM ubuntu:20.04 +FROM ubuntu:24.04 RUN apt-get update && \ DEBIAN_FRONTEND="noninteractive" apt-get install -y --no-install-recommends \ clang \ cmake \ + libclang-rt-dev \ libconfig-dev \ libgmock-dev \ libgtest-dev \ libopus-dev \ libsodium-dev \ libvpx-dev \ - llvm-dev \ ninja-build \ pkg-config \ && apt-get clean \ @@ -22,8 +22,8 @@ COPY entrypoint.sh / RUN ["chmod", "755", "/entrypoint.sh"] WORKDIR /home/builder -RUN groupadd -r -g 1000 builder \ - && useradd --no-log-init -r -g builder -u 1000 builder \ +RUN groupadd -r -g 987 builder \ + && useradd --no-log-init -r -g builder -u 987 builder \ && chown builder:builder /home/builder USER builder diff --git a/other/docker/circleci/entrypoint.sh b/other/docker/circleci/entrypoint.sh index 971759235f..59775a0341 100755 --- a/other/docker/circleci/entrypoint.sh +++ b/other/docker/circleci/entrypoint.sh @@ -1,9 +1,9 @@ #!/bin/sh -set -eu +set -eux SANITIZER="${1:-asan}" cp -a /c-toxcore . cd c-toxcore -.circleci/cmake-"$SANITIZER" +.circleci/cmake-"$SANITIZER" || cat /home/builder/c-toxcore/_build/CMakeFiles/CMakeError.log diff --git a/other/docker/circleci/run b/other/docker/circleci/run index 668e0fc865..2a54e07213 100755 --- a/other/docker/circleci/run +++ b/other/docker/circleci/run @@ -1,6 +1,8 @@ #!/bin/sh +set -eux + SANITIZER="${1:-asan}" docker build -t toxchat/c-toxcore:circleci other/docker/circleci -docker run --name toxcore-circleci --rm -it -v "$PWD:/c-toxcore" toxchat/c-toxcore:circleci "$SANITIZER" +docker run --name toxcore-circleci --rm --interactive --tty --volume "$PWD:/c-toxcore" toxchat/c-toxcore:circleci "$SANITIZER"