aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorMaxim Uvarov <maxim.uvarov@linaro.org>2018-07-10 10:26:17 +0300
committerMaxim Uvarov <maxim.uvarov@linaro.org>2018-08-22 16:42:56 +0300
commitf8a3e7255186d34f69da81f0274f5ff647429047 (patch)
tree85c9bab6244d747357df3d9f6db3897bf452af21 /scripts
parentf6c423a7d29e2c7d6d890cbc098a398d0d7e1288 (diff)
travis: add docker tests
initial Travis docker runs Signed-off-by: Maxim Uvarov <maxim.uvarov@linaro.org> Reviewed-by: Dmitry Eremin-Solenikov <dmitry.ereminsolenikov@linaro.org>
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/ci/build_arm64.sh45
-rwxr-xr-xscripts/ci/build_armhf.sh47
-rwxr-xr-xscripts/ci/build_dpdk.sh88
-rwxr-xr-xscripts/ci/build_i386.sh33
-rwxr-xr-xscripts/ci/build_powerpc.sh32
-rwxr-xr-xscripts/ci/build_x86_64.sh38
-rwxr-xr-xscripts/ci/coverage.sh56
-rwxr-xr-xscripts/ci/distcheck.sh25
8 files changed, 364 insertions, 0 deletions
diff --git a/scripts/ci/build_arm64.sh b/scripts/ci/build_arm64.sh
new file mode 100755
index 000000000..1f6872cc9
--- /dev/null
+++ b/scripts/ci/build_arm64.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+set -e
+
+if [ "${CC#clang}" != "${CC}" ] ; then
+ export CC="clang --target=aarch64-linux-gnu"
+ export LD="clang --target=aarch64-linux-gnu"
+ export CXX="clang++ --target=aarch64-linux-gnu"
+else
+ export CC="aarch64-linux-gnu-gcc"
+ export LD="aarch64-linux-gnu-ld"
+ export AR="aarch64-linux-gnu-ar"
+ export CXX="aarch64-linux-gnu-g++"
+fi
+
+export PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig:/usr/aarch64-linux-gnu/pkgconfig
+export PKG_CONFIG_PATH="$HOME/cunit-install/aarch64/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+
+export CROSS_ARCH=arm64
+export DPDK_CROSS=aarch64-linux-gnu-
+export TARGET="arm64$DPDKCC"
+
+dpkg -i --force-depends ~/download/libpcap0.8-dev_1.5.3-2_arm64.deb
+
+git clone ${CWD}/../../ odp
+cd ./odp
+./scripts/ci/build_dpdk.sh
+DPDKPATH=`cat /tmp/dpdk_install_dir`
+
+./bootstrap
+./configure --host=aarch64-linux-gnu --build=x86_64-linux-gnu --with-dpdk-path=${DPDKPATH} \
+ --disable-test-cpp ${CONF}
+make clean
+make -j 8
+
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+cd ~
+rm -rf ${TDIR}
diff --git a/scripts/ci/build_armhf.sh b/scripts/ci/build_armhf.sh
new file mode 100755
index 000000000..6c64bd5ef
--- /dev/null
+++ b/scripts/ci/build_armhf.sh
@@ -0,0 +1,47 @@
+#!/bin/bash
+set -e
+
+if [ "${CC#clang}" != "${CC}" ] ; then
+ export CC="clang --target=arm-linux-gnueabihf"
+ export LD="clang --target=arm-linux-gnueabihf"
+ export CXX="clang++ --target=arm-linux-gnueabihf"
+ export CFLAGS="-march=armv7-a"
+else
+ export CC="arm-linux-gnueabihf-gcc"
+ export LD="arm-linux-gnueabihf-ld"
+ export AR="arm-linux-gnueabihf-ar"
+ export CXX="arm-linux-gnueabihf-g++"
+fi
+
+export PKG_CONFIG_PATH=/usr/lib/arm-linux-gnueabihf/pkgconfig:/usr/arm-linux-gnueabihf/pkgconfig
+export PKG_CONFIG_PATH="$HOME/cunit-install/armhf/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+
+git clone ${CWD}/../../ odp
+
+dpkg -i --force-depends ~/download/libpcap0.8-dev_1.5.3-2_armhf.deb
+
+cd ./odp
+#export CROSS_ARCH="armhf"
+#export DPDK_CROSS=arm-linux-gnueabihf
+#export TARGET="arm-linux-gnueabihf$DPDKCC"
+#export TARGET="arm-linux-gnueabihf"
+#./scripts/ci/build_dpdk.sh
+#DPDKPATH=`cat /tmp/dpdk_install_dir`
+
+./bootstrap
+./configure --host=arm-linux-gnueabihf --build=x86_64-linux-gnu \
+ --disable-test-cpp ${CONF}
+make clean
+make -j 8
+
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+cd ~
+rm -rf ${TDIR}
diff --git a/scripts/ci/build_dpdk.sh b/scripts/ci/build_dpdk.sh
new file mode 100755
index 000000000..bdfe9a473
--- /dev/null
+++ b/scripts/ci/build_dpdk.sh
@@ -0,0 +1,88 @@
+#!/bin/bash -x
+
+set -e
+
+DPDK_VERS="17.11.2"
+CROSS=
+
+
+case "$CROSS_ARCH" in
+ "arm64")
+ DPDK_TARGET="arm64-armv8a-linuxapp-"
+ ;;
+ "armhf")
+ DPDK_TARGET="arm-armv7a-linuxapp-"
+ ;;
+ "i386")
+ DPDK_TARGET="i686-native-linuxapp-"
+ ;;
+ "")
+ DPDK_TARGET="x86_64-native-linuxapp-"
+ DPDK_MACHINE=snb
+ ;;
+esac
+
+
+if [ -n "$DPDK_TARGET" ] ; then
+ if [ "${CC#clang}" != "${CC}" ] ; then
+ DPDKCC=clang ;
+ else
+ DPDKCC=gcc ;
+ fi
+ if [ -n "$DPDK_SHARED" ] ; then
+ TARGET="${DPDK_TARGET}$DPDKCC"-shared
+ LIBDPDKEXT=so
+ export LD_LIBRARY_PATH="`pwd`/${TARGET}:$LD_LIBRARY_PATH"
+ echo $LD_LIBRARY_PATH
+ else
+ TARGET="${DPDK_TARGET}$DPDKCC"
+ LIBDPDKEXT=a
+ fi
+ DPDK_TARGET="${DPDK_TARGET}gcc"
+ CACHED_DPDK_VERS=`fgrep Version dpdk/pkg/dpdk.spec | cut -d " " -f 2`
+ if [ ! -d dpdk -o "${CACHED_DPDK_VERS}" != "${DPDK_VERS}" ]; then
+ rm -rf dpdk
+ mkdir dpdk
+ pushd dpdk
+ git init
+ git -c advice.detachedHead=false fetch -q --depth=1 http://dpdk.org/git/dpdk-stable v${DPDK_VERS}
+ git checkout -f FETCH_HEAD
+ popd
+ fi
+ if [ ! -f "dpdk/${TARGET}/usr/local/lib/libdpdk.$LIBDPDKEXT" ]; then
+ pushd dpdk
+ git log --oneline --decorate
+ # AArch64 && ARMv7 fixup
+ sed -i -e 's/40900/40800/g' lib/librte_eal/common/include/arch/arm/rte_vect.h
+ sed -i -e 's/!(/!(defined(__arm__) \&\& defined(__clang__) || /g' lib/librte_eal/common/include/arch/arm/rte_byteorder.h
+ sed -i -e 's/__GNUC__/defined(__arm__) \&\& defined(__clang__) || __GNUC__/' lib/librte_eal/common/include/generic/rte_byteorder.h
+ sed -i -e 's,\$(CC),\0 $(EXTRA_CFLAGS),g' lib/librte_acl/Makefile
+ make config T=${DPDK_TARGET} O=${TARGET}
+ pushd ${TARGET}
+ sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config
+ # OCTEON TX driver includes ARM v8.1 instructions
+ sed -ri 's,(CONFIG_RTE_LIBRTE_OCTEONTX_PMD=).*,\1n,' .config
+ sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_OCTEONTX_SSOVF=).*,\1n,' .config
+ sed -ri 's,(CONFIG_RTE_LIBRTE_OCTEONTX_MEMPOOL=).*,\1n,' .config
+ if test -n "${DPDK_MACHINE}" ; then
+ sed -ri 's,(CONFIG_RTE_MACHINE=).*,\1"'${DPDK_MACHINE}'",' .config
+ fi
+ if test -n "${DPDK_SHARED}" ; then
+ sed -ri 's,(CONFIG_RTE_BUILD_SHARED_LIB=).*,\1y,' .config
+ fi
+ if test -n "$CROSS_ARCH" ; then
+ sed -ri -e 's,(CONFIG_RTE_EAL_IGB_UIO=).*,\1n,' .config
+ sed -ri -e 's,(CONFIG_RTE_KNI_KMOD=).*,\1n,' .config
+ fi
+ sed -ri -e 's,(CONFIG_RTE_TOOLCHAIN=).*,\1"'${DPDKCC}'",' .config
+ sed -ri -e '/CONFIG_RTE_TOOLCHAIN_.*/d' .config
+ echo CONFIG_RTE_TOOLCHAIN_${DPDKCC^^}=y >> .config
+ popd
+ make build O=${TARGET} EXTRA_CFLAGS="-fPIC $DPDK_CFLAGS" CROSS="$DPDK_CROSS" CC="$CC" HOSTCC=gcc -j $(nproc)
+ make install O=${TARGET} DESTDIR=${TARGET}
+ rm -r ./doc ./${TARGET}/app ./${TARGET}/build
+ popd
+ fi
+fi
+echo "`pwd`/dpdk/${TARGET}/usr/local" > /tmp/dpdk_install_dir
+
diff --git a/scripts/ci/build_i386.sh b/scripts/ci/build_i386.sh
new file mode 100755
index 000000000..b98f55d5d
--- /dev/null
+++ b/scripts/ci/build_i386.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+set -e
+
+export CC=gcc
+export LD=ld
+export AR=ar
+
+export PKG_CONFIG_PATH="$HOME/cunit-install/i386-linux-gnu/lib/pkgconfig:${PKG_CONFIG_PATH}"
+export PKG_CONFIG_PATH="/usr/lib/i386-linux-gnu/pkgconfig:${PKG_CONFIG_PATH}"
+
+cd ~
+export CROSS_ARCH=""
+#export DPDK_CROSS=arm-linux-gnueabihf-
+
+
+if [ "${CC#clang}" != "${CC}" ] ; then
+ export CC="clang --target=i686-linux-gnu"
+ export LD="clang --target=i686-linux-gnu"
+ export CXX="clang++ --target=i686-linux-gnu"
+else
+ export CFLAGS="-m32"
+ export CXXFLAGS="-m32"
+ export LDFLAGS="-m32"
+fi
+
+git clone /odp
+cd ./odp
+./bootstrap
+./configure --host=i386-linux-gnu --build=x86_64-linux-gnu
+make clean
+make -j 8
+cd ..
+rm -rf odp
diff --git a/scripts/ci/build_powerpc.sh b/scripts/ci/build_powerpc.sh
new file mode 100755
index 000000000..2ff1a98e9
--- /dev/null
+++ b/scripts/ci/build_powerpc.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+set -e
+
+if [ "${CC#clang}" != "${CC}" ] ; then
+ export CC="clang --target=powerpc-linux-gnu"
+ export LD="clang --target=powerpc-linux-gnu"
+ export CXX="clang++ --target=powerpc-linux-gnu"
+ export AR=powerpc-linux-gnu-ar
+else
+ export CC=powerpc-linux-gnu-gcc
+ export LD=powerpc-linux-gnu-ld
+ export AR=powerpc-linux-gnu-ar
+fi
+
+export PKG_CONFIG_PATH=/usr/lib/powerpc-linux-gnu/pkgconfig:/usr/powerpc-linux-gnu/pkgconfig
+export PKG_CONFIG_PATH="$HOME/cunit-install/powerpc-linux-gnu/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+
+git clone ${CWD}/../../ odp
+cd ./odp
+./bootstrap
+./configure --host=powerpc-linux-gnu --build=x86_64-linux-gnu \
+ --disable-test-cpp ${CONF}
+
+make clean
+make -j 8
+cd ~
+rm -rf ${TDIR}
diff --git a/scripts/ci/build_x86_64.sh b/scripts/ci/build_x86_64.sh
new file mode 100755
index 000000000..1356dcdc9
--- /dev/null
+++ b/scripts/ci/build_x86_64.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+set -e
+
+# CC LD AR CXX has to be predifubed
+#
+
+export PKG_CONFIG_PATH="$HOME/cunit-install/x86_64/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+
+echo 1000 | tee /proc/sys/vm/nr_hugepages
+mkdir -p /mnt/huge
+mount -t hugetlbfs nodev /mnt/huge
+
+git clone ${CWD}/../../ odp
+cd ./odp
+./bootstrap
+./configure ${CONF} \
+ --enable-dpdk
+
+make -j 8
+# Ignore possible failures there because these tests depends on measurements
+# and systems might differ in performance.
+export CI="true"
+make check
+
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+cd ~
+rm -rf ${TDIR}
+
+umount /mnt/huge
+
diff --git a/scripts/ci/coverage.sh b/scripts/ci/coverage.sh
new file mode 100755
index 000000000..51ee277e2
--- /dev/null
+++ b/scripts/ci/coverage.sh
@@ -0,0 +1,56 @@
+#!/bin/bash
+set -e
+
+# CC LD AR CXX has to be predifubed
+#
+
+export PKG_CONFIG_PATH="$HOME/cunit-install/x86_64/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+echo 1000 | tee /proc/sys/vm/nr_hugepages
+mkdir -p /mnt/huge
+mount -t hugetlbfs nodev /mnt/huge
+
+git clone ${CWD}/../../ odp
+cd ./odp
+./bootstrap
+./configure \
+ CFLAGS="-O0 -coverage $CLFAGS" CXXFLAGS="-O0 -coverage $CXXFLAGS" LDFLAGS="--coverage $LDFLAGS" \
+ --enable-debug=full --enable-helper-linux --enable-dpdk --disable-test-perf --disable-test-perf-proc
+export CCACHE_DISABLE=1
+make -j $(nproc)
+
+# ignore possible failures there because these tests depends on measurements
+# and systems might differ in performance.
+export CI="true"
+
+ODP_SCHEDULER=basic make check
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+ODP_SCHEDULER=sp make check
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+ODP_SCHEDULER=iquery make check
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+ODP_SCHEDULER=scalable make check
+if [ $? -ne 0 ]; then
+ find . -name "*.trs" | xargs grep -l '^.test-result. FAIL' | while read trs ; do echo FAILURE detected at $trs; cat ${trs%%.trs}.log ; done
+fi
+
+
+bash <(curl -s https://codecov.io/bash) -X coveragepy
+
+cd ~
+rm -rf ${TDIR}
+
+umount /mnt/huge
diff --git a/scripts/ci/distcheck.sh b/scripts/ci/distcheck.sh
new file mode 100755
index 000000000..22013473b
--- /dev/null
+++ b/scripts/ci/distcheck.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+set -e
+
+# CC LD AR CXX has to be predifubed
+#
+
+export PKG_CONFIG_PATH="$HOME/cunit-install/x86_64/lib/pkgconfig:${PKG_CONFIG_PATH}"
+
+CWD=$(dirname "$0")
+TDIR=`mktemp -d -p ~`
+
+cd ${TDIR}
+git clone ${CWD}/../../ odp
+cd ./odp
+./bootstrap
+./configure --enable-user-guides
+
+make clean
+make distcheck
+
+make clean
+make distcheck DISTCHECK__CONFIGURE_FLAGS=--disable-abi-compat
+
+cd ~
+rm -rf ${TDIR}