travis: Only run testsuite for gcc builds
[cascardo/ovs.git] / .travis / build.sh
index 3872893..990d263 100755 (executable)
@@ -4,26 +4,45 @@ set -o errexit
 
 KERNELSRC=""
 CFLAGS="-Werror"
+EXTRA_OPTS=""
 
 function install_kernel()
 {
-    wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.16.2.tar.gz
-    tar xzvf linux-3.16.2.tar.gz > /dev/null
-    cd linux-3.16.2
+    if [[ "$1" =~ ^3.* ]]; then
+        PREFIX="v3.x"
+    else
+        PREFIX="v2.6/longterm/v2.6.32"
+    fi
+
+    wget https://www.kernel.org/pub/linux/kernel/${PREFIX}/linux-${1}.tar.gz
+    tar xzvf linux-${1}.tar.gz > /dev/null
+    cd linux-${1}
     make allmodconfig
-    make net/openvswitch/
+
+    # Older kernels do not include openvswitch
+    if [ -d "net/openvswitch" ]; then
+        make net/openvswitch/
+    else
+        make net/bridge/
+    fi
+
     KERNELSRC=$(pwd)
+    if [ ! "$DPDK" ]; then
+        EXTRA_OPTS="--with-linux=$(pwd)"
+    fi
     echo "Installed kernel source in $(pwd)"
     cd ..
 }
 
 function install_dpdk()
 {
-    wget http://www.dpdk.org/browse/dpdk/snapshot/dpdk-1.7.0.tar.gz
-    tar xzvf dpdk-1.7.0.tar.gz > /dev/null
-    cd dpdk-1.7.0
+    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
     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
+    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
     echo "Installed DPDK source in $(pwd)"
@@ -36,17 +55,24 @@ function configure_ovs()
 }
 
 if [ "$KERNEL" ] || [ "$DPDK" ]; then
-    install_kernel
+    install_kernel $KERNEL
 fi
 
-[ "$DPDK" ] && {
+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
+    # DPDK headers currently trigger sparse errors
+    CFLAGS="$CFLAGS -Wsparse-error"
+fi
 
-configure_ovs $*
+configure_ovs $EXTRA_OPTS $*
 
+# Only build datapath if we are testing kernel w/o running testsuite
+if [ $KERNEL ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then
+    cd datapath
+fi
 
 if [ $CC = "clang" ]; then
     make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument"
@@ -54,7 +80,7 @@ else
     make CFLAGS="$CFLAGS" C=1
 fi
 
-if [ $TESTSUITE ]; then
+if [ $TESTSUITE ] && [ $CC != "clang" ]; then
     if ! make distcheck; then
         # testsuite.log is necessary for debugging.
         cat */_build/tests/testsuite.log