]> git.proxmox.com Git - ovs.git/blame - .travis/build.sh
Merge remote-tracking branch 'origin/master' into ovn3
[ovs.git] / .travis / build.sh
CommitLineData
826bc7b6
TG
1#!/bin/bash
2
de0ae686
TG
3set -o errexit
4
826bc7b6 5KERNELSRC=""
ecc3c395 6CFLAGS="-Werror"
b9aa727c 7SPARSE_FLAGS=""
517f9311 8EXTRA_OPTS=""
826bc7b6
TG
9
10function install_kernel()
11{
517f9311
TG
12 if [[ "$1" =~ ^3.* ]]; then
13 PREFIX="v3.x"
14 else
15 PREFIX="v2.6/longterm/v2.6.32"
16 fi
17
18 wget https://www.kernel.org/pub/linux/kernel/${PREFIX}/linux-${1}.tar.gz
19 tar xzvf linux-${1}.tar.gz > /dev/null
20 cd linux-${1}
de0ae686 21 make allmodconfig
517f9311
TG
22
23 # Older kernels do not include openvswitch
24 if [ -d "net/openvswitch" ]; then
25 make net/openvswitch/
26 else
27 make net/bridge/
28 fi
29
de0ae686 30 KERNELSRC=$(pwd)
517f9311
TG
31 if [ ! "$DPDK" ]; then
32 EXTRA_OPTS="--with-linux=$(pwd)"
33 fi
de0ae686
TG
34 echo "Installed kernel source in $(pwd)"
35 cd ..
826bc7b6
TG
36}
37
38function install_dpdk()
39{
6c3cc113
SS
40 if [ -n "$DPDK_GIT" ]; then
41 git clone $DPDK_GIT dpdk-$1
42 cd dpdk-$1
43 git checkout v$1
44 else
45 wget http://www.dpdk.org/browse/dpdk/snapshot/dpdk-$1.tar.gz
46 tar xzvf dpdk-$1.tar.gz > /dev/null
47 cd dpdk-$1
48 fi
de0ae686 49 find ./ -type f | xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-single=400/'
ecc3c395 50 sed -ri 's,(CONFIG_RTE_BUILD_COMBINE_LIBS=).*,\1y,' config/common_linuxapp
7f2f24e3
SM
51 sed -ri '/CONFIG_RTE_LIBNAME/a CONFIG_RTE_BUILD_FPIC=y' config/common_linuxapp
52 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
de0ae686
TG
53 make config CC=gcc T=x86_64-native-linuxapp-gcc
54 make CC=gcc RTE_KERNELDIR=$KERNELSRC
de0ae686
TG
55 echo "Installed DPDK source in $(pwd)"
56 cd ..
826bc7b6
TG
57}
58
59function configure_ovs()
60{
61 ./boot.sh && ./configure $*
826bc7b6
TG
62}
63
64if [ "$KERNEL" ] || [ "$DPDK" ]; then
517f9311 65 install_kernel $KERNEL
826bc7b6
TG
66fi
67
67af7d70 68if [ "$DPDK" ]; then
6c3cc113 69 if [ -z "$DPDK_VER" ]; then
b8e57534 70 DPDK_VER="1.8.0"
6c3cc113
SS
71 fi
72 install_dpdk $DPDK_VER
b8e57534 73 # Disregard bad function casts until DPDK is fixed
ecc3c395 74 CFLAGS="$CFLAGS -Wno-error=bad-function-cast -Wno-error=cast-align"
6c3cc113 75 EXTRA_OPTS+="--with-dpdk=./dpdk-$DPDK_VER/build"
67af7d70
TG
76elif [ $CC != "clang" ]; then
77 # DPDK headers currently trigger sparse errors
b9aa727c 78 SPARSE_FLAGS="$SPARSE_FLAGS -Wsparse-error"
67af7d70 79fi
826bc7b6 80
517f9311 81configure_ovs $EXTRA_OPTS $*
826bc7b6 82
517f9311
TG
83# Only build datapath if we are testing kernel w/o running testsuite
84if [ $KERNEL ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then
85 cd datapath
86fi
ecc3c395 87
826bc7b6 88if [ $CC = "clang" ]; then
ecc3c395 89 make CFLAGS="$CFLAGS -Wno-error=unused-command-line-argument"
b9aa727c
TG
90elif [[ $BUILD_ENV =~ "-m32" ]]; then
91 # Disable sparse for 32bit builds on 64bit machine
92 make CFLAGS="$CFLAGS $BUILD_ENV"
826bc7b6 93else
b9aa727c 94 make CFLAGS="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" C=1
95c9bfd4
BP
95fi
96
33a58fc6 97if [ $TESTSUITE ] && [ $CC != "clang" ]; then
95c9bfd4
BP
98 if ! make distcheck; then
99 # testsuite.log is necessary for debugging.
100 cat */_build/tests/testsuite.log
101 exit 1
aeef7193 102 fi
826bc7b6
TG
103fi
104
105exit 0