]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
travis: use new container build infrastructure
authorJason Ish <ish@unx.ca>
Wed, 29 Mar 2017 20:09:32 +0000 (14:09 -0600)
committerVictor Julien <victor@inliniac.net>
Thu, 6 Apr 2017 08:13:22 +0000 (10:13 +0200)
Migrate to the new Travis container build system. This build system does
not allow use of sudo, so required packages must be done declaratively
which required reworking how we install packages that are conditional
based on the build being done.

Mac builds are still done with sudo=true.

.travis.yml

index 5af6abf23407194e307f9146de9a42729f81578b..0194a079211b59b6681fa9ad15983da2f4fa022d 100644 (file)
@@ -1,29 +1,59 @@
-# 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
+sudo: false
 language: c
-compiler: gcc
+
+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
+    # 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"
 
-# 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.
+    # Linux, gcc, coccinelle.
     - os: linux
       compiler: gcc
       env:
         - NAME="linux,gcc,cocci"
         - *default-cflags
-        - ENABLE_COCCI="yes"
+      addons:
+        apt:
+          sources:
+            - sourceline: ppa:npalix/coccinelle
+          packages:
+            - *packages
+            - coccinelle
     # Linux, gcc, -DNDEBUG.
     - os: linux
       compiler: gcc
@@ -53,24 +83,27 @@ matrix:
         - *default-cflags
         - ARGS="--enable-debug"
         - ENABLE_DEBUG="yes"
-    # Linux, gcc, no json support.
+    # Linux, gcc, no jansson.
     - os: linux
       compiler: gcc
       env:
         - NAME="linux,gcc,no-json"
         - *default-cflags
-        - DISABLE_JSON="yes"
-    # OSX 10.12, XCode 8.1.
+      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
 
-# Change this to your needs
 script:
-  - sh autogen.sh
+  - sh ./autogen.sh
   - |
     if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
         export CFLAGS="${CFLAGS} ${EXTRA_CFLAGS}"
@@ -88,41 +121,20 @@ script:
             --with-libnspr-includes=/usr/local/opt/nspr/include/nspr \
             --with-libnspr-libraries=/usr/local/opt/nspr/lib
     fi
-  - make
   # 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 check 2> stderr.log
+        make ${j} check 2> stderr.log
     else
-        make check
+        make ${j} check
     fi
-before_install:
-  - |
-    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
+before_install:
   - |
     if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
         brew update
@@ -130,7 +142,17 @@ before_install:
         # Unlink and install each dependency to avoid errors where a
         # formula might already be installed but is not the current
         # version.
-        packages="pkg-config libmagic libyaml nss nspr jansson libnet lua pcre hiredis"
+        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
@@ -143,13 +165,5 @@ before_install:
         # Now relink, becuase if a newer version of a package wasn't
         # installed above, it will remain unlinked.
         brew link $packages
-
-        # Unlink pcre in case its already installed.
-        # brew unlink pcre || true
-        # brew unlink pkg-config || true
-
-        # brew install pkg-config libmagic libyaml nss nspr jansson libnet lua \
-        #     pcre hiredis
     fi
   - ./qa/travis-libhtp.sh
-