diff --git a/.cirrus.yml b/.cirrus.yml new file mode 100644 index 00000000..ec6d73f9 --- /dev/null +++ b/.cirrus.yml @@ -0,0 +1,113 @@ +env: + CIRRUS_CLONE_DEPTH: 1 + +task: + matrix: + - name: "Debian amd64" + env: + DIST: "DEBIAN" + LC_ALL: "C" + SCAN_BUILD: "scan-build" + MAKE: "make" + container: + image: debian:latest + - name: "Debian arm64" + env: + DIST: "DEBIAN" + LC_ALL: "C" + SCAN_BUILD: "scan-build" + MAKE: "make" + arm_container: + image: debian:latest + - name: "FreeBSD amd64" + env: + DIST: "FREEBSD" + SCAN_BUILD: "scan-build" + MAKE: "gmake" + freebsd_instance: + image_family: freebsd-13-0 + - name: "MacOS" + env: + DIST: "MACOS" + SCAN_BUILD: "/usr/local/opt/llvm/bin/scan-build" + MAKE: "make" + macos_instance: + image: big-sur-xcode + matrix: + - name: "CMAKE" + env: + BUILD_TYPE: "cmake" + - name: "AUTOTOOLS" + env: + BUILD_TYPE: "autotools" + - name: "ASAN" + # FreeBSD just hangs trying to run tests, think it may be trying to run leak sanitizer + only_if: $DIST != 'FREEBSD' + env: + BUILD_TYPE: "asan" + CONFIG_OPTS: "--enable-debug" + CFLAGS: "-fsanitize=address" + CXXFLAGS: "-fsanitize=address" + LDFLAGS: "-fsanitize=address" + - name: "ANALYZE" + env: + BUILD_TYPE: "analyze" + SCAN_WRAP: "${SCAN_BUILD} -v --status-bugs" + CONFIG_OPTS: "--enable-debug --disable-tests" + - name: "VALGRIND" + # FreeBSD just hangs trying to run tests, think it may be trying to run leak sanitizer + only_if: $DIST == 'DEBIAN' + env: + BUILD_TYPE: "valgrind" + TEST_WRAP: "valgrind --leak-check=full" + TEST_FILTER: "--gtest_filter=-*Container*:-*LiveSearchANY*" + + install_script: + - | + case "${DIST}" in + DEBIAN) + apt-get update && \ + apt-get install -y cmake ninja-build + case "${BUILD_TYPE}" in + asan) + apt-get install -y clang + ;; + analyze) + apt-get install -y clang clang-tools + ;; + valgrind) + apt-get install -y valgrind + ;; + esac + ;; + FREEBSD) + # pkg upgrade -y && \ + pkg install -y cmake ninja + case "${BUILD_TYPE}" in + asan|analyze) + pkg install -y llvm + ;; + autotools) + pkg install -y autoconf automake libtool gmake + ;; + esac + ;; + MACOS) + brew update && \ + brew install ninja cmake + case "${BUILD_TYPE}" in + asan|analyze) + brew install llvm + ;; + autotools) + brew install autoconf automake libtool make + ;; + esac + ;; + esac + + script: + - ./ci/build.sh && ./ci/test.sh + - if [ "$BUILD_TYPE" = "normal" ]; then ./ci/distcheck.sh ; fi + - if [ "$BUILD_TYPE" = "coverage" ]; then ./ci/covupload.sh ; fi + diff --git a/ci/build.sh b/ci/build.sh index 6dfe5473..931869cd 100755 --- a/ci/build.sh +++ b/ci/build.sh @@ -1,30 +1,40 @@ #!/bin/sh set -e +OS="" +if [ "$TRAVIS_OS_NAME" != "" ]; then + OS="$TRAVIS_OS_NAME" +elif [ "$CIRRUS_OS" != "" ]; then + OS="$CIRRUS_OS" +fi + + if [ "$BUILD_TYPE" != "cmake" -a "$BUILD_TYPE" != "valgrind" -a "$BUILD_TYPE" != "ios-cmake" ]; then ./buildconf mkdir atoolsbld cd atoolsbld $SCAN_WRAP ../configure --disable-symbol-hiding --enable-expose-statics --enable-maintainer-mode --enable-debug $CONFIG_OPTS $SCAN_WRAP make -elif [ "$BUILD_TYPE" = "ios-cmake" ] ; then - mkdir cmakebld - cd cmakebld - cmake \ - -DCMAKE_BUILD_TYPE=DEBUG \ - -DCARES_STATIC=ON \ - -DCARES_STATIC_PIC=ON \ - -DCARES_BUILD_TESTS=OFF \ - -DCMAKE_C_FLAGS=$CFLAGS \ - -DCMAKE_CXX_FLAGS=$CXXFLAGS \ - -DCMAKE_OSX_SYSROOT=$SYSROOT \ - -DCMAKE_OSX_ARCHITECTURES=$ARCHITECTURES \ - .. - make else - # Use cmake for valgrind to prevent libtool script wrapping of tests that interfere with valgrind - mkdir cmakebld - cd cmakebld - cmake -DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCARES_BUILD_TESTS=ON .. - make + if [ "$BUILD_TYPE" = "ios-cmake" ]; then + mkdir cmakebld + cd cmakebld + cmake \ + -DCMAKE_BUILD_TYPE=DEBUG \ + -DCARES_STATIC=ON \ + -DCARES_STATIC_PIC=ON \ + -DCARES_BUILD_TESTS=OFF \ + -DCMAKE_C_FLAGS=$CFLAGS \ + -DCMAKE_CXX_FLAGS=$CXXFLAGS \ + -DCMAKE_OSX_SYSROOT=$SYSROOT \ + -DCMAKE_OSX_ARCHITECTURES=$ARCHITECTURES \ + .. + make + else + # Use cmake for valgrind to prevent libtool script wrapping of tests that interfere with valgrind + mkdir cmakebld + cd cmakebld + cmake -DCMAKE_BUILD_TYPE=DEBUG -DCARES_STATIC=ON -DCARES_STATIC_PIC=ON -DCARES_BUILD_TESTS=ON .. + make + fi fi diff --git a/ci/distcheck.sh b/ci/distcheck.sh index ca6f98fc..40f43429 100755 --- a/ci/distcheck.sh +++ b/ci/distcheck.sh @@ -1,7 +1,14 @@ #!/bin/sh set -e -if [ "$BUILD_TYPE" = "normal" -a "$TRAVIS_OS_NAME" = "linux" ]; then +OS="" +if [ "$TRAVIS_OS_NAME" != "" ]; then + OS="$TRAVIS_OS_NAME" +elif [ "$CIRRUS_OS" != "" ]; then + OS="$CIRRUS_OS" +fi + +if [ "$BUILD_TYPE" = "normal" -a "$OS" = "linux" ]; then # Make distribution tarball ./maketgz 99.98.97 # Extract distribution tarball for building