Home | History | Annotate | Download | only in upstream
      1 # Use travis docker infrastructure
      2 sudo: false
      3 language: cpp
      4 
      5 env:
      6     global:
      7         - PREFIX=$HOME/prefix
      8 
      9 compiler:
     10     - gcc
     11     - clang
     12 
     13 # Install a recent gcc and gcov,
     14 # it will not be necessary once travis worker is based on ubuntu > 12.04.
     15 # Install SWIG for bindings generation
     16 # Install valgrind for memcheck tests
     17 # Adding george-edison55-precise-backports ppa for for cmake 3.x.
     18 # Install python3-dev for the client simulator
     19 addons:
     20     apt:
     21         # Travis white list of ppa
     22         # https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
     23         sources:
     24             - ubuntu-toolchain-r-test
     25             - george-edison55-precise-backports
     26             - llvm-toolchain-precise
     27         # Travis white list of dpkg packages
     28         # https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise
     29         packages:
     30             - swig
     31             - valgrind
     32             - g++-4.8
     33             - cmake-data
     34             - cmake
     35             - python3-dev
     36             - clang-format-3.8
     37 
     38 install:
     39     - wget https://codecov.io/bash -O $HOME/codecov; chmod +x $HOME/codecov
     40     # This version of catch is known to work.
     41     - wget --directory-prefix $PREFIX/include
     42               https://raw.github.com/philsquared/Catch/v1.2.1/single_include/catch.hpp
     43     - wget 'https://01.org/sites/default/files/asio-1.10.6.tar.gz'
     44     - tar xf asio-1.10.6.tar.gz -C $PREFIX --strip-components=1
     45 
     46 before_script:
     47     - coverage=OFF
     48     # Force the manualy installed 4.8 version as it is not the default
     49     # Only enable coverage on gcc as clang segfault on coverage file write
     50     - if [ "$CC" = "gcc" ]; then
     51           export CC=gcc-4.8 CXX=g++-4.8;
     52           coverage=ON;
     53       fi
     54 
     55 # how to build
     56 script:
     57   # Check coding style
     58   - git ls-files | grep -E '\.[ch](pp)?$' |  xargs clang-format-3.8 -i &&
     59         git diff --exit-code || { git reset --hard; false; }
     60 
     61   - ( mkdir build_debug && cd build_debug &&
     62         cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=${coverage} .. &&
     63         make -j &&
     64         CTEST_OUTPUT_ON_FAILURE=1 make ExperimentalTest ExperimentalMemCheck )
     65   - ( mkdir build && cd build &&
     66         cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release .. &&
     67         make -j &&
     68         CTEST_OUTPUT_ON_FAILURE=1 make test &&
     69         make install &&
     70         cpack --verbose -G DEB && dpkg --info *.deb)
     71   - ( cd skeleton-subsystem &&
     72         cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install . &&
     73         make &&
     74         CTEST_OUTPUT_ON_FAILURE=1 make ExperimentalTest ExperimentalMemCheck &&
     75         make install )
     76   - ( cd tools/clientSimulator &&
     77         echo "TODO - install the generated .deb instead of using ../install."
     78              "This would permit to test the packaging" &&
     79         cmake -DCMAKE_INSTALL_PREFIX=../install . &&
     80         make &&
     81         make install )
     82   # Keep this last
     83   - ( mkdir build_less_features && cd build_less_features &&
     84         rm -rf $PREFIX/asio-1.10.6 &&
     85         cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Debug
     86         -DNETWORKING=OFF -DPYTHON_BINDINGS=OFF -DC_BINDINGS=OFF .. &&
     87         make -j &&
     88         CTEST_OUTPUT_ON_FAILURE=1 make test )
     89 
     90 after_success:
     91     # Push coverage info on codecov.io.
     92     # Ignore generated files, samples and tests
     93     - if [ "${coverage}" = "ON" ]; then
     94           $HOME/codecov
     95                -g "*/build_debug/bindings/python/*"
     96                -g "*/build_debug/CMakeFiles/*"
     97                -g "*/build/*"
     98                -g "*/install/*"
     99                -g "*/skeleton-subsystem/*"
    100                -g "*/tools/clientSimulator/*"
    101                -g "*/test/test-subsystem/*"
    102                -g "*/test/introspection-subsystem/*"
    103                -g "*/test/functional-tests/*"
    104                -g "*/test/tmpfile/*"
    105                -g "*/test/tokenizer/*"
    106                -g "*/bindings/c/Test.cpp"
    107                -g "*/utility/test/*"
    108                -x /usr/bin/gcov-4.8
    109                -a '\--long-file-names --preserve-paths';
    110       fi
    111 
    112 notifications:
    113   irc:
    114     - "chat.freenode.net#parameter-framework"
    115