You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
suricata/.travis.yml

234 lines
6.5 KiB
YAML

dist: trusty
sudo: false
language: c
addons:
apt:
# Define the required packages without libjansson so we can do a
# build without libjansson.
packages-without-jansson: &packages-without-jansson
- libpcre3
- libpcre3-dbg
- libpcre3-dev
- build-essential
- autoconf
- automake
- libtool
- libpcap-dev
- libnet1-dev
- libyaml-0-2
- libyaml-dev
- zlib1g
- zlib1g-dev
- libcap-ng-dev
- libcap-ng0
- make
- libmagic-dev
- libnetfilter-queue-dev
- libnetfilter-queue1
- libnfnetlink-dev
- libnfnetlink0
- libhiredis-dev
- libjansson-dev
- libevent-dev
- libevent-pthreads-2.0-5
# Now define the default set of packages which is those above, and
# libjansson.
packages: &packages
- *packages-without-jansson
- libjansson-dev
# Define the default CFLAGS used by all builds as a YAML anchor.
default-cflags: &default-cflags
CFLAGS="-Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-function"
matrix:
allow_failures:
# Allow the rust-stable build to fail. These entries must match
# the env entry in the build matrix exactly.
- env:
- NAME="linux,gcc,rust-stable"
- *default-cflags
- ENABLE_RUST="yes"
- RUST_VERSION="stable"
- ARGS="--enable-rust --enable-rust-strict"
- DO_CHECK_SETUP_SCRIPTS="yes"
- DO_DISTCHECK="yes"
include:
# Linux, gcc, coccinelle.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,cocci"
- *default-cflags
addons:
apt:
sources:
- sourceline: ppa:npalix/coccinelle
packages:
- *packages
- coccinelle
# Linux, gcc, Rust (latest stable).
# This is allowed to fail, update allow_failures if the env changes.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,rust-stable"
- *default-cflags
- ENABLE_RUST="yes"
- RUST_VERSION="stable"
- ARGS="--enable-rust --enable-rust-strict"
- DO_CHECK_SETUP_SCRIPTS="yes"
- DO_DISTCHECK="yes"
# Linux, gcc, Rust.
# - Rust 1.23.0, the latest known working version.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,rust-1.23.0"
- *default-cflags
- ENABLE_RUST="yes"
- RUST_VERSION="1.23.0"
- ARGS="--enable-rust --enable-rust-strict"
- DO_DISTCHECK="yes"
# Linux, gcc, Rust (1.21.0 - oldest supported).
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,rust-1.21.0"
- *default-cflags
- ENABLE_RUST="yes"
- RUST_VERSION="1.21.0"
- ARGS="--enable-rust --enable-rust-strict"
- DO_DISTCHECK="yes"
# Linux, gcc, -DNDEBUG.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,ndebug"
- *default-cflags
- EXTRA_CFLAGS="-DNDEBUG"
# Linux, clang. For this build we'll also enable -Wshadow.
- os: linux
compiler: clang
env:
- NAME="linux,clang"
- *default-cflags
- EXTRA_CFLAGS="-Wshadow"
# Linux, gcc, profiling.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,profiling"
- *default-cflags
- ARGS="--enable-profiling"
# Linux, gcc, debug.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,debug"
- *default-cflags
- ARGS="--enable-debug"
- ENABLE_DEBUG="yes"
# Linux, gcc, no jansson.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,no-json"
- *default-cflags
addons:
apt:
packages:
- *packages-without-jansson
# OSX 10.12, XCode 8.1
- os: osx
compiler: gcc
osx_image: xcode8.1
sudo: true
env:
- NAME="osx,gcc"
- *default-cflags
script:
- sh ./autogen.sh
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
export CFLAGS="${CFLAGS} ${EXTRA_CFLAGS}"
./configure --enable-nfqueue --enable-unittests --enable-hiredis ${ARGS}
fi
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
export CFLAGS="${CFLAGS} ${EXTRA_CFLAGS}"
./configure --enable-unittests --enable-hiredis --enable-ipfw \
--enable-lua --with-libpcre-includes=/usr/local/include \
--with-libpcre-includes=/usr/local/include \
--with-libpcre-libraries=/usr/local/lib \
--with-libnss-includes=/usr/local/opt/nss/include/nss \
--with-libnss-libraries=/usr/local/opt/nss/lib \
--with-libnspr-includes=/usr/local/opt/nspr/include/nspr \
--with-libnspr-libraries=/usr/local/opt/nspr/lib
fi
# With debug enabled too much output is generated for Travis, so
# redirect stderr to a file.
- |
# Linux container builds have 2 cores, make use of them.
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
j="-j 2"
fi
if [[ "$ENABLE_DEBUG" == "yes" ]]; then
make ${j} check 2> stderr.log
else
make ${j} check
fi
- |
if [[ "$DO_DISTCHECK" == "yes" ]]; then
make distcheck DISTCHECK_CONFIGURE_FLAGS="${ARGS}"
fi
- |
if [[ "$DO_CHECK_SETUP_SCRIPTS" == "yes" ]]; then
(cd scripts && ./check-setup.sh)
fi
before_install:
- export PATH=$HOME/.cargo/bin:$PATH
- |
if [[ "$ENABLE_RUST" == "yes" ]]; then
curl https://sh.rustup.rs -sSf | sh -s -- -y
if [[ "$RUST_VERSION" != "" ]]; then
rustup override set $RUST_VERSION
fi
rustc --version
fi
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update
# Unlink and install each dependency to avoid errors where a
# formula might already be installed but is not the current
# version.
packages=""
packages="$packages pkg-config"
packages="$packages libmagic"
packages="$packages libyaml"
packages="$packages nss"
packages="$packages nspr"
packages="$packages jansson"
packages="$packages libnet"
packages="$packages lua"
packages="$packages pcre"
packages="$packages hiredis"
for package in $packages; do
if brew ls $package --versions > /dev/null; then
brew unlink $package
fi
done
# Now install.
brew install $packages
# Now relink, becuase if a newer version of a package wasn't
# installed above, it will remain unlinked.
brew link $packages
fi
- ./qa/travis-libhtp.sh