# # 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 cache: - apt - npm - maven env: global: - TEST_NAME="" - CONFIG="" - GHCVER=7.8.3 matrix: include: - env: - TEST_NAME="compiler (gcc, automake)" CONFIG="--disable-libs" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; script: - sh bootstrap.sh; - sh configure $CONFIG; - make check -j2; - env: - TEST_NAME="compiler (gcc, CMake + CPack)" CONFIG="-DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; script: - mkdir build_native && cd build_native && cmake $CONFIG .. && make -j4 && cpack && cd ..; - env: - TEST_NAME="compiler (clang, automake)" CONFIG="--disable-libs" compiler: clang before_install: - sh contrib/installCXXDependencies.sh; script: - sh bootstrap.sh; - sh configure $CONFIG; - make check -j2; - env: - TEST_NAME="compiler (clang, CMake + CPack)" CONFIG="-DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" compiler: clang before_install: - sh contrib/installCXXDependencies.sh; script: - mkdir build_native && cd build_native && cmake $CONFIG .. && make -j4 && cpack && cd ..; - env: - TEST_NAME="compiler (mingw32-gcc, CMake + CPack)" CONFIG="-DCMAKE_TOOLCHAIN_FILE=../contrib/mingw32-toolchain.cmake -DBUILD_COMPILER=ON -DBUILD_LIBRARIES=OFF -DBUILD_TESTING=OFF -DBUILD_EXAMPLES=OFF" before_install: - sh contrib/installCXXDependencies.sh; - sudo apt-get install nsis script: - mkdir build_mingw32 && cd build_mingw32 && cmake $CONFIG .. && make -j4 && cpack && cd ..; - env: - TEST_NAME="all (gcc, automake)" CONFIG="--without-erlang --without-python --without-go --without-lua" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH - cabal update script: - sh bootstrap.sh; - sh configure $CONFIG; - make check -j2; - env: - TEST_NAME="C & C++ & Haskell (gcc, 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" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH - cabal update script: - sh bootstrap.sh; - sh configure $CONFIG; - make check -j2; - env: - TEST_NAME="C++/boost-threads (gcc, CMake)" CONFIG="-DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_BOOSTTHREADS=ON" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; script: - mkdir build_cmake && cd build_cmake && cmake $CONFIG .. && make -j4 && cd ..; - env: - TEST_NAME="C++/std-threads (gcc, CMake)" CONFIG="-DCMAKE_CXX_FLAGS=-std=c++11 -DWITH_C_GLIB=OFF -DWITH_JAVA=OFF -DWITH_STDTHREADS=ON" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; script: - mkdir build_cmake && cd build_cmake && cmake $CONFIG .. && make -j4 && cd ..; - env: - TEST_NAME="all (gcc, CMake + CPack)" CONFIG="" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; script: - mkdir build_cmake && cd build_cmake && cmake $CONFIG .. && make -j4 && cpack && cd ..; - env: - TEST_NAME="Small Set (gcc, automake)" CONFIG="--without-erlang --without-haskell --without-python --without-go --without-lua --without-d --without-ruby --without-nodejs --without-java" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH - cabal update script: - sh bootstrap.sh; - sh configure $CONFIG; - make check -j2; - env: - TEST_NAME="dist (gcc, automake)" CONFIG="" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; script: - sh bootstrap.sh; - sh configure $CONFIG; - make dist -j2; - env: - TEST_NAME="make cross (gcc, automake)" CONFIG="--without-python" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/installDependencies.sh 1> /dev/null; - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/1.20/bin:$PATH - cabal update script: - sh bootstrap.sh; - sh configure $CONFIG; - make cross -j2; - env: - TEST_NAME="Debian Packages" compiler: gcc before_install: - sh contrib/installCXXDependencies.sh; - sh contrib/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" script: grep -r TODO * # search for FIXME within source tree - env: TEST_NAME="FIXME" script: grep -r FIXME * # search for HACK within source tree - env: TEST_NAME="HACK" script: grep -r HACK * # some statistics about the code base - env: TEST_NAME="sloccount" script: sloccount . before_install: sudo apt-get install sloccount # some info about the build machine - env: TEST_NAME="info" script: - dpkg -l - uname -a # TODO make it perfect ;-r