# Copyright (c) 2016, Linaro Limited # All rights reserved. # SPDX-License-Identifier: BSD-3-Clause # # Please update xxxx for your coverity token and notification email if required # pushing to github/master will run make check # pushing to github/coverity_scan will also launch a static analysis # See https://scan.coverity.com/travis_ci language: c sudo: required dist: trusty env: global: # COVERITY_SCAN_TOKEN # ** specific to your project ** # Note: # You should have a github account and travis linked travis account. # The secure key to be filled below is the 685 character long encrypted # token you can find as follow from your coverity dashboard # (at https://scan.coverity.com/dashboard): # Click on the github project (/odp) # Click on "submit build" # Click on "Configure Travis CI" # Look at the COVERITY_SCAN_TOKEN in the env: global: section # of the configuration example. # copy the secure: below # - secure: "xxxx" # # By default Linaro CODECOV_TOKEN token is used. It's ok to use it to see # for individual commit validation. But you you want to track tests history # you need generated new one at https://codecov.io specific for your repo. - CODECOV_TOKEN=8e1c0fd8-62ff-411e-a79f-5839f6662c11 addons: apt: sources: - ubuntu-toolchain-r-test - llvm-toolchain-precise-3.8 packages: - gcc - clang-3.8 - automake autoconf autoconf-archive libtool libssl-dev graphviz mscgen doxygen - libpcap-dev # coverity_scan: # project: # name: "$TRAVIS_REPO_SLUG" # notification_email: xxxx # build_command_prepend: "./bootstrap && ./configure --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example" # build_command: "make" # branch_pattern: coverity_scan compiler: - gcc - clang-3.8 env: - CONF="" - CONF="--disable-abi-compat" - CONF="--enable-schedule-sp" - CONF="--enable-schedule-iquery" install: - echo 1000 | sudo tee /proc/sys/vm/nr_hugepages - sudo mkdir -p /mnt/huge - sudo mount -t hugetlbfs nodev /mnt/huge - sudo apt-get -qq update - sudo apt-get install linux-headers-`uname -r` - sudo pip install coverage - gem install asciidoctor - PATH=${PATH//:\.\/node_modules\/\.bin/} # Install cunit for the validation tests because distro version is too old and fails C99 compile - sudo apt-get remove libcunit1-dev libcunit1 - export CUNIT_VERSION=2.1-3 - curl -sSOL https://github.com/Linaro/libcunit/releases/download/${CUNIT_VERSION}/CUnit-${CUNIT_VERSION}.tar.bz2 - tar -jxf *.bz2 - pushd CUnit* - ./bootstrap - ./configure --enable-debug --enable-automated --enable-basic --enable-console --enable-examples --enable-test - make - sudo make install - popd - export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" # DPDK pktio - TARGET=${TARGET:-"x86_64-native-linuxapp-gcc"} - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v17.02 http://dpdk.org/git/dpdk dpdk - pushd dpdk - git log --oneline --decorate - make config T=${TARGET} O=${TARGET} - pushd ${TARGET} - sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config - popd - make install T=${TARGET} EXTRA_CFLAGS="-fPIC" - popd # Netmap pktio - git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=v11.2 https://github.com/luigirizzo/netmap.git - pushd netmap/LINUX - ./configure - make - sudo insmod ./netmap.ko - popd script: - ./bootstrap - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap $CONF - make -j $(nproc) - sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make check - make install - echo "Checking linking and run from install..." - pushd $HOME - echo "Dynamic link.." - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl - LD_LIBRARY_PATH="${HOME}/odp-install/lib:$LD_LIBRARY_PATH" ./odp_hello_inst - echo "Static link.." - ${CC} ${OLDPWD}/example/hello/odp_hello.c -o odp_hello_inst -I${HOME}/odp-install/include -L${HOME}/odp-install/lib -lodp-linux -L${OLDPWD}/dpdk/x86_64-native-linuxapp-gcc/lib -lrt -ldpdk -lpthread -lcrypto -lpcap -ldl -static - ./odp_hello_inst jobs: include: - stage: test env: TEST=coverage compiler: gcc script: - ./bootstrap - ./configure --prefix=$HOME/odp-install --enable-test-cpp --enable-test-vald --enable-test-helper --enable-test-perf --enable-user-guides --enable-test-perf-proc --enable-test-example --with-dpdk-path=`pwd`/dpdk/${TARGET} --with-netmap-path=`pwd`/netmap CFLAGS="-O0 -coverage" CXXFLAGS="-O0 -coverage" LDFLAGS="--coverage" - sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" PATH=${PATH//:\.\/node_modules\/\.bin/} make check - find . -type f -iname '*.[ch]' -not -path ".git/*" -execdir gcov {} \; ; bash <(curl -s https://codecov.io/bash) -X coveragepy - stage: test env: TEST=distcheck compiler: gcc script: - ./bootstrap - ./configure - sudo LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" make distcheck - stage: test env: TEST=doxygen compiler: gcc script: # doxygen does not trap on warnings, check for them here. - ./bootstrap - ./configure - make doxygen-doc |tee doxygen.log - fgrep -rvq warning ./doxygen.log - stage: test env: TEST=checkpatch compiler: gcc script: - echo ${TRAVIS_COMMIT_RANGE}; - ODP_PATCHES=`echo ${TRAVIS_COMMIT_RANGE} | sed 's/\.//'`; - if [ -z "${ODP_PATCHES}" ]; then env; exit 1; fi; - ./scripts/ci-checkpatches.sh ${ODP_PATCHES}; after_failure: - find . -name 'test-suite.log' -execdir grep -il "FAILED" {} \; -exec echo {} \; -exec cat {} \;