From 236fdc8dba1a9cdcc96fcbada7fb20d8b27be526 Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Tue, 5 Jan 2016 16:39:43 +0300 Subject: [PATCH] Update .travisci to use non-sudo approach --- .travis.yml | 83 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/.travis.yml b/.travis.yml index acbc2b9..a3a464c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,32 +8,57 @@ # See https://svn.boost.org/trac/boost/wiki/TravisCoverals for description of this file # and how it can be used with Boost libraries. # +# File revision #5 +sudo: false language: cpp +compiler: + - gcc +# - clang + os: - linux env: - - CXX_STANDARD=c++98 - - CXX_STANDARD=c++0x + global: + # Autodetect Boost branch by using the following code: - BRANCH_TO_TEST=$TRAVIS_BRANCH + # or just directly specify it + - BRANCH_TO_TEST=$TRAVIS_BRANCH -before_install: - # Set this to the name of your Boost library - # Autodetect library name by using the following code: - PROJECT_TO_TEST=$(basename $(pwd)) - - PROJECT_TO_TEST=$(basename $(pwd)) + # Files, which coverage results must be ignored (files from other projects). + # Example: - IGNORE_COVERAGE='*/boost/progress.hpp */filesystem/src/*' + - IGNORE_COVERAGE='' + + # Explicitly remove the following library from Boost. This may be usefull, if you're for example running Travis + # from `Boost.DLL` repo, while Boost already has `dll`. + # + # By default is eaual to - BOOST_REMOVE=$(basename $TRAVIS_BUILD_DIR) + # This will force to use local repo content, instead of the Boost's default. + - BOOST_REMOVE=$(basename $TRAVIS_BUILD_DIR) + + matrix: + - CXX_STANDARD=c++98 + - CXX_STANDARD=c++0x - # Autodetect Boost branch by using the following code: - BRANCH_TO_TEST=`git rev-parse --abbrev-ref HEAD` - # or by - BRANCH_TO_TEST=$TRAVIS_BRANCH or just directly specify it - - BRANCH_TO_TEST=$TRAVIS_BRANCH +############################################################################################################### +# From this point and below code is same for all the Boost libs +############################################################################################################### - # Files, which coverage results must be ignored (files from other projects). Example: - IGNORE_COVERAGE='*/boost/progress.hpp */filesystem/src/path.cpp' - - IGNORE_COVERAGE='*/boost/progress.hpp */filesystem/src/path.cpp */numeric/conversion/converter_policies.hpp' +# Installing additional tools +addons: + apt: + packages: + - valgrind + - python-yaml + - lcov - # From this point and below code is same for all the Boost libs +before_install: + # Set this to the name of the library + - PROJECT_TO_TEST=`basename $TRAVIS_BUILD_DIR` # Cloning Boost libraries (fast nondeep cloning) - - PROJECT_DIR=`pwd` - BOOST=$HOME/boost-local + - echo "Testing $PROJECT_TO_TEST, to remove $BOOST/libs/$BOOST_REMOVE, testing branch $BRANCH_TO_TEST" - git init $BOOST - cd $BOOST - git remote add --no-tags -t $BRANCH_TO_TEST origin https://github.com/boostorg/boost.git @@ -47,42 +72,36 @@ before_install: - git submodule foreach "git reset --quiet --hard; git clean -fxd" - git reset --hard; git clean -fxd - git status - - rm -rf $BOOST/libs/$PROJECT_TO_TEST - - mv $PROJECT_DIR/../$PROJECT_TO_TEST/ $BOOST/libs/$PROJECT_TO_TEST - - PROJECT_DIR=$BOOST/libs/$PROJECT_TO_TEST + - rm -rf $BOOST/libs/$BOOST_REMOVE + - mv $TRAVIS_BUILD_DIR $BOOST/libs/$PROJECT_TO_TEST + - TRAVIS_BUILD_DIR=$BOOST/libs/$PROJECT_TO_TEST - ./bootstrap.sh - ./b2 headers - - sudo apt-get update -qq - - sudo apt-get install -qq valgrind + - cd $BOOST/libs/$PROJECT_TO_TEST/test/ script: - - if [ "$CCFLAGS" != "" ]; then FLAGS="cxxflags=\"$CCFLAGS\" linkflags=\"$LINKFLAGS\""; else FLAGS=""; fi - - cd $BOOST/libs/$PROJECT_TO_TEST/test/ # `--coverage` flags required to generate coverage info for Coveralls - - ../../../b2 testing.launcher=valgrind cxxflags="--coverage -std=$CXX_STANDARD" linkflags="--coverage" + - ../../../b2 testing.launcher=valgrind address-model=64 architecture=x86 toolset=$CC cxxflags="--coverage -DBOOST_TRAVISCI_BUILD -std=$CXX_STANDARD" linkflags="--coverage" after_success: # Copying Coveralls data to a separate folder - - mkdir -p $PROJECT_DIR/coverals - - find ../../../bin.v2/ -name "*.gcda" -exec cp "{}" $PROJECT_DIR/coverals/ \; - - find ../../../bin.v2/ -name "*.gcno" -exec cp "{}" $PROJECT_DIR/coverals/ \; + - mkdir -p $TRAVIS_BUILD_DIR/coverals + - find ../../../bin.v2/ -name "*.gcda" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; + - find ../../../bin.v2/ -name "*.gcno" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \; - # Preparing Coveralls data by - # ... installing the tools - - sudo apt-get install -qq python-yaml lcov - # ... changind data format to a readable one - - lcov --directory $PROJECT_DIR/coverals --base-directory ./ --capture --output-file $PROJECT_DIR/coverals/coverage.info + # Preparing Coveralls data by changind data format to a readable one + - lcov --directory $TRAVIS_BUILD_DIR/coverals --base-directory ./ --capture --output-file $TRAVIS_BUILD_DIR/coverals/coverage.info # ... erasing /test/ /example/ folder data - cd $BOOST - - lcov --remove $PROJECT_DIR/coverals/coverage.info "/usr*" "*/$PROJECT_TO_TEST/test/*" $IGNORE_COVERAGE "*/$PROJECT_TO_TEST/tests/*" "*/$PROJECT_TO_TEST/examples/*" "*/$PROJECT_TO_TEST/example/*" -o $PROJECT_DIR/coverals/coverage.info + - lcov --remove $TRAVIS_BUILD_DIR/coverals/coverage.info "/usr*" "*/$PROJECT_TO_TEST/test/*" $IGNORE_COVERAGE "*/$PROJECT_TO_TEST/tests/*" "*/$PROJECT_TO_TEST/examples/*" "*/$PROJECT_TO_TEST/example/*" -o $TRAVIS_BUILD_DIR/coverals/coverage.info # ... erasing data that is not related to this project directly - OTHER_LIBS=`grep "submodule .*" .gitmodules | sed 's/\[submodule\ "\(.*\)"\]/"\*\/boost\/\1\.hpp" "\*\/boost\/\1\/\*"/g'| sed "/\"\*\/boost\/$PROJECT_TO_TEST\/\*\"/d" | sed ':a;N;$!ba;s/\n/ /g'` - echo $OTHER_LIBS - - eval "lcov --remove $PROJECT_DIR/coverals/coverage.info $OTHER_LIBS -o $PROJECT_DIR/coverals/coverage.info" + - eval "lcov --remove $TRAVIS_BUILD_DIR/coverals/coverage.info $OTHER_LIBS -o $TRAVIS_BUILD_DIR/coverals/coverage.info" # Sending data to Coveralls - - cd $PROJECT_DIR + - cd $TRAVIS_BUILD_DIR - gem install coveralls-lcov - coveralls-lcov coverals/coverage.info