mirror of https://github.com/OISF/suricata
				
				
				
			
			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.
		
		
		
		
		
			
		
			
				
	
	
		
			238 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			YAML
		
	
			
		
		
	
	
			238 lines
		
	
	
		
			6.7 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    
 | 
						|
  - |
 | 
						|
    # Linux container builds have 2 cores, make use of them.
 | 
						|
    if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
 | 
						|
        j="-j 2"
 | 
						|
    fi
 | 
						|
    make ${j}    
 | 
						|
  - |
 | 
						|
    # Like "make check", but fail on first error. We redirect the output
 | 
						|
    # so Travis doesn't fail the build with a too much output error.
 | 
						|
    mkdir -p ./qa/log
 | 
						|
    ./src/suricata -u -l ./qa/log --fatal-unittests > unittests.log 2>&1
 | 
						|
    if [[ $? -ne 0 ]]; then
 | 
						|
        echo "Unit tests failed, last 500 lines of output are:"
 | 
						|
        tail -n 500 unittests.log
 | 
						|
        exit 1
 | 
						|
    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
 |