From c1642affaa0fdb8112409f4ce0addaa3457a4ee1 Mon Sep 17 00:00:00 2001 From: Niels Lohmann Date: Thu, 10 Aug 2017 19:03:35 +0200 Subject: [PATCH] :construction_worker: clang-3.8 --- .travis.yml | 291 ++-------------------------------------------------- 1 file changed, 6 insertions(+), 285 deletions(-) diff --git a/.travis.yml b/.travis.yml index b3d1677d..775235c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,293 +28,22 @@ env: matrix: include: - # Valgrind - - os: linux compiler: gcc - env: - - COMPILER=g++-4.9 - - SPECIAL=valgrind + env: COMPILER=clang-3.8 addons: apt: - sources: ['ubuntu-toolchain-r-test'] - packages: [g++-4.9, valgrind] - after_success: - - make check TEST_PREFIX="valgrind --error-exitcode=1 --leak-check=full " TEST_PATTERN="" - - # cLang sanitizer - # note: sadly clang's libc++ has errors when running with sanitize, - # so we use clang with gcc's libstdc++ which doesn't give those error. - # that's why we need to install g++-6 to get the lastest version - - os: linux - env: - - LLVM_VERSION=3.8.1 - - SPECIAL=sanitizer - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-6 - compiler: clang - before_script: - - make clang_sanitize - - # cppcheck - - - os: linux - compiler: gcc - env: - - COMPILER=g++-4.9 - - SPECIAL=cppcheck - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: [g++-4.9, cppcheck] - after_success: - - make cppcheck - - # no exceptions - - - os: linux - compiler: gcc - env: - - COMPILER=g++-4.9 - - SPECIAL=no_exceptions - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: [g++-4.9, cppcheck] - after_success: - - make clean - - CPPFLAGS="-DJSON_NOEXCEPTION" make check TEST_PATTERN="-e \"*\"" - - # Coveralls (http://gronlier.fr/blog/2015/01/adding-code-coverage-to-your-c-project/) - - - os: linux - compiler: gcc - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: ['g++-4.9', 'ruby'] - before_script: - - wget http://ftp.de.debian.org/debian/pool/main/l/lcov/lcov_1.11.orig.tar.gz - - tar xf lcov_1.11.orig.tar.gz - - sudo make -C lcov-1.11/ install - - gem install coveralls-lcov - - pip install --user cpp-coveralls - after_success: - - make clean - - CXXFLAGS="--coverage -g -O0" CPPFLAGS="-DNDEBUG" make json_unit - - test/json_unit "*" - - coveralls --build-root test --exclude src/catch.hpp --exclude src/unit-algorithms.cpp --exclude src/unit-allocator.cpp --exclude src/unit-capacity.cpp --exclude src/unit-class_const_iterator.cpp --exclude src/unit-class_iterator.cpp --exclude src/unit-class_lexer.cpp --exclude src/unit-class_parser.cpp --exclude src/unit-comparison.cpp --exclude src/unit-concepts.cpp --exclude src/unit-constructor1.cpp --exclude src/unit-constructor2.cpp --exclude src/unit-convenience.cpp --exclude src/unit-conversions.cpp --exclude src/unit-deserialization.cpp --exclude src/unit-element_access1.cpp --exclude src/unit-element_access2.cpp --exclude src/unit-inspection.cpp --exclude src/unit-iterator_wrapper.cpp --exclude src/unit-iterators1.cpp --exclude src/unit-iterators2.cpp --exclude src/unit-json_patch.cpp --exclude src/unit-json_pointer.cpp --exclude src/unit-modifiers.cpp --exclude src/unit-pointer_access.cpp --exclude src/unit-readme.cpp --exclude src/unit-reference_access.cpp --exclude src/unit-regression.cpp --exclude src/unit-serialization.cpp --exclude src/unit-testsuites.cpp --exclude src/unit-unicode.cpp --include ../src/json.hpp --gcov-options '\-lp' --gcov 'gcov-4.9' - - lcov --directory src --directory test/src --capture --output-file coverage.info --rc lcov_branch_coverage=1 --no-external - - lcov --remove coverage.info 'test/src/*' --output-file coverage.info --rc lcov_branch_coverage=1 - - lcov --list coverage.info --rc lcov_branch_coverage=1 - - coveralls-lcov --repo-token F9bs4Nop10JRgqPQXRcifyQKYhb3FczkS coverage.info - env: - - COMPILER=g++-4.9 - - SPECIAL=coveralls - - # Coverity (only for branch coverity_scan) - - - os: linux - compiler: clang - before_install: echo -n | openssl s_client -connect scan.coverity.com:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' | sudo tee -a /etc/ssl/certs/ca-certificates.crt - addons: - coverity_scan: - project: - name: "nlohmann/json" - description: "Build submitted via Travis CI" - notification_email: niels.lohmann@gmail.com - build_command_prepend: "make clean" - build_command: "make" - branch_pattern: coverity_scan - env: - - LLVM_VERSION=3.6.0 - - SPECIAL=coverity - - # OSX / Clang - - - os: osx - osx_image: xcode6.4 - - - os: osx - osx_image: xcode7.3 - - - os: osx - osx_image: xcode8 - - - os: osx - osx_image: xcode8.1 - - - os: osx - osx_image: xcode8.2 - - - os: osx - osx_image: xcode8.3 - - - os: osx - osx_image: xcode9 - - # Linux / GCC - - - os: linux - compiler: gcc - env: COMPILER=g++-4.9 - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-4.9 - - - os: linux - compiler: gcc - env: COMPILER=g++-5 - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-5 - - - os: linux - compiler: gcc - env: COMPILER=g++-6 - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-6 - - - os: linux - compiler: gcc - env: COMPILER=g++-7 - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-7 - - - os: linux - compiler: gcc - env: - - COMPILER=g++-7 - - CXXFLAGS=-std=c++17 - addons: - apt: - sources: ['ubuntu-toolchain-r-test'] - packages: g++-7 - - # Linux / Clang - - - os: linux - env: LLVM_VERSION=3.6.0 - compiler: clang - - - os: linux - env: LLVM_VERSION=3.6.1 - compiler: clang - - - os: linux - env: LLVM_VERSION=3.6.2 - compiler: clang - -# - os: linux -# env: LLVM_VERSION=3.7.0 -# compiler: clang - -# - os: linux -# env: LLVM_VERSION=3.7.1 -# compiler: clang - - - os: linux - env: LLVM_VERSION=3.8.0 - compiler: clang - - - os: linux - env: LLVM_VERSION=3.8.1 - compiler: clang - -# - os: linux -# addons: -# apt: -# sources: llvm-toolchain-trusty-3.9 -# packages: clang-3.9 -# env: COMPILER=clang++-3.9 -# -# - os: linux -# addons: -# apt: -# sources: llvm-toolchain-trusty-4.0 -# packages: clang-4.0 -# env: COMPILER=clang++-4.0 -# -# - os: linux -# addons: -# apt: -# sources: llvm-toolchain-trusty -# packages: clang-5.0 -# env: COMPILER=clang++-5.0 - -##################### -# installation step # -##################### - -# set directories to cache -cache: - directories: - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.6.2 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.6.1 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.6.0 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.7.0 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.7.1 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.8.0 - - ${TRAVIS_BUILD_DIR}/deps/llvm-3.8.1 - - -install: - # create deps dir if not existing - - DEPS_DIR="${TRAVIS_BUILD_DIR}/deps" - - mkdir -p ${DEPS_DIR} - - # make sure CXX is correctly set - - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi - - # get CMake (only for systems with brew - macOS) - - | - if [[ !(-x $(which cmake)) && (-x $(which brew)) ]]; then - brew update - brew install cmake - cmake --version - fi - - # install LLVM/clang when LLVM_VERSION is set - - | - if [[ "${LLVM_VERSION}" != "" ]]; then - LLVM_DIR=${DEPS_DIR}/llvm-${LLVM_VERSION} - if [[ -z "$(ls -A ${LLVM_DIR})" ]]; then - travis_retry wget --quiet https://cmake.org/files/v3.6/cmake-3.6.1.tar.gz - tar xfz cmake-3.6.1.tar.gz - (cd cmake-3.6.1 && ./configure --prefix=${LLVM_DIR}/cmake && make install) - export PATH="${LLVM_DIR}/cmake/bin:${PATH}" - LLVM_URL="http://llvm.org/releases/${LLVM_VERSION}/llvm-${LLVM_VERSION}.src.tar.xz" - LIBCXX_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxx-${LLVM_VERSION}.src.tar.xz" - LIBCXXABI_URL="http://llvm.org/releases/${LLVM_VERSION}/libcxxabi-${LLVM_VERSION}.src.tar.xz" - CLANG_URL="http://llvm.org/releases/${LLVM_VERSION}/clang+llvm-${LLVM_VERSION}-x86_64-linux-gnu-ubuntu-14.04.tar.xz" - mkdir -p ${LLVM_DIR} ${LLVM_DIR}/build ${LLVM_DIR}/projects/libcxx ${LLVM_DIR}/projects/libcxxabi ${LLVM_DIR}/clang - travis_retry wget --quiet -O - ${LLVM_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR} - travis_retry wget --quiet -O - ${LIBCXX_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/projects/libcxx - travis_retry wget --quiet -O - ${LIBCXXABI_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/projects/libcxxabi - travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xJ -C ${LLVM_DIR}/clang - (cd ${LLVM_DIR}/build && cmake .. -DCMAKE_INSTALL_PREFIX=${LLVM_DIR}/install -DCMAKE_CXX_COMPILER=clang++) - (cd ${LLVM_DIR}/build/projects/libcxx && make install -j2) - (cd ${LLVM_DIR}/build/projects/libcxxabi && make install -j2) - fi - export CXXFLAGS="-nostdinc++ -isystem ${LLVM_DIR}/install/include/c++/v1" - export LDFLAGS="-L ${LLVM_DIR}/install/lib -l c++ -l c++abi" - export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${LLVM_DIR}/install/lib" - export PATH="${LLVM_DIR}/clang/bin:${PATH}" - fi + sources: ['ubuntu-toolchain-r-test', 'llvm-toolchain-precise-3.8'] + packages: ['g++-6', 'clang-3.8'] ################ # build script # ################ script: + # make sure CXX is correctly set + - if [[ "${COMPILER}" != "" ]]; then export CXX=${COMPILER}; fi + # show OS/compiler version - uname -a - $CXX --version @@ -324,11 +53,3 @@ script: - cmake .. && cmake --build . --config Release -- -j4 - ctest -C Release -V - cd .. - - # check if homebrew works (only checks develop branch) - - if [ `which brew` ]; then - brew update ; - brew tap nlohmann/json ; - brew install nlohmann_json --HEAD ; - brew test nlohmann_json ; - fi