Skip to content

Commit d66156a

Browse files
authored
Added builds for new compilers and restructured old ones (#495)
* Added coverage to fill the gaps between compiler versions for clang and gcc under Linux * Added clang-19 and clang-20 builds * Added a gcc-15 build * Replaced the old clang 3.6 build by clang 3.8 close #478 close #477 close #476
1 parent 0e5f42a commit d66156a

4 files changed

Lines changed: 46 additions & 35 deletions

File tree

.drone.star

Lines changed: 40 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -302,29 +302,49 @@ def main(ctx):
302302
find_package_b2_linux('Linux find_package b2 distribution'),
303303
find_package_b2_windows('Windows find_package b2 distribution'),
304304

305-
# B2 Linux
306-
# linux_b2('Linux B2 clang-3.6', _image('build-clang3_6'), toolset='clang-3.6', cxxstd='11,14'),
307-
linux_b2('Linux B2 clang-7', _image('build-clang7:1'), toolset='clang-7', cxxstd='14,17'),
308-
linux_b2('Linux B2 clang-11', _image('build-clang11:1'), toolset='clang-11', cxxstd='20'),
309-
linux_b2('Linux B2 clang-14-header-only1',_image('build-clang14:1'), toolset='clang-14', cxxstd='11', separate_compilation=0),
310-
linux_b2('Linux B2 clang-14-header-only2',_image('build-clang14:1'), toolset='clang-14', cxxstd='20', separate_compilation=0),
311-
linux_b2('Linux B2 clang-14-libc++', _image('build-clang14:1'), toolset='clang-14', cxxstd='20', stdlib='libc++'),
312-
linux_b2('Linux B2 clang-14-arm64', _image('build-clang14:1'), toolset='clang-14', cxxstd='20', arch='arm64'),
313-
linux_b2('Linux B2 clang-16-sanit', _image('build-clang16:1'), toolset='clang-16', cxxstd='20', address_sanitizer=1, undefined_sanitizer=1),
314-
linux_b2('Linux B2 clang-16-i386-sanit', _image('build-clang16-i386:1'), toolset='clang-16', cxxstd='20', address_model='32', address_sanitizer=1, undefined_sanitizer=1),
315-
linux_b2('Linux B2 clang-17', _image('build-clang17:1'), toolset='clang-17', cxxstd='20'),
316-
linux_b2('Linux B2 clang-18', _image('build-clang18:1'), toolset='clang-18', cxxstd='23'),
305+
# B2 Linux. Please try to keep this below 3 configurations per build so CI doesn't take forever
306+
# Default Ubuntu compilers:
307+
# Ubuntu 16.04: gcc5, clang 3.8
308+
# Ubuntu 18.04: gcc7, clang 7
309+
# Ubuntu 20.04: gcc9, clang 10
310+
# Ubuntu 22.04: gcc11, clang 14
311+
# Ubuntu 24.04: gcc13, clang 18
312+
linux_b2('Linux B2 clang-4', _image('build-clang4:1'), toolset='clang-4', cxxstd='14'),
313+
linux_b2('Linux B2 clang-5-honly-dbg', _image('build-clang5:1'), toolset='clang-5', cxxstd='14', separate_compilation=0),
314+
linux_b2('Linux B2 clang-6', _image('build-clang5:1'), toolset='clang-5', cxxstd='14'),
315+
linux_b2('Linux B2 clang-7', _image('build-clang7:2'), toolset='clang-7', cxxstd='14,17'),
316+
linux_b2('Linux B2 clang-8', _image('build-clang8:2'), toolset='clang-8', cxxstd='14', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
317+
linux_b2('Linux B2 clang-9', _image('build-clang9:2'), toolset='clang-9', cxxstd='17', variant='release'),
318+
linux_b2('Linux B2 clang-10', _image('build-clang10:2'), toolset='clang-10', cxxstd='17,20', variant='debug'),
319+
linux_b2('Linux B2 clang-11', _image('build-clang11:2'), toolset='clang-11', cxxstd='20'),
320+
linux_b2('Linux B2 clang-12', _image('build-clang12:2'), toolset='clang-12', cxxstd='20', variant='debug', stdlib='libc++', address_sanitizer=1, undefined_sanitizer=1),
321+
linux_b2('Linux B2 clang-13', _image('build-clang13:1'), toolset='clang-13', cxxstd='20'),
322+
linux_b2('Linux B2 clang-14', _image('build-clang14:1'), toolset='clang-14', cxxstd='20', variant='debug'),
323+
linux_b2('Linux B2 clang-15', _image('build-clang15:1'), toolset='clang-15', cxxstd='20', variant='debug'),
324+
linux_b2('Linux B2 clang-16', _image('build-clang16:1'), toolset='clang-16', cxxstd='20', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
325+
linux_b2('Linux B2 clang-17-honly-rls', _image('build-clang17:1'), toolset='clang-17', cxxstd='20', variant='release', separate_compilation=0),
326+
linux_b2('Linux B2 clang-18-honly-dbg', _image('build-clang18:1'), toolset='clang-18', cxxstd='20', variant='debug', separate_compilation=0),
327+
linux_b2('Linux B2 clang-19-libc++', _image('build-clang19:1'), toolset='clang-19', cxxstd='23', stdlib='libc++'),
328+
linux_b2('Linux B2 clang-20', _image('build-clang20:1'), toolset='clang-20', cxxstd='23'),
329+
linux_b2('Linux B2 clang-sanit', _image('build-clang20:1'), toolset='clang-20', cxxstd='20', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
330+
linux_b2('Linux B2 clang-i386-sanit', _image('build-clang16-i386:1'), toolset='clang-16', cxxstd='20', variant='debug', address_model='32', address_sanitizer=1, undefined_sanitizer=1),
331+
317332
linux_b2('Linux B2 gcc-5', _image('build-gcc5:1'), toolset='gcc-5', cxxstd='11'), # gcc-5 C++14 doesn't like my constexpr field_view
318333
linux_b2('Linux B2 gcc-5-ts-executor', _image('build-gcc5:1'), toolset='gcc-5', cxxstd='11', use_ts_executor=1),
319-
linux_b2('Linux B2 gcc-6', _image('build-gcc6:1'), toolset='gcc-6', cxxstd='14,17'),
320-
linux_b2('Linux B2 gcc-10', _image('build-gcc10:1'), toolset='gcc-10', cxxstd='17,20'),
334+
linux_b2('Linux B2 gcc-6-honly-dbg', _image('build-gcc6:1'), toolset='gcc-6', cxxstd='14', variant='debug', separate_compilation=0),
335+
linux_b2('Linux B2 gcc-7', _image('build-gcc7:1'), toolset='gcc-7', cxxstd='14,17', variant='debug'),
336+
linux_b2('Linux B2 gcc-8', _image('build-gcc8:1'), toolset='gcc-8', cxxstd='17'),
337+
linux_b2('Linux B2 gcc-9', _image('build-gcc9:1'), toolset='gcc-9', cxxstd='14,17', variant='debug'),
338+
linux_b2('Linux B2 gcc-10', _image('build-gcc10:1'), toolset='gcc-10', cxxstd='17'),
321339
linux_b2('Linux B2 gcc-11', _image('build-gcc11:1'), toolset='gcc-11', cxxstd='20'),
322-
linux_b2('Linux B2 gcc-11-arm64', _image('build-gcc11:1'), toolset='gcc-11', cxxstd='11,20', arch='arm64', variant='release'),
323-
linux_b2('Linux B2 gcc-11-arm64-sanit', _image('build-gcc11:1'), toolset='gcc-11', cxxstd='20', arch='arm64', variant='debug'),
324-
linux_b2('Linux B2 gcc-13', _image('build-gcc13:1'), toolset='gcc-13', cxxstd='20', variant='release'),
325-
linux_b2('Linux B2 gcc-14', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23', variant='release'),
326-
linux_b2('Linux B2 gcc-14-sanit', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
327-
linux_b2('Linux B2 gcc-14-valgrind', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23', variant='debug', valgrind=1),
340+
linux_b2('Linux B2 gcc-12', _image('build-gcc12:1'), toolset='gcc-12', cxxstd='20,23', variant='debug'),
341+
linux_b2('Linux B2 gcc-13', _image('build-gcc13:1'), toolset='gcc-13', cxxstd='20'),
342+
linux_b2('Linux B2 gcc-14', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23'),
343+
linux_b2('Linux B2 gcc-15', _image('build-gcc15:1'), toolset='gcc-15', cxxstd='23'),
344+
linux_b2('Linux B2 gcc-sanit', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
345+
linux_b2('Linux B2 gcc-valgrind', _image('build-gcc14:1'), toolset='gcc-14', cxxstd='23', variant='debug', valgrind=1),
346+
linux_b2('Linux B2 gcc-11-arm64', _image('build-gcc11:1'), toolset='gcc-11', cxxstd='20', arch='arm64', variant='release'),
347+
linux_b2('Linux B2 gcc-11-arm64-sanit', _image('build-gcc11:1'), toolset='gcc-11', cxxstd='20', arch='arm64', variant='debug'),
328348
linux_b2('Linux B2 noopenssl', _image('build-noopenssl:1'), toolset='gcc', cxxstd='11', fail_if_no_openssl=0),
329349

330350
# B2 Windows

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ target_link_libraries(main PRIVATE Boost::charconv Threads::Threads OpenSSL::Cry
5555

5656
Boost.MySQL has been tested with the following compilers:
5757

58-
- gcc 5 to 14.
59-
- clang 3.6 to 18.
58+
- gcc 5 to 15.
59+
- clang 4 to 20.
6060
- msvc 14.1, 14.2 and 14.3.
6161

6262
And with the following databases:

doc/qbk/01_intro.qbk

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,19 +74,8 @@ It may not be a good fit for you if:
7474

7575
Boost.MySQL is tested under the following compilers:
7676

77-
* gcc 5.4 (Linux)
78-
* gcc 6.5 (Linux)
79-
* gcc 10.3 (Linux)
80-
* gcc 11.2 (Linux)
81-
* gcc 13.0 (Linux)
82-
* gcc 14.0 (Linux)
83-
* clang 3.6 (Linux)
84-
* clang 7.0 (Linux)
85-
* clang 11.0 (Linux)
86-
* clang 14.0 (Linux)
87-
* clang 16.0 (Linux)
88-
* clang 17.0 (Linux)
89-
* clang 18.0 (Linux)
77+
* gcc 5.4 to gcc 15.0 (Linux)
78+
* clang 4 to clang 20.0 (Linux)
9079
* Apple clang 14.0 (OSX)
9180
* MSVC 14.1 - Visual Studio 2017 (Windows)
9281
* MSVC 14.2 - Visual Studio 2019 (Windows)

test/Jamfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ local requirements =
7575
<toolset>gcc,<thread-sanitizer>norecover:<cxxflags>-Wno-tsan
7676
# gcc-11 emits spurious warnings for valid vector::insert ops
7777
<toolset>gcc-11:<cxxflags>-Wno-stringop-overflow
78+
# gcc-15 emits spurious warnings about uninitialized variables in coroutines
79+
<toolset>gcc-15:<cxxflags>-Wno-maybe-uninitialized
7880
# TODO: remove when PFR unused warnings are fixed
7981
# https://github.com/boostorg/pfr/pull/187
8082
<toolset>gcc:<cxxflags>-Wno-unused-parameter

0 commit comments

Comments
 (0)