| # |
| # 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. |
| # |
| |
| # build Apache Thrift on Travis CI - https://travis-ci.org/ |
| |
| language: cpp |
| |
| sudo: required |
| |
| cache: |
| - apt |
| - npm |
| - maven |
| |
| compiler: |
| - clang |
| - gcc |
| |
| before_install: |
| - sh build/travis/installCXXDependencies.sh |
| - if [ "$ALL_DEPS" != "no" ] ; then sh build/travis/installDependencies.sh 1> /dev/null ; fi |
| - if [ "$ALL_DEPS" != "no" ] ; then export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH ; fi |
| - if [ "$ALL_DEPS" != "no" ] ; then cabal update ; fi |
| # Disabling any cabal concurrent jobs to workaround GHC crashes due to out of memory. |
| # We can safely remove this to speed up cabal install, once Travis infrastructure is upgraded. |
| - if [ "$ALL_DEPS" != "no" ] ; then sed -i 's/^\s*jobs\s*:\s*\$ncpus\s*$/jobs:1/g' $HOME/.cabal/config && cat $HOME/.cabal/config | grep jobs ; fi |
| |
| |
| script: |
| - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then mkdir cmake_build && cd cmake_build && cmake -GNinja -DQT_MOC_EXECUTABLE="moq-qt5" $CMAKE_CONFIG $TRAVIS_BUILD_DIR ; fi |
| - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then ninja ; fi |
| - if [ "x$CMAKE_CONFIG" != "xnone" ] ; then cpack ; cd $TRAVIS_BUILD_DIR ; fi |
| - if [ "x$CONFIG" != "xnone" ] ; then sh bootstrap.sh ; fi |
| - if [ "x$CONFIG" != "xnone" ] ; then sh configure $CONFIG ; fi |
| - if [ "x$CONFIG" != "xnone" ] ; then make $MAKE_TARGET -j2 ; fi |
| |
| after_failure: |
| - if [ "x$ERROR_LOG" != "xnone" ] ; then cat $ERROR_LOG ; fi |
| |
| env: |
| global: |
| - TEST_NAME="" |
| - CMAKE_CONFIG="none" |
| - CONFIG="none" |
| - MAKE_TARGET="check" |
| - ALL_DEPS="no" |
| - GHCVER=7.8.3 |
| - ERROR_LOG="none" |
| |
| matrix: |
| # Put it here because it's most time consuming |
| - TEST_NAME="make cross (automake)" |
| THRIFT_CROSSTEST_CONCURRENCY=6 |
| CONFIG="--enable-tutorial=no --without-erlang --without-lua --without-haxe --without-d" |
| ALL_DEPS="yes" |
| MAKE_TARGET="cross" |
| ERROR_LOG="test/log/unexpected_failures.log" |
| |
| # CMake builds |
| - TEST_NAME="compiler (CMake + CPack)" |
| CMAKE_CONFIG="-DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" |
| - TEST_NAME="all (CMake + CPack)" |
| CMAKE_CONFIG="" |
| ALL_DEPS="yes" |
| - TEST_NAME="C++/boost-threads (CMake + CPack)" |
| CMAKE_CONFIG="-DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_BOOSTTHREADS=ON" |
| - TEST_NAME="C++/std-threads (CMake + CPack)" |
| CMAKE_CONFIG="-DCMAKE_CXX_FLAGS=-std=c++0x -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_STDTHREADS=ON" |
| - TEST_NAME="compiler (mingw32-gcc, CMake + CPack)" |
| CMAKE_CONFIG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" |
| |
| # Autotool builds |
| # TODO: Remove them as migration is made |
| - TEST_NAME="compiler (automake)" |
| CONFIG="--disable-libs" |
| - TEST_NAME="all (automake)" |
| CONFIG="--without-erlang --without-python --without-go --without-lua" |
| ALL_DEPS="yes" |
| - TEST_NAME="C & C++ & Haskell (automake)" |
| CONFIG="--without-csharp --without-java --without-erlang --without-nodejs --without-lua --without-python --without-perl --without-php --without-php-extension --without-ruby --without-go --without-d" |
| ALL_DEPS="yes" |
| - TEST_NAME="Small Set (automake)" |
| CONFIG="--without-erlang --without-haskell --without-python --without-go --without-lua --without-d --without-ruby --without-nodejs --without-java" |
| ALL_DEPS="yes" |
| - TEST_NAME="dist (automake)" |
| CONFIG="" |
| ALL_DEPS="yes" |
| MAKE_TARGET="dist" |
| |
| matrix: |
| allow_failures: |
| # gcc fails on travis seemingly due to out of memory |
| - compiler: gcc |
| |
| exclude: |
| # This one takes very long |
| - compiler: gcc |
| env: TEST_NAME="make cross (automake)" CONFIG="--without-python" ALL_DEPS="yes" MAKE_TARGET="cross" |
| |
| # Does not use native compiler, no need to do it twice |
| - compiler: gcc |
| env: TEST_NAME="compiler (mingw32-gcc, CMake + CPack)" CMAKE_CONFIG="-DCMAKE_TOOLCHAIN_FILE=../build/cmake/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" |
| - compiler: gcc |
| env: TEST_NAME="dist (automake)" CONFIG="" ALL_DEPS="yes" MAKE_TARGET="dist" |
| |
| include: |
| - env: |
| - TEST_NAME="Debian Packages" |
| compiler: clang |
| before_install: |
| - sh build/travis/installCXXDependencies.sh; |
| - sh build/travis/installDependencies.sh 1> /dev/null; |
| - sudo apt-get install build-essential mono-gmcs mono-devel libmono-system-web2.0-cil erlang-base ruby1.8-dev python-all python-all-dev python-all-dbg php5 php5-dev |
| script: |
| - dpkg-buildpackage -tc -us -uc |
| - ls -al .. |
| |
| |
| # QA jobs for code analytics and metrics |
| |
| # static code analysis with cppcheck (we can add --enable=all later) |
| - env: TEST_NAME="cppcheck (compiler) error" |
| script: cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 compiler/cpp/src |
| before_install: sudo apt-get install cppcheck |
| - env: TEST_NAME="cppcheck (cpp) error" |
| script: cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp |
| before_install: sudo apt-get install cppcheck |
| - env: TEST_NAME="cppcheck (c_glib) error" |
| script: cppcheck --force --quiet --inline-suppr --error-exitcode=1 -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib |
| before_install: sudo apt-get install cppcheck |
| # add --error-exitcode=1 as soon as everything is fixed |
| - env: TEST_NAME="cppcheck (compiler) all" |
| script: cppcheck --force --quiet --inline-suppr --enable=all -j2 compiler/cpp/src |
| before_install: sudo apt-get install cppcheck |
| - env: TEST_NAME="cppcheck (cpp) all" |
| script: cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/cpp/src lib/cpp/test test/cpp tutorial/cpp |
| before_install: sudo apt-get install cppcheck |
| - env: TEST_NAME="cppcheck (c_glib) all" |
| script: cppcheck --force --quiet --inline-suppr --enable=all -j2 lib/c_glib/src lib/c_glib/test test/c_glib/src tutorial/c_glib |
| before_install: sudo apt-get install cppcheck |
| |
| # TODO use findbugs for Java |
| # TODO use fxcop for C# |
| |
| # TODO do style checks |
| |
| # search for TODO within source tree |
| - env: TEST_NAME="TODO" |
| before_install: |
| script: grep -r TODO * |
| # search for FIXME within source tree |
| - env: TEST_NAME="FIXME" |
| before_install: |
| script: grep -r FIXME * |
| # search for HACK within source tree |
| - env: TEST_NAME="HACK" |
| before_install: |
| script: grep -r HACK * |
| # some statistics about the code base |
| - env: TEST_NAME="sloccount" |
| before_install: |
| script: sloccount . |
| before_install: sudo apt-get install sloccount |
| # some info about the build machine |
| - env: TEST_NAME="info" |
| before_install: |
| script: |
| - dpkg -l |
| - uname -a |
| |
| # TODO make it perfect ;-r |
| # |