Skip to content

Commit 3a49afe

Browse files
authored
Boost 1.86 new CI builds
Added gcc-14 build Updated mysql8 to MySQL 8.4.1 Updated mariadb to MariaDB 11.4.2 Updated some CMake builds to the latest compiler versions Updated GHA workflows to use Node 20 actions Updated deprecated ENV commands in Dockerfiles Removed debugging statements in OSX CI build DB entrypoints are now inline scripts in Dockerfiles TSAN is now run in ARM CIs and recent gcc's TSAN is now disabled for TS executors close #302
1 parent 6c48d6c commit 3a49afe

18 files changed

+84
-80
lines changed

.drone.star

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
#
77

88
_triggers = { "branch": [ "master", "develop" ] }
9-
_container_tag = '252732b3d7af7f78618e877479b85d4d611a61f4'
10-
_win_container_tag = 'ca0db5925a497b70e7d6b303c81d56b70c06f9ef'
9+
_container_tag = 'c3f5316cc19bf3c0f7a83e31dec58139581f5764'
10+
_win_container_tag = 'e7bd656c3515263f9b3c69a2d73d045f6a0fed72'
1111

1212

1313
def _image(name):
@@ -100,6 +100,7 @@ def _pipeline(
100100
"name": "Build and run",
101101
"image": image,
102102
"pull": "if-not-exists",
103+
"privileged": arch == "arm64",
103104
"volumes":[{
104105
"name": "mysql-socket",
105106
"path": "/var/run/mysqld"
@@ -279,11 +280,11 @@ def docs(name):
279280
def main(ctx):
280281
return [
281282
# CMake Linux
282-
linux_cmake('Linux CMake MySQL 5.x', _image('build-clang14'), db='mysql5', build_shared_libs=0),
283-
linux_cmake('Linux CMake MariaDB', _image('build-clang14'), db='mariadb', build_shared_libs=1),
283+
linux_cmake('Linux CMake MySQL 5.x', _image('build-gcc14'), db='mysql5', build_shared_libs=0),
284+
linux_cmake('Linux CMake MariaDB', _image('build-gcc14'), db='mariadb', build_shared_libs=1),
284285
linux_cmake('Linux CMake cmake 3.8', _image('build-cmake3_8'), cxxstd='11', install_test=0),
285-
linux_cmake('Linux CMake gcc Release', _image('build-gcc11'), cmake_build_type='Release'),
286-
linux_cmake('Linux CMake gcc MinSizeRel', _image('build-gcc13'), cmake_build_type='MinSizeRel'),
286+
linux_cmake('Linux CMake gcc Release', _image('build-gcc14'), cmake_build_type='Release'),
287+
linux_cmake('Linux CMake gcc MinSizeRel', _image('build-gcc14'), cmake_build_type='MinSizeRel'),
287288
linux_cmake_noopenssl('Linux CMake no OpenSSL'),
288289
linux_cmake_nointeg('Linux CMake without integration tests'),
289290

@@ -314,8 +315,9 @@ def main(ctx):
314315
linux_b2('Linux B2 gcc-11-arm64', _image('build-gcc11'), toolset='gcc-11', cxxstd='11,20', arch='arm64', variant='release'),
315316
linux_b2('Linux B2 gcc-11-arm64-sanit', _image('build-gcc11'), toolset='gcc-11', cxxstd='20', arch='arm64', variant='debug'),
316317
linux_b2('Linux B2 gcc-13', _image('build-gcc13'), toolset='gcc-13', cxxstd='20', variant='release'),
317-
linux_b2('Linux B2 gcc-13-sanit', _image('build-gcc13'), toolset='gcc-13', cxxstd='20', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
318-
linux_b2('Linux B2 gcc-13-valgrind', _image('build-gcc13'), toolset='gcc-13', cxxstd='20', variant='debug', valgrind=1),
318+
linux_b2('Linux B2 gcc-14', _image('build-gcc14'), toolset='gcc-14', cxxstd='23', variant='release'),
319+
linux_b2('Linux B2 gcc-14-sanit', _image('build-gcc14'), toolset='gcc-14', cxxstd='23', variant='debug', address_sanitizer=1, undefined_sanitizer=1),
320+
linux_b2('Linux B2 gcc-14-valgrind', _image('build-gcc14'), toolset='gcc-14', cxxstd='23', variant='debug', valgrind=1),
319321
linux_b2('Linux B2 noopenssl', _image('build-noopenssl'), toolset='gcc', cxxstd='11', fail_if_no_openssl=0),
320322

321323
# B2 Windows

.github/workflows/build-code.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,6 @@ jobs:
2121
steps:
2222
- uses: actions/checkout@v4
2323
- run: |
24-
brew --prefix openssl
25-
realpath $(brew --prefix openssl)
26-
find $(realpath $(brew --prefix openssl))
2724
unlink /usr/local/bin/python || echo "/usr/local/bin/python not found"
2825
ln -s /usr/local/bin/python3 /usr/local/bin/python
2926
cp tools/user-config-osx-gha.jam ~/user-config.jam

.github/workflows/coverage.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,12 @@ jobs:
2121
coverage:
2222
runs-on: ubuntu-latest
2323
container:
24-
image: ghcr.io/anarthal-containers/build-gcc13:252732b3d7af7f78618e877479b85d4d611a61f4
24+
image: ghcr.io/anarthal-containers/build-gcc14:c3f5316cc19bf3c0f7a83e31dec58139581f5764
2525
volumes:
2626
- /var/run/mysqld:/var/run/mysqld
2727
services:
2828
mysql:
29-
image: ghcr.io/anarthal-containers/mysql8:252732b3d7af7f78618e877479b85d4d611a61f4
29+
image: ghcr.io/anarthal-containers/mysql8:c3f5316cc19bf3c0f7a83e31dec58139581f5764
3030
ports:
3131
- 3306:3306
3232
volumes:
@@ -51,7 +51,7 @@ jobs:
5151
run: |
5252
SOURCE_DIR=$(pwd)
5353
cd ~/boost-root
54-
gcov-13 -r -p $(find bin.v2/ -name '*.gcda') > /dev/null
54+
gcov-14 -r -p $(find bin.v2/ -name '*.gcda') > /dev/null
5555
mkdir $GCOV_REPORT_DIR
5656
cp boost#mysql#*.gcov $GCOV_REPORT_DIR
5757

.github/workflows/docker-linux.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,23 +49,23 @@ jobs:
4949

5050
steps:
5151
- name: Checkout repository
52-
uses: actions/checkout@v3
52+
uses: actions/checkout@v4
5353

5454
- name: Set up QEMU
55-
uses: docker/setup-qemu-action@v2
55+
uses: docker/setup-qemu-action@v3
5656

5757
- name: Set up Docker Buildx
58-
uses: docker/setup-buildx-action@v2
58+
uses: docker/setup-buildx-action@v3
5959

6060
- name: Log in to the Container registry
61-
uses: docker/login-action@v2
61+
uses: docker/login-action@v3
6262
with:
6363
registry: ghcr.io
6464
username: anarthal-containers
6565
password: ${{ secrets.ANARTHAL_CONTAINERS_TOKEN }}
6666

6767
- name: Build and push
68-
uses: docker/build-push-action@v4
68+
uses: docker/build-push-action@v6
6969
with:
7070
context: .
7171
push: true

.github/workflows/docker-windows.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,10 @@ jobs:
3535

3636
steps:
3737
- name: Checkout repository
38-
uses: actions/checkout@v3
38+
uses: actions/checkout@v4
3939

4040
- name: Log in to the Container registry
41-
uses: docker/login-action@v2
41+
uses: docker/login-action@v3
4242
with:
4343
registry: ghcr.io
4444
username: anarthal-containers

.github/workflows/fuzz.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ jobs:
2020
fuzz:
2121
runs-on: ubuntu-latest
2222
container:
23-
image: ghcr.io/anarthal-containers/build-clang18:252732b3d7af7f78618e877479b85d4d611a61f4
23+
image: ghcr.io/anarthal-containers/build-clang18:c3f5316cc19bf3c0f7a83e31dec58139581f5764
2424
volumes:
2525
- /var/run/mysqld:/var/run/mysqld
2626
services:
2727
mysql:
28-
image: ghcr.io/anarthal-containers/mysql8:252732b3d7af7f78618e877479b85d4d611a61f4
28+
image: ghcr.io/anarthal-containers/mysql8:c3f5316cc19bf3c0f7a83e31dec58139581f5764
2929
ports:
3030
- 3306:3306
3131
volumes:

README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ 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 13.
59-
- clang 3.6 to 16.
58+
- gcc 5 to 14.
59+
- clang 3.6 to 18.
6060
- msvc 14.1, 14.2 and 14.3.
6161

6262
And with the following databases:
6363

6464
- MySQL v5.7.41.
65-
- MySQL v8.0.33.
66-
- MariaDB v11.0.
65+
- MySQL v8.4.1.
66+
- MariaDB v11.4.2.
6767

6868
## Features
6969

doc/qbk/01_intro.qbk

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,21 +79,24 @@ Boost.MySQL is tested under the following compilers:
7979
* gcc 10.3 (Linux)
8080
* gcc 11.2 (Linux)
8181
* gcc 13.0 (Linux)
82+
* gcc 14.0 (Linux)
8283
* clang 3.6 (Linux)
8384
* clang 7.0 (Linux)
8485
* clang 11.0 (Linux)
8586
* clang 14.0 (Linux)
8687
* clang 16.0 (Linux)
87-
* clang 14.0 (OSX)
88+
* clang 17.0 (Linux)
89+
* clang 18.0 (Linux)
90+
* Apple clang 14.0 (OSX)
8891
* MSVC 14.1 - Visual Studio 2017 (Windows)
8992
* MSVC 14.2 - Visual Studio 2019 (Windows)
9093
* MSVC 14.3 - Visual Studio 2022 (Windows)
9194

9295
And with the following RDBMS systems:
9396

9497
* MySQL v5.7.41.
95-
* MySQL v8.0.33.
96-
* MariaDB v11.0.
98+
* MySQL v8.4.1.
99+
* MariaDB v11.4.2.
97100

98101
[heading Acknowledgements]
99102

test/Jamfile

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,12 @@ local requirements =
5656
<toolset>msvc:<define>_SILENCE_CXX17_ALLOCATOR_VOID_DEPRECATION_WARNING
5757
<toolset>msvc:<define>_SILENCE_CXX17_ADAPTOR_TYPEDEFS_DEPRECATION_WARNING
5858
<toolset>msvc:<define>_SILENCE_CXX17_ITERATOR_BASE_CLASS_DEPRECATION_WARNING
59-
# GCC13 doesn't understand view types and issues array bound warnings that don't make sense.
60-
<toolset>gcc-13:<cxxflags>"-Wno-dangling-reference -Wno-array-bounds"
61-
<toolset>gcc:<cxxflags>-Wno-implicit-fallthrough # Required by Asio SSL components
59+
# gcc-13+ doesn't understand view types and issues array bound warnings that don't make sense.
60+
# -Wno-implicit-fallthrough is required by Asio SSL components
61+
<toolset>gcc:<cxxflags>"-Wno-dangling-reference -Wno-array-bounds -Wno-implicit-fallthrough"
62+
# gcc-13+ complains about TSAN not supporting std::atomic_thread_fence,
63+
# used by Asio old net-ts type-erased executors.
64+
<toolset>gcc,<thread-sanitizer>norecover:<cxxflags>-Wno-tsan
6265
<target-os>linux:<define>_XOPEN_SOURCE=600
6366
<target-os>linux:<define>_GNU_SOURCE=1
6467
<target-os>windows:<define>_WIN32_WINNT=0x0601
@@ -118,7 +121,14 @@ alias common_test_sources
118121

119122
# Boost.Context causes failures with warnings-as-errors
120123
# under libc++, because it builds objects that raise a -stdlib=libc++ unused warning
121-
alias boost_context_lib : /boost/context//boost_context/<warnings-as-errors>off ;
124+
alias boost_context_lib
125+
:
126+
/boost/context//boost_context/<warnings-as-errors>off
127+
: usage-requirements
128+
# gcc-14+ seem to enable CET by default, which causes warnings with Boost.Context.
129+
# Disable CET until https://github.com/boostorg/context/issues/263 gets fixed
130+
<toolset>gcc-14:<cxxflags>-fcf-protection=none
131+
;
122132

123133
alias boost_mysql_test
124134
:

test/thread_safety/Jamfile

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,16 @@ if $(hostname) = ""
1414
hostname = "127.0.0.1" ;
1515
}
1616

17-
# TSAN can't be enabled in our ARM CIs, since they fail
18-
# the personality() syscall to disable address space layout randomization.
19-
# In OSX, tsan reports a race condition in Asio's kqueue reactor. Ignore this for now.
20-
# gcc-13 complains about TSAN not supporting std::atomic_thread_fence, which is used by Asio.
21-
# However, this doesn't seem to affect TSAN results
22-
rule tsan_if_not_arm ( properties * )
23-
{
24-
local result ;
25-
if ! <architecture>arm in $(properties) && ! <target-os>darwin in $(properties) && ! <toolset-gcc:version>13 in $(properties)
26-
{
27-
result += <thread-sanitizer>norecover ;
28-
}
29-
return $(result) ;
30-
}
3117

18+
# In OSX, tsan reports a race condition in Asio's kqueue reactor. Ignore this for now.
19+
# Net TS executors use std::atomic_thread_fence, unsupported by TSAN, which yields false positives.
3220
run
3321
/boost/mysql/test//boost_mysql_compiled
3422
connection_pool.cpp
3523
: requirements
3624
<testing.arg>$(hostname)
37-
<conditional>@tsan_if_not_arm
25+
<target-os>darwin:<build>no
26+
<boost.mysql.use-ts-executor>on:<build>no
27+
<thread-sanitizer>norecover
3828
: target-name boost_mysql_thread_safety
3929
;

tools/docker/build-docs.dockerfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ FROM openjdk:11
99

1010
COPY tools/docker/install_build_docs.sh /
1111

12-
ENV DOCBOOK_DTD_DIR /opt/docbook-dtd
13-
ENV DOCBOOK_XSL_DIR /opt/docbook-xsl
12+
ENV DOCBOOK_DTD_DIR=/opt/docbook-dtd
13+
ENV DOCBOOK_XSL_DIR=/opt/docbook-xsl
1414

1515
RUN bash install_build_docs.sh

tools/docker/mariadb.dockerfile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ FROM mariadb:11.4.2
1010
ENV MYSQL_ALLOW_EMPTY_PASSWORD=1
1111
ENV MYSQL_ROOT_PASSWORD=
1212

13-
COPY tools/docker/mariadb_entrypoint.sh /
1413
COPY tools/docker/unix-socket.cnf /etc/mysql/conf.d/
1514
COPY tools/docker/ssl.cnf /etc/mysql/conf.d/
1615
COPY tools/ssl/*.pem /etc/ssl/certs/mysql/
1716

17+
# Custom entry point to correctly set UNIX socket permissions, even if using volumes
18+
RUN <<EOF cat > /mariadb_entrypoint.sh
19+
chown -R mysql:mysql /var/run/mysqld
20+
/bin/bash /usr/local/bin/docker-entrypoint.sh mariadbd
21+
EOF
22+
23+
1824
ENTRYPOINT ["/bin/bash", "/mariadb_entrypoint.sh"]

tools/docker/mariadb_entrypoint.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.

tools/docker/mysql5.dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ FROM mysql:5.7.41
1010
ENV MYSQL_ALLOW_EMPTY_PASSWORD=1
1111
ENV MYSQL_ROOT_PASSWORD=
1212

13-
COPY tools/docker/mysql_entrypoint.sh /
1413
COPY tools/docker/ssl.cnf /etc/mysql/conf.d/
1514
COPY tools/ssl/*.pem /etc/ssl/certs/mysql/
1615

16+
# Custom entry point to correctly set UNIX socket permissions, even if using volumes
17+
RUN <<EOF cat > /mysql_entrypoint.sh
18+
chown -R mysql:mysql /var/run/mysqld
19+
/bin/bash /usr/local/bin/docker-entrypoint.sh mysqld
20+
EOF
21+
1722
ENTRYPOINT ["/bin/bash", "/mysql_entrypoint.sh"]

tools/docker/mysql8.dockerfile

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@ FROM mysql:8.4.1
1010
ENV MYSQL_ALLOW_EMPTY_PASSWORD=1
1111
ENV MYSQL_ROOT_PASSWORD=
1212

13-
COPY tools/docker/mysql_entrypoint.sh /
1413
COPY tools/docker/ssl.cnf /etc/mysql/conf.d/
1514
COPY tools/ssl/*.pem /etc/ssl/certs/mysql/
1615

16+
# Custom entry point to correctly set UNIX socket permissions, even if using volumes.
17+
# Re-activate the native password plugin, which is now disabled by default
18+
RUN <<EOF cat > /mysql_entrypoint.sh
19+
chown -R mysql:mysql /var/run/mysqld
20+
/bin/bash /usr/local/bin/docker-entrypoint.sh mysqld --mysql-native-password=ON
21+
EOF
22+
1723
ENTRYPOINT ["/bin/bash", "/mysql_entrypoint.sh"]

tools/docker/mysql9.dockerfile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,13 @@ FROM mysql:9.0.0
1010
ENV MYSQL_ALLOW_EMPTY_PASSWORD=1
1111
ENV MYSQL_ROOT_PASSWORD=
1212

13-
COPY tools/docker/mysql_entrypoint.sh /
1413
COPY tools/docker/ssl.cnf /etc/mysql/conf.d/
1514
COPY tools/ssl/*.pem /etc/ssl/certs/mysql/
1615

16+
# Custom entry point to correctly set UNIX socket permissions, even if using volumes
17+
RUN <<EOF cat > /mysql_entrypoint.sh
18+
chown -R mysql:mysql /var/run/mysqld
19+
/bin/bash /usr/local/bin/docker-entrypoint.sh mysqld
20+
EOF
21+
1722
ENTRYPOINT ["/bin/bash", "/mysql_entrypoint.sh"]

tools/docker/mysql_entrypoint.sh

Lines changed: 0 additions & 10 deletions
This file was deleted.

tools/scripts/build_unix_local.sh

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ set -e
1010

1111
repo_base=$(realpath $(dirname $(realpath $0))/../..)
1212

13-
BK=docs
14-
IMAGE=build-docs
15-
SHA=252732b3d7af7f78618e877479b85d4d611a61f4
13+
BK=b2
14+
IMAGE=build-gcc14
15+
SHA=c3f5316cc19bf3c0f7a83e31dec58139581f5764
1616
CONTAINER=builder-$IMAGE
1717
FULL_IMAGE=ghcr.io/anarthal-containers/$IMAGE:$SHA
1818
DB=mysql8
@@ -35,8 +35,8 @@ db_args="--server-host=$DB --db=$DB"
3535
case $BK in
3636
b2) cmd="$db_args
3737
--toolset=gcc
38-
--cxxstd=20
39-
--variant=debug
38+
--cxxstd=23
39+
--variant=release
4040
--stdlib=native
4141
--address-model=64
4242
--separate-compilation=1

0 commit comments

Comments
 (0)