• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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