summaryrefslogtreecommitdiff
path: root/usr.sbin/nsd/.cirrus.yml
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/nsd/.cirrus.yml')
-rw-r--r--usr.sbin/nsd/.cirrus.yml139
1 files changed, 139 insertions, 0 deletions
diff --git a/usr.sbin/nsd/.cirrus.yml b/usr.sbin/nsd/.cirrus.yml
new file mode 100644
index 00000000000..026e2b4b170
--- /dev/null
+++ b/usr.sbin/nsd/.cirrus.yml
@@ -0,0 +1,139 @@
+# Cirrus CI instructions for building NSD
+#
+# These build instructions are based on the existing instructions and
+# suggestions made by Jeffrey Walton (noloader) about using the Undefined
+# Behavior sanitizer (UBSan) and the Address sanitizer (ASan).
+#
+# For now builds are limited to Linux, FreeBSD and macOS builds on AMD64, more
+# may be added in the future.
+
+ubuntu_1804: &ubuntu_1804
+ container:
+ image: ubuntu:bionic
+ env:
+ UBUNTU_CODENAME: bionic
+ COV_COMPTYPE: gcc
+ COV_PLATFORM: linux64
+
+ubuntu_1804_gcc9: &ubuntu_1804_gcc9
+ <<: *ubuntu_1804
+ env:
+ CC: gcc-9
+ bootstrap_script:
+ - apt-get update
+ - apt-get install -y gnupg2 ca-certificates wget curl
+ - |
+ cat << EOF > /etc/apt/sources.list.d/ubuntu-toolchain-r.list
+ deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${UBUNTU_CODENAME} main
+ deb-src http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu ${UBUNTU_CODENAME} main
+ EOF
+ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1E9377A2BA9EF27F
+ - apt-get update
+ install_script:
+ - apt-get install -y autoconf automake make gcc-9 clang libc-dev libevent-dev libssl-dev flex bison
+
+ubuntu_1804_clang10: &ubuntu_1804_clang10
+ <<: *ubuntu_1804
+ env:
+ CC: clang-10
+ CLANG_VERSION: 10
+ bootstrap_script:
+ - apt-get update
+ - apt-get install -y gnupg2 ca-certificates wget curl
+ - |
+ cat << EOF > /etc/apt/sources.list.d/llvm-toolchain.list
+ deb http://apt.llvm.org/${UBUNTU_CODENAME} llvm-toolchain-${UBUNTU_CODENAME}-${CLANG_VERSION} main
+ deb-src http://apt.llvm.org/${UBUNTU_CODENAME} llvm-toolchain-${UBUNTU_CODENAME}-${CLANG_VERSION} main
+ EOF
+ - apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 15CF4D18AF4F7421
+ - apt-get update
+ install_script:
+ - apt-get install -y autoconf automake make clang-${CLANG_VERSION} libc-dev libevent-dev libssl-dev flex bison
+ - update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${CLANG_VERSION} 10
+
+freebsd_12_1: &freebsd_12_1
+ freebsd_instance:
+ image_family: freebsd-12-1
+ env:
+ CC: clang
+ install_script:
+ - pkg update -f
+ - pkg install -y bash gmake autoconf automake libevent
+
+macos_1015_xcode11: &macos_1015_xcode11
+ osx_instance:
+ image: catalina-xcode-11.3.1
+ env:
+ CC: clang
+ COV_COMPTYPE: clang
+ COV_COMPTYPE: macOSX
+ install_script:
+ - brew install bash autoconf automake libtool libevent openssl flex bison
+
+install_coverity: &install_coverity
+ env:
+ COV_ARC: "$CIRRUS_WORKING_DIR/cov-analysis-$COV_PLATFORM.tgz"
+ COV_DIR: "$CIRRUS_WORKING_DIR/coverity-scan-analysis"
+ PATH: "$PATH:$CIRRUS_WORKING_DIR/cov-analysis/bin"
+ install_coverity_script:
+ - test ! -d "${COV_DIR}" &&
+ mkdir -p "${COV_DIR}" &&
+ curl -s -S -F project="${CIRRUS_REPO_OWNER}/${CIRRUS_REPO_NAME}"
+ -F token="${COVERITY_SCAN_TOKEN}"
+ -o "${COV_ARC}"
+ "https://scan.coverity.com/download/cxx/${COV_PLATFORM}" &&
+ tar -xzf "${COV_ARC}" -C "${COV_DIR}"
+ - ln -s $(find "${COV_DIR}" -type d -name "cov-analysis*") cov-analysis
+
+submit_to_coverity_scan: &submit_to_coverity_scan
+ submit_to_coverity_scan_script:
+ - tar -czf analysis-results.tgz cov-int
+ - curl -s -S -F project="${CIRRUS_REPO_OWNER}/${CIRRUS_REPO_NAME}"
+ -F token="${COVERITY_SCAN_TOKEN}"
+ -F file=@analysis-results.tgz
+ -F version="$(git rev-parse --short HEAD)"
+ -F description="Cirrus CI build"
+ -F email="${COVERITY_EMAIL:=spam@nlnetlabs.nl}"
+ "https://scan.coverity.com/builds"
+
+env:
+ COVERITY_EMAIL: ENCRYPTED[effa3340c97e8cf92c0dbb564187d35b6829580cc2577b176d6c6fc9b775745f7130c56f5bd9ab2472f4ae818b6f3791]
+ COVERITY_SCAN_TOKEN: ENCRYPTED[8f67f850ca3d464ea87fa8dee17bbb0cfb2a991b6f401fd593fe0744eece838e325af438d62ee2d46c4e18a2bd5c873f]
+
+task:
+ only_if: $CIRRUS_CRON != ''
+ name: "Build on Ubuntu 18.04 LTS with GCC 9 (Coverity Scan)"
+ <<: *ubuntu_1804_gcc9
+ <<: *install_coverity
+ build_script:
+ - autoconf && autoheader
+ - ./configure --enable-checking --disable-flto
+ - cov-configure --comptype ${COV_COMPTYPE} --compiler ${CC} --template
+ - cov-build --dir cov-int make
+ <<: *submit_to_coverity_scan
+
+task:
+ matrix:
+ - name: "Build and test on Ubuntu 18.04 LTS with GCC 9"
+ <<: *ubuntu_1804_gcc9
+ - name: "Build and test on Ubuntu 18.04 LTS with Clang 10 (ASan+UBSan+LSan)"
+ <<: *ubuntu_1804_clang10
+ env:
+ CFLAGS: "-g2 -O0 -fsanitize=address,undefined,leak -fno-sanitize-recover=all"
+ - name: "Build and test on FreeBSD 12.1 (ASan+UBSan)"
+ <<: *freebsd_12_1
+ env:
+ CFLAGS: "-g2 -O0 -fsanitize=address,undefined -fno-sanitize-recover=all"
+ - name: "Build and test on macOS 10.15 with Xcode 11.3.1 (ASan+UBSan)"
+ <<: *macos_1015_xcode11
+ env:
+ CFLAGS: "-g2 -O0 -fsanitize=address,undefined -fno-sanitize-recover=all"
+
+ build_script:
+ - autoconf && autoheader
+ - ./configure --enable-checking --disable-flto --with-ssl=yes --with-libevent=yes
+ - make -j 2
+ - make cutest
+ - ./cutest
+ - (cd tpkg/clang-analysis.tdir && bash clang-analysis.test)
+ - (cd tpkg && ./mini_tdir.sh -a ../.. exe checkconf.tdir)