toxcore/.circleci/config.yml
iphydf de4af4c270
feat: Add async event handling (callbacks) code.
Instead of synchronously handling events as they happen in
`tox_iterate`, this first collects all events in a structure and then
lets the client process them. This allows clients to process events in
parallel, since the data structure returned is mostly immutable.

This also makes toxcore compatible with languages that don't (easily)
support callbacks from C into the non-C language.

If we remove the callbacks, this allows us to add fields to the events
without breaking the API.
2022-02-06 17:28:28 +00:00

136 lines
3.1 KiB
YAML

---
version: 2
workflows:
version: 2
program-analysis:
jobs:
# Dynamic analysis
- asan
- tsan
- msan
# Static analysis
- clang-analyze
- clang-tidy
- cpplint
- infer
- static-analysis
jobs:
asan:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: &apt_install
apt-get update &&
DEBIAN_FRONTEND=noninteractive
apt-get install -y --no-install-recommends
clang
cmake
git
libconfig-dev
libgtest-dev
libopus-dev
libsodium-dev
libvpx-dev
llvm-dev
ninja-build
pkg-config
- checkout
- run: CC=clang .circleci/cmake-asan
tsan:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: *apt_install
- checkout
- run: CC=clang .circleci/cmake-tsan
msan:
working_directory: ~/work
docker:
- image: toxchat/toktok-stack:latest-msan
steps:
- checkout
- run: rm -rf /src/workspace/c-toxcore/* && mv * /src/workspace/c-toxcore/
# TODO(iphydf): Remove "|| true" once this works.
- run: cd /src/workspace && bazel test //c-toxcore/auto_tests:lossless_packet_test || true
infer:
working_directory: ~/work
docker:
- image: toxchat/infer
steps:
- run: *apt_install
- checkout
- run: infer --no-progress-bar -- cc
auto_tests/auto_test_support.c
auto_tests/lossless_packet_test.c
testing/misc_tools.c
toxav/*.c
toxcore/*.c
toxcore/*/*.c
toxencryptsave/*.c
-lpthread
$(pkg-config --cflags --libs libsodium opus vpx)
static-analysis:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: *apt_install
- run: apt-get install -y --no-install-recommends cppcheck g++ llvm-dev
- checkout
- run: other/analysis/check_includes
- run: other/analysis/check_logger_levels
- run: other/analysis/run-check-recursion
- run: other/analysis/run-clang
- run: other/analysis/run-cppcheck
- run: other/analysis/run-gcc
clang-analyze:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: *apt_install
- checkout
- run: other/analysis/run-clang-analyze
clang-tidy:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: *apt_install
- run: apt-get install -y --no-install-recommends clang-tidy-12
- checkout
- run: cmake . -B_build -GNinja -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
- run:
other/analysis/run-clang-tidy ||
other/analysis/run-clang-tidy ||
other/analysis/run-clang-tidy
cpplint:
working_directory: ~/work
docker:
- image: ubuntu
steps:
- run: *apt_install
- run: apt-get install -y --no-install-recommends python3-pip
- checkout
- run: pip install cpplint
- run: other/analysis/run-cpplint