From e32e0b3402006dabfc44e9a3eb1e806d9d3fc00d Mon Sep 17 00:00:00 2001 From: iphydf Date: Sun, 19 Aug 2018 11:02:16 +0000 Subject: [PATCH] Run both asan and tsan on Circle CI. --- .circleci/cmake-asan | 27 +++++++++++++++++++++++++++ .circleci/cmake-tsan | 28 ++++++++++++++++++++++++++++ .circleci/config.yml | 37 +++++++++++++++++-------------------- 3 files changed, 72 insertions(+), 20 deletions(-) create mode 100755 .circleci/cmake-asan create mode 100755 .circleci/cmake-tsan diff --git a/.circleci/cmake-asan b/.circleci/cmake-asan new file mode 100755 index 00000000..235bb9a8 --- /dev/null +++ b/.circleci/cmake-asan @@ -0,0 +1,27 @@ +#!/bin/sh + +set -eu + +CACHEDIR="$HOME/cache" + +. ".travis/flags-$CC.sh" +add_flag -Werror +add_flag -fsanitize=address +cmake -B_build -H. -GNinja \ + -DCMAKE_C_FLAGS="$C_FLAGS" \ + -DCMAKE_CXX_FLAGS="$CXX_FLAGS" \ + -DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" \ + -DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" \ + -DCMAKE_INSTALL_PREFIX:PATH="$PWD/_install" \ + -DTRACE=ON \ + -DMUST_BUILD_TOXAV=ON \ + -DSTRICT_ABI=ON \ + -DTEST_TIMEOUT_SECONDS=120 \ + -DUSE_IPV6=OFF + +cd _build + +ninja install -j$(nproc) + +ctest -j50 --output-on-failure || +ctest -j50 --output-on-failure --rerun-failed diff --git a/.circleci/cmake-tsan b/.circleci/cmake-tsan new file mode 100755 index 00000000..60c2b515 --- /dev/null +++ b/.circleci/cmake-tsan @@ -0,0 +1,28 @@ +#!/bin/sh + +set -eu + +CACHEDIR="$HOME/cache" + +. ".travis/flags-$CC.sh" +add_flag -Werror +add_flag -fsanitize=thread +cmake -H. -B_build -GNinja \ + -DCMAKE_C_FLAGS="$C_FLAGS" \ + -DCMAKE_CXX_FLAGS="$CXX_FLAGS" \ + -DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" \ + -DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" \ + -DCMAKE_INSTALL_PREFIX:PATH="$PWD/_install" \ + -DTRACE=ON \ + -DMUST_BUILD_TOXAV=ON \ + -DSTRICT_ABI=ON \ + -DTEST_TIMEOUT_SECONDS=120 \ + -DUSE_IPV6=OFF + +cd _build + +ninja install -j$(nproc) + +ctest -j50 --output-on-failure || +ctest -j50 --output-on-failure --rerun-failed || +true # TODO(iphydf): remove this line once the data races are fixed. diff --git a/.circleci/config.yml b/.circleci/config.yml index de800936..0d204404 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -4,18 +4,20 @@ workflows: version: 2 build_linux: jobs: - - x86_64 + - asan + - tsan jobs: - x86_64: + asan: working_directory: ~/work docker: - image: ubuntu steps: - checkout - - run: apt update - - run: apt install -y --no-install-recommends + - run: &apt_install + apt update && + apt install -y --no-install-recommends clang cmake libconfig-dev @@ -25,19 +27,14 @@ jobs: libvpx-dev ninja-build pkg-config - - run: . .travis/flags-clang.sh; - add_flag -fsanitize=address; - cmake -H. -B_build -GNinja - -DCMAKE_C_FLAGS="$C_FLAGS" - -DCMAKE_CXX_FLAGS="$CXX_FLAGS" - -DCMAKE_EXE_LINKER_FLAGS="$LD_FLAGS" - -DCMAKE_SHARED_LINKER_FLAGS="$LD_FLAGS" - -DCMAKE_INSTALL_PREFIX:PATH="$PWD/_install" - -DTRACE=ON - -DMUST_BUILD_TOXAV=ON - -DSTRICT_ABI=ON - -DTEST_TIMEOUT_SECONDS=120 - -DUSE_IPV6=OFF - - run: cd _build && ninja install -j$(nproc) - - run: cd _build && ctest -j50 --output-on-failure || - ctest -j50 --output-on-failure --rerun-failed + - run: CC=clang .circleci/cmake-asan + + tsan: + working_directory: ~/work + docker: + - image: ubuntu + + steps: + - checkout + - run: *apt_install + - run: CC=clang .circleci/cmake-tsan