10 function install_kernel
()
12 if [[ "$1" =~ ^
4.
* ]]; then
14 elif [[ "$1" =~ ^
3.
* ]]; then
17 PREFIX
="v2.6/longterm/v2.6.32"
20 wget https
://www.kernel.org
/pub
/linux
/kernel
/${PREFIX}/linux-
${1}.
tar.gz
21 tar xzvf linux-
${1}.
tar.gz
> /dev
/null
25 # Cannot use CONFIG_KCOV: -fsanitize-coverage=trace-pc is not supported by compiler
26 sed -i 's/CONFIG_KCOV=y/CONFIG_KCOV=n/' .config
28 # stack validation depends on tools/objtool, but objtool does not compile on travis.
29 # It is giving following error.
30 # >>> GEN arch/x86/insn/inat-tables.c
31 # >>> Semantic error at 40: Unknown imm opnd: AL
32 # So for now disable stack-validation for the build.
34 sed -i 's/CONFIG_STACK_VALIDATION=y/CONFIG_STACK_VALIDATION=n/' .config
37 # Older kernels do not include openvswitch
38 if [ -d "net/openvswitch" ]; then
45 if [ ! "$DPDK" ]; then
46 EXTRA_OPTS
="--with-linux=$(pwd)"
48 echo "Installed kernel source in $(pwd)"
52 function install_dpdk
()
54 if [ -n "$DPDK_GIT" ]; then
55 git clone
$DPDK_GIT dpdk-stable-
$1
59 wget http
://fast.dpdk.org
/rel
/dpdk-
$1.
tar.gz
60 tar xzvf dpdk-
$1.
tar.gz
> /dev
/null
63 find .
/ -type f |
xargs sed -i 's/max-inline-insns-single=100/max-inline-insns-single=400/'
64 echo 'CONFIG_RTE_BUILD_FPIC=y' >>config
/common_linuxapp
65 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
66 make config CC
=gcc T
=x86_64-native-linuxapp-gcc
67 make CC
=gcc RTE_KERNELDIR
=$KERNELSRC
68 echo "Installed DPDK source in $(pwd)"
72 function configure_ovs
()
74 .
/boot.sh
&& .
/configure $
*
77 if [ "$KERNEL" ] ||
[ "$DPDK" ]; then
78 install_kernel
$KERNEL
82 if [ -z "$DPDK_VER" ]; then
85 install_dpdk
$DPDK_VER
86 if [ "$CC" = "clang" ]; then
87 # Disregard cast alignment errors until DPDK is fixed
88 CFLAGS
="$CFLAGS -Wno-cast-align"
90 EXTRA_OPTS
="$EXTRA_OPTS --with-dpdk=./dpdk-stable-$DPDK_VER/build"
91 elif [ "$CC" != "clang" ]; then
92 # DPDK headers currently trigger sparse errors
93 SPARSE_FLAGS
="$SPARSE_FLAGS -Wsparse-error"
96 configure_ovs
$EXTRA_OPTS $
*
98 # Only build datapath if we are testing kernel w/o running testsuite
99 if [ "$KERNEL" ] && [ ! "$TESTSUITE" ] && [ ! "$DPDK" ]; then
103 if [ "$CC" = "clang" ]; then
104 make CFLAGS
="$CFLAGS -Wno-error=unused-command-line-argument"
105 elif [[ $BUILD_ENV =~
"-m32" ]]; then
106 # Disable sparse for 32bit builds on 64bit machine
107 make CFLAGS
="$CFLAGS $BUILD_ENV"
109 make CFLAGS
="$CFLAGS $BUILD_ENV $SPARSE_FLAGS" C
=1
112 if [ "$TESTSUITE" ] && [ "$CC" != "clang" ]; then
113 if ! make distcheck RECHECK
=yes; then
114 # testsuite.log is necessary for debugging.
115 cat */_build
/tests
/testsuite.log