netdev-dpdk: fix mbuf leaks
[cascardo/ovs.git] / .travis / build.sh
index 990d263..ef712d0 100755 (executable)
@@ -4,11 +4,14 @@ set -o errexit
 
 KERNELSRC=""
 CFLAGS="-Werror"
+SPARSE_FLAGS=""
 EXTRA_OPTS=""
 
 function install_kernel()
 {
-    if [[ "$1" =~ ^3.* ]]; then
+    if [[ "$1" =~ ^4.* ]]; then
+        PREFIX="v4.x"
+    elif [[ "$1" =~ ^3.* ]]; then
         PREFIX="v3.x"
     else
         PREFIX="v2.6/longterm/v2.6.32"
@@ -36,12 +39,18 @@ function install_kernel()
 
 function install_dpdk()
 {
-    wget http://www.dpdk.org/browse/dpdk/snapshot/dpdk-1.7.1.tar.gz
-    tar xzvf dpdk-1.7.1.tar.gz > /dev/null
-    cd dpdk-1.7.1
+    if [ -n "$DPDK_GIT" ]; then
+        git clone $DPDK_GIT dpdk-$1
+        cd dpdk-$1
+        git checkout v$1
+    else
+        wget http://www.dpdk.org/browse/dpdk/snapshot/dpdk-$1.tar.gz
+        tar xzvf dpdk-$1.tar.gz > /dev/null
+        cd dpdk-$1
+    fi
     find ./ -type f | xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-single=400/'
     sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp
-    sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' config/common_linuxapp
+    echo 'CONFIG_RTE_BUILD_FPIC=y' >>config/common_linuxapp
     sed -ri '/EXECENV_CFLAGS  = -pthread -fPIC/{s/$/\nelse ifeq ($(CONFIG_RTE_BUILD_FPIC),y)/;s/$/\nEXECENV_CFLAGS  = -pthread -fPIC/}' mk/exec-env/linuxapp/rte.vars.mk
     make config CC=gcc T=x86_64-native-linuxapp-gcc
     make CC=gcc RTE_KERNELDIR=$KERNELSRC
@@ -59,29 +68,38 @@ if [ "$KERNEL" ] || [ "$DPDK" ]; then
 fi
 
 if [ "$DPDK" ]; then
-    install_dpdk
-    # Disregard bad function cassts until DPDK is fixed
-    CFLAGS="$CFLAGS -Wno-error=bad-function-cast -Wno-error=cast-align"
-elif [ $CC != "clang" ]; then
+    if [ -z "$DPDK_VER" ]; then
+        DPDK_VER="2.2.0"
+    fi
+    install_dpdk $DPDK_VER
+    if [ "$CC" = "clang" ]; then
+        # Disregard cast alignment errors until DPDK is fixed
+        CFLAGS="$CFLAGS -Wno-cast-align"
+    fi
+    EXTRA_OPTS="$EXTRA_OPTS --with-dpdk=./dpdk-$DPDK_VER/build"
+elif [ "$CC" != "clang" ]; then
     # DPDK headers currently trigger sparse errors
-    CFLAGS="$CFLAGS -Wsparse-error"
+    SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error"
 fi
 
 configure_ovs $EXTRA_OPTS $*
 
 # Only build datapath if we are testing kernel w/o running testsuite
-if [ $KERNEL ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then
+if [ "$KERNEL" ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then
     cd datapath
 fi
 
-if [ $CC = "clang" ]; then
+if [ "$CC" = "clang" ]; then
     make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument"
+elif [[ $BUILD_ENV =~ "-m32" ]]; then
+    # Disable sparse for 32bit builds on 64bit machine
+    make CFLAGS="$CFLAGS $BUILD_ENV"
 else
-    make CFLAGS="$CFLAGS" C=1
+    make CFLAGS="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" C=1
 fi
 
-if [ $TESTSUITE ] && [ $CC != "clang" ]; then
-    if ! make distcheck; then
+if [ "$TESTSUITE" ] && [ "$CC" != "clang" ]; then
+    if ! make distcheck RECHECK=yes; then
         # testsuite.log is necessary for debugging.
         cat */_build/tests/testsuite.log
         exit 1