File: .travis.yml

package info (click to toggle)
boost1.74 1.74.0-9
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 464,084 kB
  • sloc: cpp: 3,338,324; xml: 131,293; python: 33,088; ansic: 14,336; asm: 4,034; sh: 3,351; makefile: 1,193; perl: 1,036; yacc: 478; php: 212; ruby: 102; lisp: 24; sql: 13; csh: 6
file content (161 lines) | stat: -rw-r--r-- 8,055 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
# Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#
# Copyright Antony Polukhin 2014-2020.

#
# 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 #10

language: cpp
os: linux

# `--coverage` flags required to generate coverage info for Coveralls
matrix:
  include:
    - env: B2_ARGS='cxxstd=98,03,11,14,1y toolset=gcc-6 cxxflags="--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined -DBOOST_TRAVISCI_BUILD -fno-rtti" linkflags="--coverage -lasan -lubsan" "testing.launcher=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.3"'
      name: "GCC-6, no RTTI"
      addons:
        apt:
          sources: ubuntu-toolchain-r-test
          packages: g++-6

    - env: B2_ARGS='cxxstd=98,03,11,14,1z toolset=gcc-8 cxxflags="--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined -DBOOST_TRAVISCI_BUILD" linkflags="--coverage  -lasan -lubsan" "testing.launcher=LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libasan.so.5"'
      name: "GCC-8"
      sudo: required # Required by leak sanitizer
      addons:
        apt:
          sources: ubuntu-toolchain-r-test
          packages: g++-8

    - env: B2_ARGS='cxxstd=98,0x toolset=gcc-4.6 cxxflags="--coverage -DBOOST_TRAVISCI_BUILD" linkflags="--coverage"'
      name: "GCC-4.6"
      addons:
        apt:
          sources: ubuntu-toolchain-r-test
          packages: g++-4.6

#    - env: B2_ARGS='cxxstd=98,03,11,14,1y toolset=gcc-8 cxxflags="--coverage -fsanitize=address,leak,undefined -fno-sanitize-recover=undefined -DBOOST_TRAVISCI_BUILD -fno-exceptions" linkflags="--coverage -lasan -lubsan"'
#      name: "GCC-8, no exceptions"
#      sudo: required # Required by leak sanitizer
#      addons:
#        apt:
#          sources: ubuntu-toolchain-r-test
#          packages: g++-8

    # Not running UBSan because it gives an error for some tests:
    # test_impl.cpp:14:16: runtime error: call to function (unknown) through pointer to incorrect function type 'std::pair<stacktrace, stacktrace> (*)(int)'
    - env: B2_ARGS='cxxstd=98,03,11,14,1z toolset=clang-8 cxxflags="--coverage -fsanitize=address,leak -DBOOST_TRAVISCI_BUILD" linkflags="--coverage -fsanitize=address,leak"'
      name: "Clang-8"
      sudo: required # Required by leak sanitizer
      addons:
        apt:
          sources: llvm-toolchain-trusty-8
          packages: clang-8

    # Sanitizers disabled for this toolset as they started causing link troubles: 
    # hidden symbol `_ZNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEE11__recommendEm' isn't defined
    - env: B2_ARGS='cxxstd=03,11,14 toolset=clang-libc++ cxxflags="--coverage -DBOOST_TRAVISCI_BUILD" linkflags="--coverage"'
      name: "Clang-3.8, libc++"
      addons:
        apt:
          packages: libc++-dev

###############################################################################################################
# From this point and below code is same for all the Boost libs
###############################################################################################################

# Installing additional tools
addons:
  apt:
    sources: git-core
    packages:
    - git
    - python-yaml
    - binutils  # for addr2line tests of Boost.Stacktrace

