diff options
author | Maxim Uvarov <maxim.uvarov@linaro.org> | 2018-07-10 10:26:17 +0300 |
---|---|---|
committer | Maxim Uvarov <maxim.uvarov@linaro.org> | 2018-08-22 16:42:56 +0300 |
commit | f8a3e7255186d34f69da81f0274f5ff647429047 (patch) | |
tree | 85c9bab6244d747357df3d9f6db3897bf452af21 /scripts | |
parent | f6c423a7d29e2c7d6d890cbc098a398d0d7e1288 (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-x | scripts/ci/build_arm64.sh | 45 | ||||
-rwxr-xr-x | scripts/ci/build_armhf.sh | 47 | ||||
-rwxr-xr-x | scripts/ci/build_dpdk.sh | 88 | ||||
-rwxr-xr-x | scripts/ci/build_i386.sh | 33 | ||||
-rwxr-xr-x | scripts/ci/build_powerpc.sh | 32 | ||||
-rwxr-xr-x | scripts/ci/build_x86_64.sh | 38 | ||||
-rwxr-xr-x | scripts/ci/coverage.sh | 56 | ||||
-rwxr-xr-x | scripts/ci/distcheck.sh | 25 |
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} |