From 9fa6a78e17b5a6ac54ece4938d3c181a07df2141 Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Tue, 10 Mar 2020 19:47:06 -0400 Subject: [PATCH] ci: update Travis configuration * Add testing on arm64, ppc64le, and s390x with select compiler versions * Drop all versions of gcc < 7 and clang < 5 * Add clang 11 (development branch) * Reenable ASan on Linux with clang 7, the upstream bug has been fixed * Drop Xcode 9.2 (macOS 10.12 is no longer supported) * Upgrade Xcode 11 to 11.3 * Workaround issue with missing /usr/local/opt/openssl on macOS * Various cleanups Change-Id: Ifc7224cf3e79c74225efefc278bcb547ac862698 --- .jenkins.d/01-ndn-cxx.sh | 8 +-- .jenkins.d/10-build.sh | 24 +++---- .jenkins.d/README.md | 4 +- .travis.yml | 134 ++++++++++++++++++++------------------- 4 files changed, 86 insertions(+), 84 deletions(-) diff --git a/.jenkins.d/01-ndn-cxx.sh b/.jenkins.d/01-ndn-cxx.sh index e627627..bec70d4 100755 --- a/.jenkins.d/01-ndn-cxx.sh +++ b/.jenkins.d/01-ndn-cxx.sh @@ -42,15 +42,13 @@ 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_preserve_env PATH -- ./waf install --color=yes +./waf --color=yes configure --disable-static --enable-shared --without-osx-keychain +./waf --color=yes build -j${WAF_JOBS:-1} +sudo_preserve_env PATH -- ./waf --color=yes install popd >/dev/null popd >/dev/null if has Linux $NODE_LABELS; then sudo ldconfig -elif has FreeBSD10 $NODE_LABELS; then - sudo ldconfig -m fi diff --git a/.jenkins.d/10-build.sh b/.jenkins.d/10-build.sh index 0c952ec..5748dc4 100755 --- a/.jenkins.d/10-build.sh +++ b/.jenkins.d/10-build.sh @@ -16,26 +16,26 @@ fi 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 - ./waf --color=yes configure --with-tests - ./waf --color=yes build -j${WAF_JOBS:-1} + # Build in release mode with tests + ./waf --color=yes configure --with-tests + ./waf --color=yes build -j${WAF_JOBS:-1} - # Cleanup - sudo_preserve_env PATH -- ./waf --color=yes distclean + # Cleanup + 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} + # Build in release mode without tests + ./waf --color=yes configure + ./waf --color=yes build -j${WAF_JOBS:-1} - # Cleanup - sudo_preserve_env PATH -- ./waf --color=yes distclean + # Cleanup + sudo_preserve_env PATH -- ./waf --color=yes distclean fi -# Configure/build in debug mode with tests +# Build in debug mode with tests ./waf --color=yes configure --debug --with-tests $ASAN $COVERAGE ./waf --color=yes build -j${WAF_JOBS:-1} -# (tests will be run against debug version) +# (tests will be run against the debug version) # Install sudo_preserve_env PATH -- ./waf --color=yes install diff --git a/.jenkins.d/README.md b/.jenkins.d/README.md index 5813349..6cba1e4 100644 --- a/.jenkins.d/README.md +++ b/.jenkins.d/README.md @@ -15,11 +15,11 @@ Environment Variables Used in Build Scripts * `[DISTRO_TYPE]`: `Ubuntu` * `[DISTRO_VERSION]`: `Ubuntu-16.04`, `Ubuntu-18.04` - Possible values for OS X / macOS: + Possible values for macOS: * `[OS_TYPE]`: `OSX` * `[DISTRO_TYPE]`: `OSX` (can be absent) - * `[DISTRO_VERSION]`: `OSX-10.11`, `OSX-10.12`, `OSX-10.13` + * `[DISTRO_VERSION]`: `OSX-10.12`, `OSX-10.13`, `OSX-10.14` - `JOB_NAME`: optional variable to define type of the job. Depending on the defined job type, the build scripts can perform different tasks. diff --git a/.travis.yml b/.travis.yml index 3a459c5..ccb9f9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,100 +1,104 @@ +version: ~> 1.0 language: cpp +os: linux dist: bionic + +arch: + - amd64 + - arm64 + - ppc64le + - s390x + env: - global: - - WAF_JOBS=2 + - COMPILER=g++-7 + - COMPILER=g++-9 + - COMPILER=clang++-6.0 + - COMPILER=clang++-9 -matrix: +jobs: include: - # Linux/gcc - # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages - - os: linux - env: COMPILER=g++-5 - - os: linux - env: COMPILER=g++-6 - - os: linux - env: COMPILER=g++-7 - - os: linux - env: COMPILER=g++-8 - - os: linux - env: COMPILER=g++-9 + # Linux + - env: COMPILER=g++-8 + - env: COMPILER=clang++-5.0 + - env: COMPILER=clang++-7 + - env: COMPILER=clang++-8 + - env: COMPILER=clang++-10 + - env: COMPILER=clang++-11 - # Linux/clang - # https://apt.llvm.org/ - - os: linux - env: COMPILER=clang++-3.9 - - os: linux - env: COMPILER=clang++-4.0 - - os: linux - env: COMPILER=clang++-5.0 - - os: linux - env: COMPILER=clang++-6.0 - # disable AddressSanitizer with clang 7 and 8 - # due to https://bugs.llvm.org/show_bug.cgi?id=40808 - - os: linux - env: COMPILER=clang++-7 DISABLE_ASAN=yes - - os: linux - env: COMPILER=clang++-8 DISABLE_ASAN=yes - - os: linux - env: COMPILER=clang++-9 - - os: linux - env: COMPILER=clang++-10 - - # macOS/clang - # https://docs.travis-ci.com/user/reference/osx/#macos-version - - os: osx - osx_image: xcode9.2 - env: OSX_VERSION=10.12 + # macOS - os: osx osx_image: xcode9.4 - env: OSX_VERSION=10.13 + env: # default compiler - os: osx osx_image: xcode10.1 - env: OSX_VERSION=10.13 + env: # default compiler - os: osx osx_image: xcode10.3 - env: OSX_VERSION=10.14 + env: # default compiler - os: osx - osx_image: xcode11 - env: OSX_VERSION=10.14 + osx_image: xcode11.3 + env: # default compiler allow_failures: - - env: COMPILER=clang++-10 + - env: COMPILER=clang++-11 fast_finish: true -before_install: | +before_install: + - | + : Adding apt repositories case ${COMPILER} in - g++-[567]|clang++-[3456].*) - ;; - g++-*) + g++-9) + # https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test/+packages travis_retry sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test travis_retry sudo apt-get -qq update ;; - clang++-*) + clang++-1?) + # https://apt.llvm.org/ LLVM_REPO=${COMPILER/clang++/llvm-toolchain-${TRAVIS_DIST}} 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/${TRAVIS_DIST}/ ${LLVM_REPO%-10} main" + travis_retry sudo add-apt-repository -y "deb http://apt.llvm.org/${TRAVIS_DIST}/ ${LLVM_REPO%-11} main" travis_retry sudo apt-get -qq update ;; esac install: - - if [[ -n ${COMPILER} ]]; then travis_retry sudo apt-get -qy install "${COMPILER/clang++/clang}"; fi + - | + : Installing C++ compiler + if [[ -n ${COMPILER} ]]; then + travis_retry sudo apt-get -qy install ${COMPILER/clang++/clang} + fi before_script: - - if [[ ${TRAVIS_OS_NAME} == linux ]]; then export NODE_LABELS="Linux Ubuntu Ubuntu-18.04"; fi - - if [[ ${TRAVIS_OS_NAME} == osx ]]; then export NODE_LABELS="OSX OSX-${OSX_VERSION}"; fi - # do not waste time upgrading useless packages - - if [[ ${TRAVIS_OS_NAME} == osx ]]; then brew pin cgal gdal numpy postgis sfcgal || true; 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 + - | + : Setting environment variables + if [[ -n ${COMPILER} ]]; then + export CXX=${COMPILER} + fi + case ${TRAVIS_OS_NAME} in + linux) export NODE_LABELS="Linux Ubuntu Ubuntu-18.04" ;; + osx) export NODE_LABELS="OSX OSX-$(sw_vers -productVersion | cut -d . -f -2)" ;; + esac + export WAF_JOBS=2 + - | + : Enabling workarounds + case "${TRAVIS_CPU_ARCH},${COMPILER}" in + ppc64le,g++-7) + # AddressSanitizer does not seem to be working + export DISABLE_ASAN=yes + ;; + *,clang++-8) + # https://bugs.llvm.org/show_bug.cgi?id=40808 + export DISABLE_ASAN=yes + ;; + esac + if [[ ${TRAVIS_OS_NAME} == osx ]]; then + # Do not waste time upgrading useless packages + brew pin cgal gdal postgis sfcgal || true + # Ensure /usr/local/opt/openssl exists + brew reinstall openssl || true + fi - ${CXX:-c++} --version - - python --version script: - ./.jenkins