Skip to content

Commit

Permalink
travis: use a build matrix and add additional builds
Browse files Browse the repository at this point in the history
The following builds were added:
- linux, clang with -Wshadow
- linux w/ profiling
- linux w/ debug
- linux w/ no-json support

Removes the extra OS X build.

Travis file was reworked signficantly for readabilty.
  • Loading branch information
jasonish authored and victorjulien committed Dec 2, 2016
1 parent 92885d6 commit 94bc7e5
Showing 1 changed file with 117 additions and 18 deletions.
135 changes: 117 additions & 18 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,125 @@
os:
- linux
- osx
osx_image: xcode8.1
# Default parameters, even this default build is excluded in the build
# matrix below. We define so Travis doesn't think this is a Ruby
# project.
os: linux
language: c
env:
- CFLAGS="-Wall -Wextra -Werror -Wno-unused-parameter -Wno-unused-function"
compiler:
- gcc
- clang
compiler: gcc

# 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"

# The default build is Linux with gcc. Add additional builds to the
# matrix here.
matrix:
# Exclude the default build so any the builds in the matrix will be done.
exclude:
- os: linux
compiler: gcc
include:
# Linux, gcc, cocci tests enabled.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,cocci"
- *default-cflags
- ENABLE_COCCI="yes"
# 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 json support.
- os: linux
compiler: gcc
env:
- NAME="linux,gcc,no-json"
- *default-cflags
- DISABLE_JSON="yes"
# OSX 10.12, XCode 8.1.
- os: osx
compiler: gcc
osx_image: xcode8.1
env:
- NAME="osx,gcc"
- *default-cflags

# Change this to your needs
script:
- sh autogen.sh
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./configure --enable-nfqueue --enable-unittests --enable-hiredis; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then ./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
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
./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
- make
- make check
# With debug enabled too much output is generated for Travis, so
# redirect stderr to a file.
- |
if [[ "$ENABLE_DEBUG" == "yes" ]]; then
make check 2> stderr.log
else
make check
fi
before_install:
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "gcc" ]]; then sudo add-apt-repository -y ppa:npalix/coccinelle; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get update -qq; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "gcc" ]]; then sudo apt-get install -y 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 coccinelle libjansson-dev libhiredis-dev; fi
- if [[ "$TRAVIS_OS_NAME" == "linux" && "$CC" == "clang" ]]; then sudo apt-get install -y 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 libjansson-dev libhiredis-dev; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install pkg-config libmagic libyaml nss nspr jansson libnet lua pcre hiredis; fi
- |
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
if [[ "$ENABLE_COCCI" == "yes" ]]; then
sudo add-apt-repository -y ppa:npalix/coccinelle
fi
sudo apt-get update -qq
sudo apt-get install -y 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
if [[ "$ENABLE_COCCI" == "yes" ]]; then
sudo apt-get install -y coccinelle
fi
if [[ "$DISABLE_JSON" != "yes" ]]; then
sudo apt-get install -y libjansson-dev
fi
fi
- |
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update
brew install pkg-config libmagic libyaml nss nspr jansson libnet lua \
pcre hiredis
fi
- ./qa/travis-libhtp.sh

0 comments on commit 94bc7e5

Please sign in to comment.