blob: 9820599709711c520383bd948b81972db93cf7b9 [file] [log] [blame]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# NOTE(quickstep-team): In Travis-CI, jobs timeout if they take more than 50
# mins or if there is no log output for more than 10 mins. Hence, we use -O0 to
# speed up compilation in release build. Also, jobs can only use upto 20GB of
# disk space. Hence, we minimize the amount of debug symbol using -g0 (DEBUG
# builds were taking > 20GB of space with clang).
# Also, to reduce the total CI time, we explicitly run the most time-consuming
# build first, using gcc in debug build with joinwithbinaryexpressions.
language: cpp
cache: ccache
compiler:
- gcc
- clang
env:
- BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions
- BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=selection
- BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions
- BUILD_TYPE=Release VECTOR_COPY_ELISION_LEVEL=selection
matrix:
exclude: # Due to time-out.
- compiler: gcc
env: BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=joinwithbinaryexpressions
- compiler: gcc
env: BUILD_TYPE=Debug VECTOR_COPY_ELISION_LEVEL=selection
install:
- export TEST_JOBS=2;
- if [ "$CC" = "gcc" ]; then
export CC="gcc-5";
export CXX="g++-5";
elif [ "$CC" = "clang" ]; then
export CC="clang-3.7";
export CXX="clang++-3.7";
fi
- export CLINKER=`which gold`
- export DEBUG_FLAGS="-g0";
- export RELEASE_FLAGS="-O0 -DNDEBUG";
- export LINKER_FLAGS="-s"
before_script:
- $CC --version
- $CXX --version
- $CLINKER --version
- cmake --version
- (cd third_party && ./download_and_patch_prerequisites.sh && cd ../)
- (cd build &&
cmake -D CMAKE_BUILD_TYPE=$BUILD_TYPE
-D BUILD_SHARED_LIBS=On
-D CMAKE_C_FLAGS_DEBUG="$DEBUG_FLAGS"
-D CMAKE_CXX_FLAGS_DEBUG="$DEBUG_FLAGS"
-D CMAKE_C_FLAGS_RELEASE="$RELEASE_FLAGS"
-D CMAKE_CXX_FLAGS_RELEASE="$RELEASE_FLAGS"
-D CMAKE_EXE_LINKER_FLAGS="$LINKER_FLAGS"
-D CMAKE_C_COMPILER=$CC
-D CMAKE_CXX_COMPILER=$CXX
-D CMAKE_LINKER=$CLINKER
-D USE_TCMALLOC=0
-D VECTOR_COPY_ELISION_LEVEL=$VECTOR_COPY_ELISION_LEVEL ..)
script:
- ./third_party/src/cpplint/lint_everything.py
- ./validate_cmakelists.py
- ./cyclic_dependency.py
- (cd build && make)
- (cd build && ctest --output-on-failure -E NetworkUtil_unittest -j$TEST_JOBS)
after_failure:
- df -h
- free -m
- dmesg
# Besides pull requests, we want to continuously test pushes/merges to master.
branches:
only:
- master
addons:
apt:
sources:
- ubuntu-toolchain-r-test
- llvm-toolchain-precise-3.7
- george-edison55-precise-backports # For cmake 3.x
packages:
- gcc-5
- g++-5
- clang-3.7
- binutils-gold
- libprotobuf-dev
- protobuf-compiler
- libgtest-dev
- python-networkx
- libnuma-dev
- cmake-data
- cmake
cache:
apt: true