Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 59 additions & 13 deletions configuration/builders/definitions/connectors/conodbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
deb,
deb_pkg_tests,
get_source_package,
git_clone_sq,
rpm,
rpm_pkg_tests,
save_packages,
Expand Down Expand Up @@ -51,25 +52,54 @@
)


def generate_bintar_sqs(build_environment, ops, version):
return [
def generate_bintar_sqs(
build_environment,
ops,
version,
upload_packages_to_ci=True,
get_source_from_git=False,
with_asan_ubsan=False,
):

source_sq = [
get_source_package(
config=build_environment,
source_path=SOURCE_PATH,
),
bintar(
config=build_environment,
source_path=SOURCE_PATH,
bintar_path=BINTAR_PATH,
package_platform_suffix=f"{ops}{version}",
jobs=util.Property("jobs"),
),
save_packages(
packages=BINTAR_PACKAGES_TO_SAVE,
config=build_environment,
),
]

if get_source_from_git:
source_sq = [
git_clone_sq(
config=build_environment,
source_path=SOURCE_PATH,
)
]

return (
source_sq
+ [
bintar(
config=build_environment,
source_path=SOURCE_PATH,
bintar_path=BINTAR_PATH,
package_platform_suffix=f"{ops}{version}",
jobs=util.Property("jobs"),
with_asan_ubsan=with_asan_ubsan,
),
]
+ (
[
save_packages(
packages=BINTAR_PACKAGES_TO_SAVE,
config=build_environment,
)
]
if upload_packages_to_ci
else []
)
)


def generate_rpm_release_sq(ops, version):
build_environment = docker_config(
Expand Down Expand Up @@ -225,3 +255,19 @@ def generate_deb_release_sq(ops, version):
sequences=generate_deb_release_sq(ops=ops, version=version),
)
RELEASE_BUILDERS_BY_ARCH[arch].append(builder)

UBASAN_BUILDER = GenericBuilder(
name="codbc-debian-13-ubasan-clang-22",
sidecar=SIDECAR,
sequences=generate_bintar_sqs(
build_environment=docker_config(
image="debian13-msan-clang-22",
artifacts_url=f"{os.environ['ARTIFACTS_URL']}/connector-odbc/",
),
ops="debian",
version="13",
upload_packages_to_ci=False,
with_asan_ubsan=True,
get_source_from_git=True,
),
)
100 changes: 78 additions & 22 deletions configuration/builders/sequences/connectors/conodbc.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,28 +37,49 @@
from configuration.steps.remote import PropFromShellStep, ShellStep


def git_clone_step(step_wrapping_fn=lambda step: step, source_path: str = "."):
source_path = PurePath(source_path)
return step_wrapping_fn(
ShellStep(
command=GitInitFromCommit(
repo_url="%(prop:repository)s",
commit="%(prop:revision)s",
workdir=source_path,
),
options=StepOptions(
description="Initialize git repository",
descriptionDone="Git repository initialized",
),
),
)


def git_clone_sq(config: DockerConfig = None, source_path: str = "."):
sequence = BuildSequence()
if config:
sequence.add_step(
git_clone_step(
lambda step: InContainer(
step,
docker_environment=config,
),
source_path=source_path,
)
)
return sequence
sequence.add_step(git_clone_step(source_path=source_path))
return sequence


def tarball(config: DockerConfig):
### INIT
sequence = BuildSequence()

### ADD STEPS
sequence.add_step(ShellStep(command=PrintEnvironmentDetails()))
sequence.add_step(
InContainer(
ShellStep(
command=GitInitFromCommit(
repo_url="%(prop:repository)s",
commit="%(prop:revision)s",
),
options=StepOptions(
description="Initialize git repository",
descriptionDone="Git repository initialized",
),
),
docker_environment=config,
),
git_clone_step(lambda step: InContainer(step, docker_environment=config))
)

sequence.add_step(
InContainer(
ShellStep(
Expand Down Expand Up @@ -648,8 +669,46 @@ def bintar(
package_platform_suffix: str,
bintar_path: str,
source_path: str,
with_asan_ubsan=False,
):
sequence = BuildSequence()
env_vars = None
flags = [
CMakeOption(OTHER.CONC_WITH_UNIT_TESTS, False),
CMakeOption(CMAKE.BUILD_TYPE, BuildType.RELWITHDEBUG),
CMakeOption(OTHER.PACKAGE_PLATFORM_SUFFIX, package_platform_suffix),
]

if with_asan_ubsan:
sequence.add_step(
InContainer(
ShellStep(
command=BashCommand(
name="Checkout latest C/C",
cmd="git fetch origin $([ '%(prop:odbc_version)s' = '3.1' ] && echo 3.3 || echo 3.4) && git reset --hard FETCH_HEAD",
workdir=PurePath(source_path) / "libmariadb",
),
options=StepOptions(
description="Checking out latest C/C",
descriptionDone="Checked out latest C/C",
),
),
docker_environment=config,
)
)
flags.append(CMakeOption(WITH.ASAN, True))
flags.append(CMakeOption(WITH.UBSAN, True))
env_vars = [
(
"ASAN_OPTIONS",
"detect_stack_use_after_return=1:detect_leaks=1:abort_on_error=1:atexit=0:detect_invalid_pointer_pairs=3:dump_instruction_bytes=1:allocator_may_return_null=1",
),
(
"UBSAN_OPTIONS",
f"suppressions=/home/buildbot/{source_path}/UBSAN.supp:print_stacktrace=1:report_error_type=1:halt_on_error=1",
),
]

sequence.add_step(
InContainer(
ShellStep(
Expand All @@ -659,15 +718,10 @@ def bintar(
source_path=source_path,
builddir=bintar_path,
use_ccache=True,
flags=[
CMakeOption(OTHER.CONC_WITH_UNIT_TESTS, False),
CMakeOption(CMAKE.BUILD_TYPE, BuildType.RELWITHDEBUG),
CMakeOption(
OTHER.PACKAGE_PLATFORM_SUFFIX, package_platform_suffix
),
],
flags=flags,
),
),
env_vars=env_vars,
options=StepOptions(
description="Bintar - Configure CMake",
descriptionDone="Bintar - CMake configured",
Expand All @@ -685,6 +739,7 @@ def bintar(
target=MAKE.PACKAGE,
jobs=jobs,
),
env_vars=env_vars,
options=StepOptions(
description="Bintar - Compile",
descriptionDone="Bintar - Compile done",
Expand Down Expand Up @@ -714,7 +769,8 @@ def bintar(
("TEST_VERBOSE", "true"),
("TEST_DRIVER", "maodbc_test"),
("TEST_DSN", "maodbc_test"),
],
]
+ (env_vars if env_vars else []),
options=StepOptions(
description="Bintar - Run ODBC ctest",
descriptionDone="Bintar - ODBC ctest done",
Expand Down
3 changes: 2 additions & 1 deletion configuration/schedulers/connectors.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,8 @@
for builders in odbc_builders.RELEASE_BUILDERS_BY_ARCH.values()
for builder in builders
)
],
]
+ [odbc_builders.UBASAN_BUILDER.name],
),
]

Expand Down
9 changes: 9 additions & 0 deletions master-migration/master.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -309,6 +309,15 @@ for arch, builders in conc_odbc_builders.RELEASE_BUILDERS_BY_ARCH.items():
)
)

# Connector/ODBC ASAN/UBSAN builder
c["builders"].append(
conc_odbc_builders.UBASAN_BUILDER.get_config(
workers=CONNECTORS_WORKERS_BY_ARCH.get("amd64", []),
tags=["connector", "odbc", "sanitizer", "asan", "ubsan", "clang"],
jobs=1,
)
)

## ------------------------------------------------------------------- ##
## REPORTERS ##
## ------------------------------------------------------------------- ##
Expand Down