1# Copyright 2016 Peter Dimov 2# Copyright 2017 - 2019 James E. King III 3# Distributed under the Boost Software License, Version 1.0. 4# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt) 5 6# 7# Generic Travis CI build script for boostorg repositories 8# See: https://github.com/boostorg/boost-ci 9# 10# Instructions for customizing this script for your library: 11# 12# 1. Customize the compilers and language levels you want in the 'jobs'. 13# 2. If you have more than include/, src/, test/, example/, examples/, or 14# tools/ directories, modify your Travis CI project and add the environment 15# variable DEPINST. For example if your build uses code in "bench/" and 16# "fog/" directories, then set DEPINST to the following: 17# --include bench --include fog 18# 3. If you want to enable Coverity Scan, you need to provide the environment 19# variables COVERITY_SCAN_TOKEN and COVERITY_SCAN_NOTIFICATION_EMAIL in 20# your github settings. 21# 4. Enable pull request builds in your boostorg/<library> account. 22# 23# That's it - the scripts will do everything else for you. 24 25dist: xenial 26language: cpp 27 28env: 29 global: 30 # see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties 31 # - B2_ADDRESS_MODEL=address-model=64,32 32 # - B2_LINK=link=shared,static 33 # - B2_THREADING=threading=multi,single 34 - B2_VARIANT=variant=release 35 36install: 37 - git clone https://github.com/boostorg/boost-ci.git boost-ci 38 - cp -pr boost-ci/ci boost-ci/.codecov.yml . 39 - source ci/travis/install.sh 40 41addons: 42 apt: 43 packages: 44 - binutils-gold 45 - gdb 46 - libc6-dbg 47 48branches: 49 only: 50 - master 51 - develop 52 - /bugfix\/.*/ 53 - /feature\/.*/ 54 - /fix\/.*/ 55 - /pr\/.*/ 56 57script: 58 - cd $BOOST_ROOT/libs/$SELF 59 - ci/travis/build.sh 60 61# 62# Default toolsets in Ubuntu 63# 64# trusty xenial bionic 65# 14.04 16.04 18.04 66# ------ ------ ------ 67# clang 3.4 3.8 6.0 68# gcc 4.8.2 5.3.1 7.3.0 69# 70 71anchors: 72 clang-38: &clang-38 { apt: { packages: [ "clang-3.8", 73 "libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-3.8", 74 "ubuntu-toolchain-r-test" ] } } 75 clang-4: &clang-4 { apt: { packages: [ "clang-4.0", 76 "libstdc++-6-dev" ], sources: [ "llvm-toolchain-xenial-4.0", 77 "ubuntu-toolchain-r-test" ] } } 78 clang-5: &clang-5 { apt: { packages: [ "clang-5.0", 79 "libstdc++-7-dev" ], sources: [ "llvm-toolchain-xenial-5.0", 80 "ubuntu-toolchain-r-test" ] } } 81 clang-6: &clang-6 { apt: { packages: [ "clang-6.0", 82 "libc6-dbg", 83 "libc++-dev", 84 "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-6.0", 85 "ubuntu-toolchain-r-test" ] } } 86 clang-7: &clang-7 { apt: { packages: [ "clang-7", 87 "libc6-dbg", 88 "libc++-dev", 89 "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-7", 90 "ubuntu-toolchain-r-test" ] } } 91 clang-8: &clang-8 { apt: { packages: [ "clang-8", 92 "libc6-dbg", 93 "libc++-dev", 94 "libstdc++-8-dev" ], sources: [ "llvm-toolchain-xenial-8", 95 "ubuntu-toolchain-r-test" ] } } 96 gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ] } } 97 gcc-49: &gcc-49 { apt: { packages: [ "g++-4.9" ], sources: [ "ubuntu-toolchain-r-test" ] } } 98 gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ] } } 99 gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ "ubuntu-toolchain-r-test" ] } } 100 gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ "ubuntu-toolchain-r-test" ] } } 101 gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ "ubuntu-toolchain-r-test" ] } } 102 gcc-9: &gcc-9 { apt: { packages: [ "g++-9" ], sources: [ "ubuntu-toolchain-r-test" ] } } 103 104jobs: 105 allow_failures: 106 # https://github.com/boostorg/date_time/issues/111 107 - env: 108 - COMMENT=ubsan 109 - B2_VARIANT=variant=debug 110 - B2_TOOLSET=gcc-8 111 - B2_CXXSTD=03,11,14 112 - B2_CXXFLAGS="undefined-sanitizer=norecover" 113 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 114 - B2_LINKFLAGS="linkflags=-fuse-ld=gold" 115 - UBSAN_OPTIONS=print_stacktrace=1 116 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 117 118 include: 119 # libstdc++ 120 - { os: "linux", dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI 121 env: [ "B2_TOOLSET=gcc-4.8", "B2_CXXSTD=03,11", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-48 } 122 - { os: "linux", dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI 123 env: [ "B2_TOOLSET=gcc-4.9", "B2_CXXSTD=03,11", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-49 } 124 - { os: "linux", env: [ "B2_TOOLSET=gcc-5", "B2_CXXSTD=03,11" ], addons: *gcc-5 } 125 - { os: "linux", env: [ "B2_TOOLSET=gcc-6", "B2_CXXSTD=11,14", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-6 } 126 - { os: "linux", env: [ "B2_TOOLSET=gcc-7", "B2_CXXSTD=14,17", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-7 } 127 - { os: "linux", env: [ "B2_TOOLSET=gcc-8", "B2_CXXSTD=17,2a", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-8 } 128 - { os: "linux", env: [ "B2_TOOLSET=gcc-9", "B2_CXXSTD=17,2a", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *gcc-9 } 129 - { os: "linux", dist: "trusty", # xenial has libstdc++ from gcc 5.4.0 with newer ABI 130 env: [ "B2_TOOLSET=clang-3.8", "B2_CXXSTD=03,11", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-38 } 131 - { os: "linux", env: [ "B2_TOOLSET=clang-4.0", "B2_CXXSTD=11,14", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-4 } 132 - { os: "linux", env: [ "B2_TOOLSET=clang-5.0", "B2_CXXSTD=11,14", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-5 } 133 - { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=14,17", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-6 } 134 - { os: "linux", env: [ "B2_TOOLSET=clang-7", "B2_CXXSTD=17,2a", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-7 } 135 - { os: "linux", env: [ "B2_TOOLSET=clang-8", "B2_CXXSTD=17,2a", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ], addons: *clang-8 } 136 137 # libc++ 138 - { os: "linux", env: [ "B2_TOOLSET=clang-6.0", "B2_CXXSTD=03,11,14", 139 "B2_CXXFLAGS=-stdlib=libc++" ], addons: *clang-6 } 140 - { os: "osx" , env: [ "B2_TOOLSET=clang", "B2_CXXSTD=03,11,17", "BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1" ] } 141 142 # to enable Intel ICC define INTEL_ICC_SERIAL_NUMBER and the following: 143 # - { os: "linux", env: [ "B2_TOOLSET=intel-linux", "B2_CXXSTD=11,14,17" ], addons: *gcc-7, 144 # script: cd $BOOST_ROOT/libs/$SELF && ci/travis/intelicc.sh } 145 146 - os: linux 147 env: 148 - COMMENT=codecov.io 149 - B2_CXXSTD=03,11 150 - B2_TOOLSET=gcc-8 151 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 152 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 153 addons: *gcc-8 154 script: 155 - cd $BOOST_ROOT/libs/$SELF 156 - ci/travis/codecov.sh 157 158 - os: linux 159 env: 160 - COMMENT=asan 161 - B2_VARIANT=variant=debug 162 - B2_TOOLSET=gcc-8 163 - B2_CXXSTD=03,11,14 164 - B2_CXXFLAGS="address-sanitizer=norecover" 165 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 166 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 167 addons: *gcc-8 168 169 - os: linux 170 env: 171 - COMMENT=tsan 172 - B2_VARIANT=variant=debug 173 - B2_TOOLSET=gcc-8 174 - B2_CXXSTD=03,11,14 175 - B2_CXXFLAGS="thread-sanitizer=norecover" 176 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 177 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 178 addons: *gcc-8 179 180 - os: linux 181 env: 182 - COMMENT=ubsan 183 - B2_VARIANT=variant=debug 184 - B2_TOOLSET=gcc-8 185 - B2_CXXSTD=03,11,14 186 - B2_CXXFLAGS="undefined-sanitizer=norecover" 187 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 188 # https://github.com/boostorg/build/issues/451 using the gold linker to work around an issue 189 - B2_LINKFLAGS="linkflags=-fuse-ld=gold" 190 - UBSAN_OPTIONS=print_stacktrace=1 191 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 192 addons: *gcc-8 193 194 - os: linux 195 env: 196 - COMMENT=valgrind 197 - B2_TOOLSET=clang-6.0 198 - B2_CXXSTD=03,11,14 199 - B2_DEFINES="define=BOOST_NO_STRESS_TEST=1" 200 - B2_VARIANT=variant=debug 201 - B2_TESTFLAGS=testing.launcher=valgrind 202 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 203 - VALGRIND_OPTS=--error-exitcode=1 204 addons: *clang-6 205 script: 206 - cd $BOOST_ROOT/libs/$SELF 207 - ci/travis/valgrind.sh 208 209 # - os: linux 210 # env: 211 # - COMMENT=cppcheck 212 # script: 213 # - cd $BOOST_ROOT/libs/$SELF 214 # - ci/travis/cppcheck.sh 215 216 #################### Jobs to run on pushes to master, develop ################### 217 218 # Coverity Scan 219 - os: linux 220 if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (develop, master)) AND (type IN (cron, push)) 221 env: 222 - COMMENT="Coverity Scan" 223 - B2_TOOLSET=clang 224 - BOOST_DATE_TIME_TEST_WITHOUT_SELF_CONTAINED_HEADER_TESTS=1 225 script: 226 - cd $BOOST_ROOT/libs/$SELF 227 - ci/travis/coverity.sh 228 229notifications: 230 email: 231 false 232