travis: Add 32 bit (-m32) cross-compile build
authorThomas Graf <tgraf@noironetworks.com>
Wed, 4 Feb 2015 22:14:05 +0000 (23:14 +0100)
committerThomas Graf <tgraf@noironetworks.com>
Wed, 4 Feb 2015 22:14:05 +0000 (23:14 +0100)
Inspired by Ben Pfaff's email on 32 bit build environment, this adds a
32bit build to the travis build matrix to catch alignment and padding
issues.

The 32 bit build is only enabled for non-DPDK builds as DPDK itself is
currently not capable to be compiled with -m32.

The build also has SSL disabled as the Ubuntu libssl-devel package is
not multiarch compatible on the travis build system.

Signed-off-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
.travis.yml
.travis/build.sh
.travis/prepare.sh

index 1ffd15a..1838bb2 100644 (file)
@@ -9,6 +9,7 @@ env:
   - OPTS="--disable-ssl"
   - TESTSUITE=1 KERNEL=3.18.1
   - TESTSUITE=1 OPTS="--enable-shared"
+  - BUILD_ENV="-m32" OPTS="--disable-ssl"
   - KERNEL=3.17.7 DPDK=1
   - KERNEL=3.17.7 DPDK=1 OPTS="--enable-shared"
   - KERNEL=3.17.7
index 3570992..a8a515b 100755 (executable)
@@ -4,6 +4,7 @@ set -o errexit
 
 KERNELSRC=""
 CFLAGS="-Werror"
+SPARSE_FLAGS=""
 EXTRA_OPTS=""
 
 function install_kernel()
@@ -74,7 +75,7 @@ if [ "$DPDK" ]; then
     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 $*
@@ -86,8 +87,11 @@ fi
 
 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
index f8bd0a1..a78282b 100755 (executable)
@@ -2,6 +2,7 @@
 
 sudo apt-get update -qq
 sudo apt-get install -qq libssl-dev llvm-dev
+sudo apt-get install -qq gcc-multilib
 
 git clone git://git.kernel.org/pub/scm/devel/sparse/chrisl/sparse.git
 cd sparse && make && sudo make install PREFIX=/usr && cd ..