From 5188f31d501ada82022e14496529b82c97190e0f Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Mon, 18 Mar 2019 18:38:45 -0400 Subject: [PATCH] ci: update .travis.yml and jenkins scripts Change-Id: I22034ef33a13910e2a5639deec4a5609b5a6ad99 --- .jenkins.d/01-ndn-cxx.sh | 6 ++--- .jenkins.d/10-build.sh | 21 ++++++++------- .jenkins.d/20-tests.sh | 4 +-- .jenkins.d/README.md | 2 +- .jenkins.d/util.sh | 19 ++++++++++++++ .travis.yml | 57 ++++++++++++++++++++-------------------- 6 files changed, 65 insertions(+), 44 deletions(-) diff --git a/.jenkins.d/01-ndn-cxx.sh b/.jenkins.d/01-ndn-cxx.sh index c9e2a63..e627627 100755 --- a/.jenkins.d/01-ndn-cxx.sh +++ b/.jenkins.d/01-ndn-cxx.sh @@ -37,14 +37,14 @@ fi sudo rm -f /usr/local/bin/ndnsec* sudo rm -fr /usr/local/include/ndn-cxx -sudo rm -f /usr/local/lib/libndn-cxx* -sudo rm -f /usr/local/lib/pkgconfig/libndn-cxx.pc +sudo rm -f /usr/local/lib{,64}/libndn-cxx* +sudo rm -f /usr/local/lib{,64}/pkgconfig/libndn-cxx.pc pushd ndn-cxx >/dev/null ./waf configure --color=yes --enable-shared --disable-static --without-osx-keychain ./waf build --color=yes -j${WAF_JOBS:-1} -sudo env "PATH=$PATH" ./waf install --color=yes +sudo_preserve_env PATH -- ./waf install --color=yes popd >/dev/null popd >/dev/null diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh index 9ee5a78..8907de1 100755 --- a/.jenkins.d/10-build.sh +++ b/.jenkins.d/10-build.sh @@ -6,8 +6,14 @@ source "$JDIR"/util.sh set -x +if [[ $JOB_NAME == *"code-coverage" ]]; then + COVERAGE="--with-coverage" +elif [[ -z $DISABLE_ASAN ]]; then + ASAN="--with-sanitizer=address" +fi + # Cleanup -sudo env "PATH=$PATH" ./waf --color=yes distclean +sudo_preserve_env PATH -- ./waf --color=yes distclean if [[ $JOB_NAME != *"code-coverage" && $JOB_NAME != *"limited-build" ]]; then # Configure/build in optimized mode with tests @@ -15,29 +21,24 @@ if [[ $JOB_NAME != *"code-coverage" && $JOB_NAME != *"limited-build" ]]; then ./waf --color=yes build -j${WAF_JOBS:-1} # Cleanup - sudo env "PATH=$PATH" ./waf --color=yes distclean + sudo_preserve_env PATH -- ./waf --color=yes distclean # Configure/build in optimized mode without tests ./waf --color=yes configure ./waf --color=yes build -j${WAF_JOBS:-1} # Cleanup - sudo env "PATH=$PATH" ./waf --color=yes distclean + sudo_preserve_env PATH -- ./waf --color=yes distclean fi # Configure/build in debug mode with tests -if [[ $JOB_NAME == *"code-coverage" ]]; then - COVERAGE="--with-coverage" -elif [[ -n $BUILD_WITH_ASAN || -z $TRAVIS ]]; then - ASAN="--with-sanitizer=address" -fi -./waf --color=yes configure --debug --with-tests $COVERAGE $ASAN +./waf --color=yes configure --debug --with-tests $ASAN $COVERAGE ./waf --color=yes build -j${WAF_JOBS:-1} # (tests will be run against debug version) # Install -sudo env "PATH=$PATH" ./waf --color=yes install +sudo_preserve_env PATH -- ./waf --color=yes install if has Linux $NODE_LABELS; then sudo ldconfig diff --git a/.jenkins.d/20-tests.sh b/.jenkins.d/20-tests.sh index f2ade1e..e9c1c85 100755 --- a/.jenkins.d/20-tests.sh +++ b/.jenkins.d/20-tests.sh @@ -41,8 +41,8 @@ ASAN_OPTIONS+=":strict_string_checks=true" ASAN_OPTIONS+=":strip_path_prefix=${PWD}/" export ASAN_OPTIONS -export BOOST_TEST_COLOR_OUTPUT="yes" -export NDN_LOG="*=DEBUG" +export BOOST_TEST_BUILD_INFO=1 +export BOOST_TEST_COLOR_OUTPUT=1 # Run unit tests ./build/unit-tests $(ut_log_args) diff --git a/.jenkins.d/README.md b/.jenkins.d/README.md index 39fa40b..5813349 100644 --- a/.jenkins.d/README.md +++ b/.jenkins.d/README.md @@ -27,7 +27,7 @@ Environment Variables Used in Build Scripts Possible values: * empty: default build process - * `code-coverage` (Linux OS is assumed): debug build with tests and code coverage analysis + * `code-coverage` (Ubuntu Linux is assumed): debug build with tests and code coverage analysis * `limited-build`: only a single debug build with tests - `CACHE_DIR`: the variable defines a path to folder containing cached files from previous builds, diff --git a/.jenkins.d/util.sh b/.jenkins.d/util.sh index a89bc27..8ddc4ba 100644 --- a/.jenkins.d/util.sh +++ b/.jenkins.d/util.sh @@ -16,3 +16,22 @@ has() { set ${saved_xtrace} return ${ret} } + +sudo_preserve_env() { + local saved_xtrace + [[ $- == *x* ]] && saved_xtrace=-x || saved_xtrace=+x + set +x + + local vars=() + while [[ $# -gt 0 ]]; do + local arg=$1 + shift + case ${arg} in + --) break ;; + *) vars+=("${arg}=${!arg}") ;; + esac + done + + set ${saved_xtrace} + sudo env "${vars[@]}" "$@" +} diff --git a/.travis.yml b/.travis.yml index 984e8ac..47579e9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,5 @@ language: cpp dist: xenial -sudo: required env: global: - JOB_NAME=limited-build @@ -21,12 +20,6 @@ matrix: # Linux/clang # https://apt.llvm.org/ - - os: linux - env: COMPILER=clang++-3.5 - - os: linux - env: COMPILER=clang++-3.6 - - os: linux - env: COMPILER=clang++-3.7 DISABLE_ASAN=yes - os: linux env: COMPILER=clang++-3.8 - os: linux @@ -37,40 +30,43 @@ matrix: env: COMPILER=clang++-5.0 - os: linux env: COMPILER=clang++-6.0 + # temporarily disable AddressSanitizer on clang-7 and later + # due to https://bugs.llvm.org/show_bug.cgi?id=40808 - os: linux - env: COMPILER=clang++-7 + env: COMPILER=clang++-7 DISABLE_ASAN=yes + - os: linux + env: COMPILER=clang++-8 DISABLE_ASAN=yes + - os: linux + env: COMPILER=clang++-9 DISABLE_ASAN=yes # macOS/clang - # https://docs.travis-ci.com/user/reference/osx/#OS-X-Version - - os: osx - osx_image: xcode7.3 - env: OSX_VERSION=10.11 + # https://docs.travis-ci.com/user/reference/osx/#macos-version - os: osx osx_image: xcode8.3 env: OSX_VERSION=10.12 - os: osx - osx_image: xcode9.3 + osx_image: xcode9.2 + env: OSX_VERSION=10.12 + - os: osx + osx_image: xcode9.4 env: OSX_VERSION=10.13 + - os: osx + osx_image: xcode10.1 + env: OSX_VERSION=10.13 + - os: osx + osx_image: xcode10.2 + env: OSX_VERSION=10.14 allow_failures: - - env: COMPILER=g++-6 - - env: COMPILER=g++-7 - - env: COMPILER=g++-8 - - env: COMPILER=clang++-3.5 - - env: COMPILER=clang++-3.6 - - env: COMPILER=clang++-3.7 DISABLE_ASAN=yes - - env: COMPILER=clang++-3.8 - - env: COMPILER=clang++-3.9 - - env: COMPILER=clang++-4.0 - - env: COMPILER=clang++-5.0 - - env: COMPILER=clang++-6.0 - - env: COMPILER=clang++-7 + - env: COMPILER=clang++-9 DISABLE_ASAN=yes fast_finish: true install: | case ${COMPILER} in - g++-[6789]) + g++-5) + ;; + g++-*) travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test travis_retry sudo apt-get -qq update travis_retry sudo apt-get -qy install "${COMPILER}" @@ -78,8 +74,8 @@ install: | clang++-*) CLANG_VERSION=${COMPILER/clang++} if [[ ${CLANG_VERSION} != "-3."* ]]; then - wget -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | sudo apt-key add - - travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${CLANG_VERSION/-7} main" + travis_retry wget -nv -O - "https://apt.llvm.org/llvm-snapshot.gpg.key" | sudo apt-key add - + travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial${CLANG_VERSION/-9} main" fi travis_retry sudo apt-get -qq update travis_retry sudo apt-get -qy install "clang${CLANG_VERSION}" @@ -89,6 +85,11 @@ install: | before_script: - if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-16.04"; fi - if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi + - if [[ ${OSX_VERSION} == 10.12 ]]; then brew update; fi + # workaround for https://github.com/Homebrew/homebrew-core/issues/26358 + - if [[ ${OSX_VERSION} == 10.12 ]]; then brew outdated python || brew upgrade python; fi + # workaround for https://github.com/travis-ci/travis-ci/issues/6688 + - if [[ ${OSX_VERSION} == 10.12 ]]; then /usr/bin/yes | pip2 uninstall numpy || true; fi - if [[ -n ${COMPILER} ]]; then export CXX=${COMPILER}; fi - ${CXX:-c++} --version - python --version