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