1# Copyright 2016 Peter Dimov 2# Copyright 2017, 2018 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/jeking3/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 25sudo: false 26dist: trusty 27language: cpp 28 29env: 30 global: 31 # see: http://www.boost.org/build/doc/html/bbv2/overview/invocation.html#bbv2.overview.invocation.properties 32 # to use the default for a given environment, comment it out; recommend you build debug and release however.. 33 # - B2_ADDRESS_MODEL=address-model=64,32 34 # - B2_LINK=link=shared,static 35 # - B2_THREADING=threading=multi,single 36 - B2_VARIANT=variant=release,debug 37 38install: 39 - git clone https://github.com/jeking3/boost-ci.git boost-ci 40 - cp -pr boost-ci/ci boost-ci/.codecov.yml . 41 - source ci/travis/install.sh 42 43addons: 44 apt: 45 packages: 46 - binutils-gold 47 - gdb 48 - libc6-dbg 49 50branches: 51 only: 52 - develop 53 - master 54 55script: 56 - cd $BOOST_ROOT/libs/$SELF 57 - ci/travis/build.sh 58 59# 60# Default toolsets in Ubuntu 61# 62# trusty xenial bionic 63# 14.04 16.04 18.04 64# ------ ------ ------ 65# clang 3.4 3.8 6.0 66# gcc 4.8.2 5.3.1 7.3.0 67# 68 69anchors: 70 clang-34: &clang-34 { apt: { packages: [ "clang-3.4" ], sources: [ "llvm-toolchain-trusty-3.4" ] } } 71 clang-38: &clang-38 { apt: { packages: [ "clang-3.8", 72 "libstdc++-6-dev" ], sources: [ "llvm-toolchain-trusty-3.8", 73 "ubuntu-toolchain-r-test" ] } } 74 clang-4: &clang-4 { apt: { packages: [ "clang-4.0", 75 "libstdc++-6-dev" ], sources: [ "llvm-toolchain-trusty-4.0", 76 "ubuntu-toolchain-r-test" ] } } 77 clang-5: &clang-5 { apt: { packages: [ "clang-5.0", 78 "libstdc++-7-dev" ], sources: [ "llvm-toolchain-trusty-5.0", 79 "ubuntu-toolchain-r-test" ] } } 80 clang-6: &clang-6 { apt: { packages: [ "clang-6.0", 81 "libc++-dev", 82 "libstdc++-8-dev", 83 "valgrind" ], sources: [ "llvm-toolchain-trusty-6.0", 84 "ubuntu-toolchain-r-test" ] } } 85 gcc-44: &gcc-44 { apt: { packages: [ "g++-4.4" ], sources: [ "ubuntu-toolchain-r-test" ] } } 86 gcc-46: &gcc-46 { apt: { packages: [ "g++-4.6" ], sources: [ "ubuntu-toolchain-r-test" ] } } 87 gcc-48: &gcc-48 { apt: { packages: [ "g++-4.8" ], sources: [ "ubuntu-toolchain-r-test" ] } } 88 gcc-5: &gcc-5 { apt: { packages: [ "g++-5" ], sources: [ "ubuntu-toolchain-r-test" ] } } 89 gcc-6: &gcc-6 { apt: { packages: [ "g++-6" ], sources: [ "ubuntu-toolchain-r-test" ] } } 90 gcc-7: &gcc-7 { apt: { packages: [ "g++-7" ], sources: [ "ubuntu-toolchain-r-test" ] } } 91 gcc-8: &gcc-8 { apt: { packages: [ "g++-8" ], sources: [ "ubuntu-toolchain-r-test" ] } } 92 93jobs: 94 allow_failures: 95 - env: 96 - COPY="all the environment settings from your job" 97 98 include: 99 # libstdc++ 100 - { os: "linux", env: [ "TOOLSET=gcc-4.4", "CXXSTD=98,0x" ], addons: *gcc-44 } 101 - { os: "linux", env: [ "TOOLSET=gcc-4.6", "CXXSTD=03,0x" ], addons: *gcc-46 } 102 - { os: "linux", env: [ "TOOLSET=gcc-4.8", "CXXSTD=03,11" ], addons: *gcc-48 } 103 - { os: "linux", env: [ "TOOLSET=gcc-5", "CXXSTD=03,11" ], addons: *gcc-5 } 104 - { os: "linux", env: [ "TOOLSET=gcc-6", "CXXSTD=03,11,14" ], addons: *gcc-6 } 105 - { os: "linux", env: [ "TOOLSET=gcc-7", "CXXSTD=03,11,14,17" ], addons: *gcc-7 } 106 - { os: "linux", env: [ "TOOLSET=gcc-8", "CXXSTD=03,11,14,17,2a" ], addons: *gcc-8 } 107 - { os: "linux", env: [ "TOOLSET=clang-3.4", "CXXSTD=03,11" ], addons: *clang-34 } 108 - { os: "linux", env: [ "TOOLSET=clang-3.8", "CXXSTD=03,11,14" ], addons: *clang-38 } 109 - { os: "linux", env: [ "TOOLSET=clang-4.0", "CXXSTD=03,11,14" ], addons: *clang-4 } 110 - { os: "linux", env: [ "TOOLSET=clang-5.0", "CXXSTD=03,11,14,17" ], addons: *clang-5 } 111 - { os: "linux", env: [ "TOOLSET=clang-6.0", "CXXSTD=03,11,14,17,2a" ], addons: *clang-6 } 112 # libc++ 113 - { os: "linux", env: [ "TOOLSET=clang-6.0", "CXXSTD=03,11,14,17,2a", 114 "CXXFLAGS=-stdlib=libc++" ], addons: *clang-6 } 115 # the rvm environment on osx is taking over basic commands like "cd" and breaking things! 116 # - { os: "osx" , env: [ "COMMENT=libc++", 117 # "TOOLSET=clang", "CXXSTD=03,11,14" ] } 118 119 - os: linux 120 env: 121 - COMMENT=codecov.io 122 - TOOLSET=gcc-7 123 - DEFINES="define=BOOST_NO_STRESS_TEST=1" 124 addons: *gcc-7 125 script: 126 - pushd /tmp && git clone https://github.com/linux-test-project/lcov.git && export PATH=/tmp/lcov/bin:$PATH && which lcov && lcov --version && popd 127 - cd $BOOST_ROOT/libs/$SELF 128 - ci/travis/codecov.sh 129 130 - os: linux 131 env: 132 - COMMENT=cppcheck 133 script: 134 - cd $BOOST_ROOT/libs/$SELF 135 - ci/travis/cppcheck.sh 136 137 - os: linux 138 env: 139 - COMMENT=ubsan 140 - B2_VARIANT=variant=debug 141 - TOOLSET=gcc-8 142 - CXXSTD=03,11,14,17,2a 143 - DEFINES="define=BOOST_NO_STRESS_TEST=1" 144 - CXXFLAGS="cxxflags=-fno-omit-frame-pointer cxxflags=-fsanitize=undefined cxxflags=-fno-sanitize-recover=undefined" 145 - LINKFLAGS="linkflags=-fsanitize=undefined linkflags=-fno-sanitize-recover=undefined linkflags=-fuse-ld=gold" 146 - UBSAN_OPTIONS=print_stacktrace=1 147 addons: *gcc-8 148 149 - os: linux 150 env: 151 - COMMENT=valgrind 152 - TOOLSET=clang-6.0 153 - CXXSTD=03,11,14,17,2a 154 - DEFINES="define=BOOST_NO_STRESS_TEST=1" 155 - B2_VARIANT=variant=debug 156 - TESTFLAGS=testing.launcher=valgrind 157 - VALGRIND_OPTS=--error-exitcode=1 158 addons: *clang-6 159 160 #################### Jobs to run on pushes to master, develop ################### 161 162 # Coverity Scan 163 - os: linux 164 if: (env(COVERITY_SCAN_NOTIFICATION_EMAIL) IS present) AND (branch IN (develop, master)) AND (type IN (cron, push)) 165 env: 166 - COMMENT="Coverity Scan" 167 - TOOLSET=gcc-7 168 addons: *gcc-7 169 script: 170 - cd $BOOST_ROOT/libs/$SELF 171 - ci/travis/coverity.sh 172 173notifications: 174 email: 175 false 176