language: cpp git: depth: 10 # sudo:required is needed for trusty images sudo: required dist: trusty notifications: email: false branches: only: - master cache: ccache: true apt: true directories: - test/cache env: global: - CCACHE_TEMPDIR=/tmp/.ccache-temp - CCACHE_COMPRESS=1 - CASHER_TIME_OUT=599 # one second less than 10m to avoid 10m timeout error: https://github.com/Project-OSRM/osrm-backend/issues/2742 - CCACHE_VERSION=3.3.1 - CMAKE_VERSION=3.6.2 - MASON="$(pwd)/scripts/mason.sh" matrix: fast_finish: true # We override the compiler names here to yield better ccache behavior, which uses this as key include: # Debug Builds - os: linux compiler: "gcc-6-debug" addons: &gcc6 apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Debug' TARGET_ARCH='x86_64-asan' ENABLE_COVERAGE=ON BUILD_COMPONENTS=ON - os: linux compiler: "clang-3.9-debug" addons: &clang38 apt: sources: ['ubuntu-toolchain-r-test'] packages: ['libstdc++-5-dev', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] env: CLANG_VERSION='3.9.1' BUILD_TYPE='Debug' BUILD_COMPONENTS=ON CUCUMBER_TIMEOUT=60000 - os: linux compiler: "mason-linux-debug-santize" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['libstdc++-5-dev'] env: CLANG_VERSION='3.9.1' BUILD_TYPE='Release' ENABLE_MASON=ON ENABLE_SANITIZER=ON # Release Builds - os: linux compiler: "mason-linux-release" addons: apt: sources: ['ubuntu-toolchain-r-test'] packages: ['libstdc++-5-dev'] env: CLANG_VERSION='3.9.1' BUILD_TYPE='Release' ENABLE_MASON=ON RUN_CLANG_FORMAT=ON - os: linux compiler: "gcc-6-release" addons: &gcc6 apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release' BUILD_COMPONENTS=ON - os: linux compiler: "gcc-6-release-i686" env: > TARGET_ARCH='i686' CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release' CFLAGS='-m32 -msse2 -mfpmath=sse' CXXFLAGS='-m32 -msse2 -mfpmath=sse' CHECK_HEADERS=yes - os: linux compiler: "gcc-4.9-release" addons: &gcc49 apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-4.9', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache'] env: CCOMPILER='gcc-4.9' CXXCOMPILER='g++-4.9' BUILD_TYPE='Release' - os: osx osx_image: xcode8.2 compiler: "mason-osx-release" # we use the xcode provides clang and don't install our own env: ENABLE_MASON=ON BUILD_TYPE='Release' CUCUMBER_TIMEOUT=60000 CCOMPILER='clang' CXXCOMPILER='clang++' ENABLE_ASSERTIONS=ON # Disabled because of CI slowness #- os: linux #- compiler: clang #- addons: &clang38 #- apt: #- sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test'] #- packages: ['clang-3.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] #- env: CCOMPILER='clang-3.8' CXXCOMPILER='clang++-3.8' BUILD_TYPE='Release' # Shared Library - os: linux compiler: "gcc-6-release-shared" addons: &gcc6 apt: sources: ['ubuntu-toolchain-r-test'] packages: ['g++-6', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] env: CCOMPILER='gcc-6' CXXCOMPILER='g++-6' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON BUILD_COMPONENTS=ON # Disabled because CI slowness #- os: linux #- compiler: clang #- addons: &clang38 #- apt: #- sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test'] #- packages: ['clang-3.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev'] #- env: CCOMPILER='clang-3.8' CXXCOMPILER='clang++-3.8' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON before_install: - if [[ ! -z $TARGET_ARCH ]] ; then source ./scripts/travis/before_install.$TARGET_ARCH.sh ; fi - | if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then export JOBS=$((`nproc` + 1)) fi - | if [ -n "${RUN_CLANG_FORMAT}" ]; then ${MASON} install clang-format 3.8.1 && PATH=$(${MASON} prefix clang-format 3.8.1)/bin:${PATH} ./scripts/format.sh fi - | if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then export JOBS=$((`sysctl -n hw.ncpu` + 1)) sudo mdutil -i off / fi - echo "Using ${JOBS} jobs" - source ./scripts/install_node.sh 4 - npm install -g "npm@>=3" # Upgrade to npm >v2 to reduce size of downloaded dependencies - npm install # Bootstrap cmake to be able to run mason - CMAKE_URL="https://mason-binaries.s3.amazonaws.com/${TRAVIS_OS_NAME}-x86_64/cmake/${CMAKE_VERSION}.tar.gz" - CMAKE_DIR="mason_packages/${TRAVIS_OS_NAME}-x86_64/cmake/${CMAKE_VERSION}" - mkdir -p ${CMAKE_DIR} - travis_retry wget --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C ${CMAKE_DIR} || exit 1 - export PATH=${CMAKE_DIR}/bin:${PATH} - ${MASON} install tbb 2017_20161128 && export LD_LIBRARY_PATH=$(${MASON} prefix tbb 2017_20161128)/lib/:${LD_LIBRARY_PATH} - ${MASON} install ccache ${CCACHE_VERSION} && export PATH=$(${MASON} prefix ccache ${CCACHE_VERSION})/bin:${PATH} - | if [[ ! -z ${CLANG_VERSION} ]]; then export CCOMPILER='clang' export CXXCOMPILER='clang++' ${MASON} install clang++ ${CLANG_VERSION} && export PATH=$(${MASON} prefix clang++ ${CLANG_VERSION})/bin:${PATH} # we only enable lto for release builds # and therefore don't need to us ld.gold or llvm tools for linking # for debug builds if [[ ${BUILD_TYPE} == 'Release' ]]; then ${MASON} install binutils 2.27 && export PATH=$(${MASON} prefix binutils 2.27)/bin:${PATH} fi fi - ccache --max-size=256M # limiting the cache's size to roughly the previous job's object sizes install: - | if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then ./scripts/check_taginfo.py taginfo.json profiles/car.lua fi - export OSRM_BUILD_DIR="$(pwd)/build-osrm" - mkdir ${OSRM_BUILD_DIR} && pushd ${OSRM_BUILD_DIR} - export CC=${CCOMPILER} CXX=${CXXCOMPILER} - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DENABLE_MASON=${ENABLE_MASON:-OFF} -DENABLE_ASSERTIONS=${ENABLE_ASSERTIONS:-OFF} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} -DENABLE_COVERAGE=${ENABLE_COVERAGE:-OFF} -DENABLE_SANITIZER=${ENABLE_SANITIZER:-OFF} -DBUILD_TOOLS=ON -DBUILD_COMPONENTS=${BUILD_COMPONENTS:-OFF} -DENABLE_CCACHE=ON - echo "travis_fold:start:MAKE" - make --jobs=${JOBS} - make tests --jobs=${JOBS} - make benchmarks --jobs=${JOBS} - echo "travis_fold:end:MAKE" - ccache -s - sudo make install - | if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then sudo ldconfig fi - if [[ ${CHECK_HEADERS} == yes ]] ; then make check-headers ; fi - popd - mkdir example/build && pushd example/build - cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} - make --jobs=${JOBS} - popd - npm run build-api-docs script: - if [[ $TARGET_ARCH == armhf ]] ; then echo "Skip tests for $TARGET_ARCH" && exit 0 ; fi - echo "travis_fold:start:BENCHMARK" - make -C test/data benchmark - echo "travis_fold:end:BENCHMARK" - ./example/build/osrm-example test/data/monaco.osrm # All tests assume to be run from the build directory - pushd ${OSRM_BUILD_DIR} - ./unit_tests/library-tests ../test/data/monaco.osrm - ./unit_tests/extractor-tests - ./unit_tests/engine-tests - ./unit_tests/util-tests - ./unit_tests/server-tests - ./unit_tests/partition-tests - popd - npm test after_success: - | if [ -n "${ENABLE_COVERAGE}" ]; then bash <(curl -s https://codecov.io/bash) fi