before_install:
  # Autodetect Boost branch by using the following code: - BOOST_BRANCH=$TRAVIS_BRANCH
  # or just directly specify it
  - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true

  # Files, which coverage results must be ignored (files from other projects).
  # Example: - IGNORE_COVERAGE='*/boost/progress.hpp */filesystem/src/*'
  - IGNORE_COVERAGE='*/filesystem/src/* */thread/src/pthread/* */thread/src/future.cpp */timer/src/* operators.hpp'

  # boost-local/libs/ folder to put this library into. This may be useful, if you're for example running Travis
  # from `Boost.DLL` repo while Boost already has `dll` and with to replace `dll` with content of`Boost.DLL`.
  #
  # Otherwise just leave the default value - BOOST_LIBS_FOLDER=$(basename $TRAVIS_BUILD_DIR)
  - BOOST_LIBS_FOLDER=$(basename $TRAVIS_BUILD_DIR)

  # Global options for sanitizers
  - UBSAN_OPTIONS=print_stacktrace=1
  - LSAN_OPTIONS=verbosity=1:log_threads=1
  # Cloning minimal set of Boost libraries
  - BOOST=$HOME/boost-local
  - git clone -b $BOOST_BRANCH --depth 10 https://github.com/boostorg/boost.git $BOOST
  - cd $BOOST
  - git submodule update --init --depth 10 --jobs 2 tools/build tools/boostdep tools/inspect libs/filesystem libs/interprocess  # Boost.Interprocess is required for examples
  - python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 2" $BOOST/libs/filesystem

  # Replacing Boost module with this project and installing Boost dependencies
  - echo "Testing $BOOST/libs/$BOOST_LIBS_FOLDER moved from $TRAVIS_BUILD_DIR, branch $BOOST_BRANCH"
  - rm -rf $BOOST/libs/$BOOST_LIBS_FOLDER || true
  - mv $TRAVIS_BUILD_DIR $BOOST/libs/$BOOST_LIBS_FOLDER
  - python tools/boostdep/depinst/depinst.py --git_args "--depth 10 --jobs 2" $BOOST_LIBS_FOLDER
  - git status

  # Adding missing toolsets and preparing Boost headers
  - ./bootstrap.sh
  - ./b2 headers
  - ./b2 -j4 variant=debug tools/inspect/build
  - |-
    echo "using gcc ;" >> ~/user-config.jam
    echo "using clang ;" >> ~/user-config.jam
    echo "using clang : 3.8 : clang++-3.8 ;" >> ~/user-config.jam
    echo "using clang : 4 : clang++-4.0 ;" >> ~/user-config.jam
    echo "using clang : 5 : clang++-5.0 ;" >> ~/user-config.jam
    echo "using clang : 6 : clang++-6.0 ;" >> ~/user-config.jam
    echo "using clang : 7 : clang++-7.0 ;" >> ~/user-config.jam
    echo "using clang : 8 : clang++-8 ;" >> ~/user-config.jam
    echo "using clang : libc++ : clang++-libc++ ;" >> ~/user-config.jam
  - cd $BOOST/libs/$BOOST_LIBS_FOLDER/test/

script:
  - sh -c "../../../b2 -j2 $B2_ARGS"
  # inspect tool run without -link and checks
  - ../../../dist/bin/inspect .. -license -copyright -crlf -end -path_name -tab -ascii -apple_macro -deprecated_macro -minmax -unnamed -assert_macro


after_success:
  # Copying Coveralls data to a separate folder
  - 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/ \;
  - find ../../../bin.v2/ -name "*.da" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \;
  - find ../../../bin.v2/ -name "*.no" -exec cp "{}" $TRAVIS_BUILD_DIR/coverals/ \;
  - wget https://github.com/linux-test-project/lcov/archive/v1.12.zip
  - unzip v1.12.zip
  - LCOV="`pwd`/lcov-1.12/bin/lcov --gcov-tool gcov-6"

  # Preparing Coveralls data by changind data format to a readable one
  - echo "$LCOV --directory $TRAVIS_BUILD_DIR/coverals --base-directory `pwd` --capture --output-file $TRAVIS_BUILD_DIR/coverals/coverage.info"
  - $LCOV --directory $TRAVIS_BUILD_DIR/coverals --base-directory `pwd` --capture --output-file $TRAVIS_BUILD_DIR/coverals/coverage.info

  # ... erasing /test/ /example/ folder data
  - cd $BOOST
  - $LCOV --remove $TRAVIS_BUILD_DIR/coverals/coverage.info "/usr*" "*/$BOOST_LIBS_FOLDER/test/*" $IGNORE_COVERAGE "*/$BOOST_LIBS_FOLDER/tests/*" "*/$BOOST_LIBS_FOLDER/examples/*" "*/$BOOST_LIBS_FOLDER/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\/$BOOST_LIBS_FOLDER\/\*\"/d" | sed ':a;N;$!ba;s/\n/ /g'`
  - echo $OTHER_LIBS
  - eval "$LCOV --remove $TRAVIS_BUILD_DIR/coverals/coverage.info $OTHER_LIBS -o $TRAVIS_BUILD_DIR/coverals/coverage.info"

  # Sending data to Coveralls
  - cd $TRAVIS_BUILD_DIR
  - gem install coveralls-lcov
  - coveralls-lcov coverals/coverage.info