| # Use travis docker infrastructure |
| sudo: false |
| language: cpp |
| |
| env: |
| global: |
| - PREFIX=$HOME/prefix |
| |
| compiler: |
| - gcc |
| - clang |
| |
| # Install a recent gcc and gcov, |
| # it will not be necessary once travis worker is based on ubuntu > 12.04. |
| # Install SWIG for bindings generation |
| # Install valgrind for memcheck tests |
| # Adding george-edison55-precise-backports ppa for for cmake 3.x. |
| # Install python3-dev for the client simulator |
| addons: |
| apt: |
| # Travis white list of ppa |
| # https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json |
| sources: |
| - ubuntu-toolchain-r-test |
| - george-edison55-precise-backports |
| - llvm-toolchain-precise |
| # Travis white list of dpkg packages |
| # https://github.com/travis-ci/apt-package-whitelist/blob/master/ubuntu-precise |
| packages: |
| - swig |
| - valgrind |
| - g++-4.8 |
| - cmake-data |
| - cmake |
| - python3-dev |
| - clang-format-3.8 |
| |
| install: |
| - wget https://codecov.io/bash -O $HOME/codecov; chmod +x $HOME/codecov |
| # This version of catch is known to work. |
| - wget --directory-prefix $PREFIX/include |
| https://raw.github.com/philsquared/Catch/v1.2.1/single_include/catch.hpp |
| - wget 'https://01.org/sites/default/files/asio-1.10.6.tar.gz' |
| - tar xf asio-1.10.6.tar.gz -C $PREFIX --strip-components=1 |
| |
| before_script: |
| - coverage=OFF |
| # Force the manualy installed 4.8 version as it is not the default |
| # Only enable coverage on gcc as clang segfault on coverage file write |
| - if [ "$CC" = "gcc" ]; then |
| export CC=gcc-4.8 CXX=g++-4.8; |
| coverage=ON; |
| fi |
| |
| # how to build |
| script: |
| # Check coding style |
| - git ls-files | grep -E '\.[ch](pp)?$' | xargs clang-format-3.8 -i && |
| git diff --exit-code || { git reset --hard; false; } |
| |
| - ( mkdir build_debug && cd build_debug && |
| cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Debug -DCOVERAGE=${coverage} .. && |
| make -j && |
| CTEST_OUTPUT_ON_FAILURE=1 make ExperimentalTest ExperimentalMemCheck ) |
| - ( mkdir build && cd build && |
| cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_BUILD_TYPE=Release .. && |
| make -j && |
| CTEST_OUTPUT_ON_FAILURE=1 make test && |
| make install && |
| cpack --verbose -G DEB && dpkg --info *.deb) |
| - ( cd skeleton-subsystem && |
| cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../install . && |
| make && |
| CTEST_OUTPUT_ON_FAILURE=1 make ExperimentalTest ExperimentalMemCheck && |
| make install ) |
| - ( cd tools/clientSimulator && |
| echo "TODO - install the generated .deb instead of using ../install." |
| "This would permit to test the packaging" && |
| cmake -DCMAKE_INSTALL_PREFIX=../install . && |
| make && |
| make install ) |
| # Keep this last |
| - ( mkdir build_less_features && cd build_less_features && |
| rm -rf $PREFIX/asio-1.10.6 && |
| cmake -DCMAKE_PREFIX_PATH=$PREFIX -DCMAKE_BUILD_TYPE=Debug |
| -DNETWORKING=OFF -DPYTHON_BINDINGS=OFF -DC_BINDINGS=OFF .. && |
| make -j && |
| CTEST_OUTPUT_ON_FAILURE=1 make test ) |
| |
| after_success: |
| # Push coverage info on codecov.io. |
| # Ignore generated files, samples and tests |
| - if [ "${coverage}" = "ON" ]; then |
| $HOME/codecov |
| -g "*/build_debug/bindings/python/*" |
| -g "*/build_debug/CMakeFiles/*" |
| -g "*/build/*" |
| -g "*/install/*" |
| -g "*/skeleton-subsystem/*" |
| -g "*/tools/clientSimulator/*" |
| -g "*/test/test-subsystem/*" |
| -g "*/test/introspection-subsystem/*" |
| -g "*/test/functional-tests/*" |
| -g "*/test/tmpfile/*" |
| -g "*/test/tokenizer/*" |
| -g "*/bindings/c/Test.cpp" |
| -g "*/utility/test/*" |
| -x /usr/bin/gcov-4.8 |
| -a '\--long-file-names --preserve-paths'; |
| fi |
| |
| notifications: |
| irc: |
| - "chat.freenode.net#parameter-framework" |