# Copyright (C) The c-ares project and its contributors # SPDX-License-Identifier: MIT env: CIRRUS_CLONE_DEPTH: 1 CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -G Ninja" CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=ON" task: matrix: - name: "Debian amd64" env: DIST: "DEBIAN" LC_ALL: "C" SCAN_BUILD: "scan-build" MAKE: "make" BUILD_ASAN: "yes" BUILD_UBSAN: "yes" BUILD_VALGRIND: "yes" BUILD_COVERAGE: "yes" BUILD_ANALYZE: "yes" TEST_DEBUGGER: "gdb" TEST_SYMBOL_VISIBILITY: "yes" container: image: debian:latest - name: "Alpine amd64" env: DIST: "ALPINE" LC_ALL: "C" SCAN_BUILD: "scan-build" MAKE: "make" BUILD_ASAN: "yes" BUILD_UBSAN: "yes" BUILD_VALGRIND: "yes" BUILD_ANALYZE: "yes" TEST_DEBUGGER: "gdb" TEST_SYMBOL_VISIBILITY: "yes" container: image: alpine:latest - name: "Ubuntu OLD amd64" env: DIST: "UBUNTU" LC_ALL: "C" MAKE: "make" TEST_DEBUGGER: "gdb" container: image: ubuntu:20.04 - name: "Debian arm64" env: DIST: "DEBIAN-ARM" LC_ALL: "C" SCAN_BUILD: "scan-build" MAKE: "make" # For whatever reason, ASAN and UBSAN are likely to result in compiler # termination on debian arm64. I can't tell if this is really a crash # or something like the OOM killer: # /usr/bin/c++ -DHAVE_CONFIG_H=1 -D_GNU_SOURCE -D_POSIX_C_SOURCE=200809L -D_XOPEN_SOURCE=700 -I/tmp/cirrus-ci-build/cmakebld/test -I/tmp/cirrus-ci-build/cmakebld -I/tmp/cirrus-ci-build/cmakebld/src/lib -I/tmp/cirrus-ci-build -I/tmp/cirrus-ci-build/src/lib -I/tmp/cirrus-ci-build/include -fsanitize=address -Wall -Wextra -Wcast-align -Wformat-security -Wmissing-declarations -Wmissing-format-attribute -Wpacked-bitfield-compat -Wredundant-decls -Wvla -Wno-unused-parameter -Wconversion -Wfloat-equal -Wsign-conversion -fdiagnostics-color=always -g -fno-omit-frame-pointer -O0 -DGTEST_HAS_PTHREAD=1 -std=c++14 -MD -MT test/CMakeFiles/arestest.dir/ares-test-parse-a.cc.o -MF test/CMakeFiles/arestest.dir/ares-test-parse-a.cc.o.d -o test/CMakeFiles/arestest.dir/ares-test-parse-a.cc.o -c /tmp/cirrus-ci-build/test/ares-test-parse-a.cc # c++: fatal error: Killed signal terminated program cc1plus # Skip for now on arm. BUILD_ASAN: "no" BUILD_UBSAN: "no" BUILD_ANALYZE: "yes" TEST_DEBUGGER: "gdb" arm_container: image: debian:latest - name: "FreeBSD amd64" env: DIST: "FREEBSD" SCAN_BUILD: "scan-build" TEST_DEBUGGER: "lldb" MAKE: "gmake" BUILD_ANALYZE: "yes" TEST_SYMBOL_VISIBILITY: "yes" freebsd_instance: image_family: freebsd-13-3 - name: "MacOS" env: DIST: "MACOS" SCAN_BUILD: "/opt/homebrew/opt/llvm/bin/scan-build-py" MAKE: "make" TEST_DEBUGGER: "lldb" BUILD_ASAN: "yes" BUILD_UBSAN: "yes" BUILD_ANALYZE: "yes" TEST_SYMBOL_VISIBILITY: "yes" macos_instance: image: ghcr.io/cirruslabs/macos-sonoma-xcode:latest - name: "iOS" env: DIST: "iOS" MAKE: "make" CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.0 -DCMAKE_OSX_ARCHITECTURES=armv7;armv7s;arm64 -G Ninja" CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=OFF" CFLAGS: "-arch armv7 -arch armv7s -arch arm64 -miphoneos-version-min=10.0" CONFIG_OPTS: "--host=arm-apple-darwin10 --disable-tests" macos_instance: image: ghcr.io/cirruslabs/macos-sonoma-xcode:latest matrix: - name: "CMAKE" env: BUILD_TYPE: "cmake" - name: "CMAKE no threads" only_if: $DIST == 'DEBIAN' env: BUILD_TYPE: "cmake" CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCARES_THREADS=OFF -G Ninja" - name: "CMAKE HIDE SYMBOLS" only_if: $TEST_SYMBOL_VISIBILITY == 'yes' env: BUILD_TYPE: "cmake" CMAKE_FLAGS: "-DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=OFF -DCARES_SYMBOL_HIDING=ON -G Ninja" - name: "AUTOTOOLS" env: BUILD_TYPE: "autotools" - name: "ASAN" # ASAN on Linux automatically includes Leak Sanitizer # FreeBSD just hangs trying to run tests, think it may be trying to run leak sanitizer only_if: $BUILD_ASAN == 'yes' env: BUILD_TYPE: "asan" CC: "clang" TEST_DEBUGGER: "none" CONFIG_OPTS: "--enable-debug" CFLAGS: "-fsanitize=address" CXXFLAGS: "-fsanitize=address" LDFLAGS: "-fsanitize=address" - name: "UBSAN" # FreeBSD just hangs trying to run tests, think it may be trying to run leak sanitizer only_if: $BUILD_UBSAN == 'yes' env: BUILD_TYPE: "ubsan" CC: "clang" TEST_DEBUGGER: "none" CONFIG_OPTS: "--enable-debug" CFLAGS: "-fsanitize=undefined -fno-sanitize-recover" CXXFLAGS: "-fsanitize=undefined -fno-sanitize-recover" LDFLAGS: "-fsanitize=undefined" - name: "ANALYZE" only_if: $BUILD_ANALYZE == 'yes' env: BUILD_TYPE: "analyze" CC: "clang" TEST_DEBUGGER: "lldb" SCAN_WRAP: "${SCAN_BUILD} -v --status-bugs" CONFIG_OPTS: "--enable-debug --disable-tests" CMAKE_TEST_FLAGS: "-DCARES_BUILD_TESTS=OFF" - name: "VALGRIND" # FreeBSD just hangs trying to run tests, think it may be trying to run leak sanitizer only_if: $BUILD_VALGRIND == 'yes' env: BUILD_TYPE: "valgrind" TEST_WRAP: "valgrind --leak-check=full" TEST_FILTER: "--gtest_filter=-*Container*:-*LiveSearchANY*" install_script: - | case "${DIST}" in ALPINE) apk add cmake samurai gtest-dev autoconf autoconf-archive automake libtool pkgconf make case "${BUILD_TYPE}" in asan|lsan|ubsan) apk add clang17 compiler-rt lldb ;; analyze) apk add clang17 clang17-analyzer compiler-rt lldb ;; valgrind) apk add gcc g++ valgrind ;; *) apk add gcc g++ gdb ;; esac ;; UBUNTU|DEBIAN*) export DEBIAN_FRONTEND=noninteractive && \ apt-get update && \ apt-get install -y cmake ninja-build autoconf automake libtool g++ libgmock-dev pkg-config case "${BUILD_TYPE}" in asan|lsan|ubsan) apt-get install -yq clang lldb ;; analyze) apt-get install -yq clang clang-tools lldb ;; valgrind) apt-get install -yq valgrind ;; *) apt-get install -yq gdb ;; esac ;; FREEBSD) # pkg upgrade -y && \ pkg install -y cmake ninja googletest pkgconf llvm gmake case "${BUILD_TYPE}" in autotools) pkg install -y autoconf automake libtool ;; esac ;; MACOS|iOS) brew update brew install ninja cmake googletest case "${BUILD_TYPE}" in asan|ubsan|lsan|analyze) brew install llvm autoconf automake libtool make ninja ;; autotools) brew install autoconf automake libtool make ;; esac ;; esac script: - ./ci/build.sh - ./ci/test.sh - if [ "$BUILD_TYPE" = "autotools" -a "$DIST" = "DEBIAN" ]; then ./ci/distcheck.sh ; fi