Skip to content

Commit 4c3755c

Browse files
MDBF-1214: Connector C builders
- release wise: only bintar / msi; same platforms as in c/odbc, c/c++. - special builders: msan, ubasan Follows bb-*, 3.3, 3.4 upstream branches. RHEL bintars are considered alma/rocky ABI compatible but tested within the rhel factory. Packages are published at https://ci.mariadb.org/connector-c/
1 parent f47107d commit 4c3755c

6 files changed

Lines changed: 653 additions & 14 deletions

File tree

Lines changed: 198 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,201 @@
1+
import os
2+
from pathlib import PurePath
3+
4+
from buildbot.plugins import util
15
from configuration.builders.base import GenericBuilder
2-
from configuration.builders.sequences.connectors.conc import deb, rpm, tarball
6+
from configuration.builders.common import docker_config
7+
from configuration.builders.infra.runtime import DockerConfig, Sidecar
8+
from configuration.builders.sequences.connectors.conc import (
9+
bintar,
10+
get_source_package,
11+
git_clone_sq,
12+
save_packages,
13+
tarball,
14+
windows,
15+
)
16+
17+
PACKAGES_DIR = f"{os.environ['CONNECTORS_PACKAGES_DIR']}/c"
18+
BUILD_BASE_PATH = "build"
19+
BINTAR_PATH = f"{BUILD_BASE_PATH}/bintar"
20+
SOURCE_PATH = f"{BUILD_BASE_PATH}/source"
21+
BINTAR_PACKAGES_TO_SAVE = [f"{BINTAR_PATH}/*.tar.gz"]
22+
23+
24+
# MariaDB Server used for C/C++ tests
25+
SIDECAR = Sidecar(
26+
repository="docker.io/library/",
27+
image_tag="mariadb:lts",
28+
env_vars=[("MARIADB_ROOT_PASSWORD", "test"), ("MARIADB_DATABASE", "test")],
29+
tmpfs=PurePath("/var/lib/mysql"),
30+
)
31+
32+
33+
TARBALL = GenericBuilder(
34+
name="cc-tarball-docker",
35+
sequences=[
36+
tarball(
37+
config=docker_config(
38+
image="debian13",
39+
packages_dir=PACKAGES_DIR,
40+
artifacts_url=f"{os.environ['ARTIFACTS_URL']}/connector-c/",
41+
),
42+
)
43+
],
44+
)
45+
46+
47+
def generate_bintar_sqs(
48+
ops,
49+
version,
50+
build_environment: DockerConfig = None,
51+
upload_packages_to_ci=True,
52+
get_source_from_git=False,
53+
with_asan_ubsan=False,
54+
with_msan=False,
55+
):
56+
if not build_environment:
57+
build_environment = docker_config(
58+
image=f"{ops}{version}",
59+
packages_dir=PACKAGES_DIR,
60+
artifacts_url=f"{os.environ['ARTIFACTS_URL']}/connector-c/",
61+
)
62+
63+
alma_linux_environment = None
64+
rockylinux_environment = None
65+
if ops == "rhel":
66+
alma_linux_environment = DockerConfig(
67+
repository="docker.io/library/",
68+
image_tag=f"almalinux:{version}",
69+
)
70+
rockylinux_environment = DockerConfig(
71+
repository="rockylinux/",
72+
image_tag=f"rockylinux:{version}",
73+
)
74+
75+
test_environments = [
76+
build_environment,
77+
alma_linux_environment,
78+
rockylinux_environment,
79+
]
80+
81+
source_sq = [
82+
get_source_package(
83+
config=build_environment,
84+
source_path=SOURCE_PATH,
85+
),
86+
]
87+
88+
if get_source_from_git:
89+
source_sq = [
90+
git_clone_sq(
91+
config=build_environment,
92+
source_path=SOURCE_PATH,
93+
)
94+
]
95+
96+
return (
97+
source_sq
98+
+ [
99+
bintar(
100+
config=build_environment,
101+
test_environments=test_environments,
102+
source_path=SOURCE_PATH,
103+
bintar_path=BINTAR_PATH,
104+
package_platform_suffix=f"{ops}{version}",
105+
jobs=util.Property("jobs"),
106+
with_asan_ubsan=with_asan_ubsan,
107+
with_msan=with_msan,
108+
),
109+
]
110+
+ (
111+
[
112+
save_packages(
113+
packages=BINTAR_PACKAGES_TO_SAVE,
114+
config=build_environment,
115+
)
116+
]
117+
if upload_packages_to_ci
118+
else []
119+
)
120+
)
121+
3122

4-
TARBALL = GenericBuilder(name="cc-tarball-docker", sequences=[tarball()])
5123
RELEASE_BUILDERS_BY_ARCH = {"amd64": [], "aarch64": []}
124+
for arch in ["amd64", "aarch64"]:
125+
for ops, version in [
126+
("fedora", "43"),
127+
("fedora", "44"),
128+
("sles", "1507"),
129+
("sles", "1600"),
130+
("rhel", "8"),
131+
("rhel", "9"),
132+
("rhel", "10"),
133+
]:
134+
if ops == "sles" and arch != "amd64":
135+
continue
136+
builder = GenericBuilder(
137+
name=f"cc-{arch}-{ops}-{version}",
138+
sidecar=SIDECAR,
139+
sequences=generate_bintar_sqs(ops=ops, version=version),
140+
)
141+
RELEASE_BUILDERS_BY_ARCH[arch].append(builder)
142+
143+
for ops, version in [
144+
("debian", "11"),
145+
("debian", "12"),
146+
("debian", "13"),
147+
("ubuntu", "22.04"),
148+
("ubuntu", "24.04"),
149+
("ubuntu", "26.04"),
150+
]:
151+
builder = GenericBuilder(
152+
name=f"cc-{arch}-{ops}-{version}",
153+
sidecar=SIDECAR,
154+
sequences=generate_bintar_sqs(ops=ops, version=version),
155+
)
156+
RELEASE_BUILDERS_BY_ARCH[arch].append(builder)
157+
158+
UBASAN_BUILDER = GenericBuilder(
159+
name="cc-debian-13-ubasan-clang-22",
160+
sidecar=SIDECAR,
161+
sequences=generate_bintar_sqs(
162+
build_environment=docker_config(
163+
image="debian13-msan-clang-22",
164+
artifacts_url=f"{os.environ['ARTIFACTS_URL']}/connector-c/",
165+
),
166+
ops="debian",
167+
version="13",
168+
upload_packages_to_ci=False,
169+
with_asan_ubsan=True,
170+
get_source_from_git=True,
171+
),
172+
)
173+
174+
WINDOWS_64_BUILDER = GenericBuilder(
175+
name="cc-amd64-windows",
176+
sequences=[
177+
windows(jobs=util.Property("jobs"), target_platform="64-bit"),
178+
],
179+
)
180+
181+
WINDOWS_32_BUILDER = GenericBuilder(
182+
name="cc-x86-windows",
183+
sequences=[
184+
windows(jobs=util.Property("jobs"), target_platform="32-bit"),
185+
],
186+
)
187+
188+
MSAN_BUILDER = GenericBuilder(
189+
name="cc-debian-13-msan-clang-22",
190+
sidecar=SIDECAR,
191+
sequences=generate_bintar_sqs(
192+
build_environment=docker_config(
193+
image="debian13-msan-clang-22",
194+
artifacts_url=f"{os.environ['ARTIFACTS_URL']}/connector-c/",
195+
),
196+
with_msan=True,
197+
ops="debian",
198+
version="13",
199+
upload_packages_to_ci=False,
200+
),
201+
)

0 commit comments

Comments
 (0)