LLVM_SYMBOLIZER: "/usr/lib/llvm-${CLANG_VERSION}/bin/llvm-symbolizer"
CLANG_FORMAT: "clang-format-${CLANG_VERSION}"
- CFLAGS_COMMON: -fno-omit-frame-pointer -fno-optimize-sibling-calls
-
- TSAN_CONFIGURE_FLAGS_COMMON: "-Db_sanitize=thread -Doptimization=2 -Ddebug=true -Didn=enabled -Dlocktype=system -Djemalloc=disabled -Dnamed-lto=disabled --pkg-config-path /opt/tsan/lib/pkgconfig"
TSAN_SYMBOLIZER_PATH_DEBIAN: "${LLVM_SYMBOLIZER}"
TSAN_SYMBOLIZER_PATH_FEDORA: "/usr/bin/llvm-symbolizer"
- WITHOUT_LIBEDIT: "-Dline=disabled"
- WITH_LIBEDIT: "-Dline=enabled"
+ # Per-job meson machine files, layered after ci/common.ini by the .configure
+ # template. Each build job overrides this with its overlay(s); see ci/*.ini.
+ EXTRA_SETUP_FILES: ""
INSTALL_PATH: "${CI_PROJECT_DIR}/.local"
.configure: &configure
- meson setup
- --libdir=lib
- -Dcmocka=enabled
- -Ddeveloper=enabled
- -Dleak-detection=enabled
- -Doptimization=1
- -Dnamed-lto=thin
- $EXTRA_CONFIGURE
+ --native-file ci/common.ini
+ $EXTRA_SETUP_FILES
build
.git-clone-bind9-qa: &git_clone_bind9-qa
scan-build:
<<: *other_checks_job
- variables:
- CFLAGS: "${CFLAGS_COMMON}"
before_script:
- *list_installed_package_versions
script:
+ # ci/scan-build.ini is deliberately self-contained rather than layered on
+ # ci/common.ini: a machine file's [binaries] c overrides $CC, which is how
+ # scan-build injects its analyzer wrapper via --use-cc. Layering common.ini
+ # here would pin the compiler to gcc and silently stop analyzing anything.
+ #
# --exclude build drops findings in Meson's feature-probe programs,
# which are the only thing analyzed during setup.
- ${SCAN_BUILD} --use-cc=${CLANG}
--exclude build
- meson setup --libdir=lib -Dcmocka=enabled -Ddeveloper=enabled
- -Dleak-detection=enabled -Doptimization=1 -Didn=enabled
- -Dnamed-lto=disabled build
+ meson setup --native-file ci/scan-build.ini build
# Gate on the full set of default checkers.
- ${SCAN_BUILD} --html-title="BIND 9 ($CI_COMMIT_SHORT_SHA)"
--use-cc=${CLANG}
coverity:
<<: *other_checks_job
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Doptimization=g -Ddoc=disabled -Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/coverity.ini"
script:
- *coverity_prep
- *configure
<<: *other_checks_job
<<: *alpine_3_24_amd64_image
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
+ # This job runs `meson reprotest`, not the .configure template, so it passes
+ # its machine file through to reprotest's own `meson setup`.
+ EXTRA_SETUP_FILES: "--native-file ci/reprotest.ini"
before_script:
- *list_installed_package_versions
script:
# or not. But the content of the .a file is unstable under LTO because
# -ffat-lto-objects embeds non-deterministic GIMPLE bytecode. Hence we
# disable dnstap for reproducibility tests.
- - meson reprotest -- -Ddnstap=disabled
+ - meson reprotest -- $EXTRA_SETUP_FILES -Ddnstap=disabled
artifacts:
untracked: true
when: on_failure
stage: system
<<: *base_image
<<: *default_triggering_rules
- variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
script:
- *configure
- *setup_interfaces
gcc:alpine3.24:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "${WITHOUT_LIBEDIT}"
+ EXTRA_SETUP_FILES: "--native-file ci/alpine.ini"
<<: *alpine_3_24_amd64_image
<<: *build_job
gcc:almalinux8:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/almalinux8.ini"
<<: *almalinux_8_amd64_image
<<: *build_job
gcc:almalinux9:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled -Ddeveloper=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/almalinux9.ini"
<<: *almalinux_9_amd64_image
<<: *build_job
gcc:almalinux10:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/almalinux10.ini"
<<: *almalinux_10_amd64_image
<<: *build_job
gcc:8fips:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled -Dfips=enabled -Dtracing=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/8fips.ini"
GIT_CLONE_PATH: "${GIT_CLONE_PATH_INSTANCE_EXECUTOR}"
<<: *almalinux_8fips_amd64_image
<<: *build_job
gcc:9fips:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled -Dfips=enabled -Dleak-detection=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/9fips.ini"
GIT_CLONE_PATH: "${GIT_CLONE_PATH_INSTANCE_EXECUTOR}"
<<: *almalinux_9fips_amd64_image
<<: *build_job
gcc:10fips:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled -Dfips=enabled -Dleak-detection=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/10fips.ini"
GIT_CLONE_PATH: "${GIT_CLONE_PATH_INSTANCE_EXECUTOR}"
<<: *almalinux_10fips_amd64_image
<<: *build_job
gcc:tarball:nosphinx:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled -Ddeveloper=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/tarball-nosphinx.ini"
RUN_MESON_INSTALL: 1
<<: *almalinux_9_amd64_image
<<: *build_job
gcc:bookworm:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/bookworm.ini"
<<: *debian_bookworm_amd64_image
<<: *build_job
gcc:trixie:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
# Tracing needs to be disabled otherwise gcovr fails
- EXTRA_CONFIGURE: "-Doptimization=0 -Db_coverage=true -Dtracing=disabled -Didn=enabled ${WITH_LIBEDIT}"
+ EXTRA_SETUP_FILES: "--native-file ci/coverage.ini"
RUN_MESON_INSTALL: 1
<<: *debian_trixie_amd64_image
<<: *build_job
minimal:gcc:trixie:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Dauto_features=disabled -Dcmocka=enabled -Ddeveloper=disabled -Doptimization=s"
+ EXTRA_SETUP_FILES: "--native-file ci/minimal.ini"
<<: *debian_trixie_amd64_image
<<: *build_job
gcc:trixie:amd64cross32:
variables:
- CFLAGS: "${CFLAGS_COMMON}"
CROSS_COMPILATION: 1
- EXTRA_CONFIGURE: "--cross-file ci/amd64cross32.ini -Didn=enabled -Dgssapi=disabled -Dtracing=disabled ${WITH_LIBEDIT}"
+ EXTRA_SETUP_FILES: "--cross-file ci/amd64cross32.ini"
<<: *debian_trixie_amd64cross32_image
<<: *build_job
gcc:trixie:386:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/trixie386.ini"
<<: *debian_trixie_386_image
<<: *build_job
<<: *debian_trixie_amd64_image
<<: *build_job
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- # See https://gitlab.isc.org/isc-projects/bind9/-/issues/3444
- EXTRA_CONFIGURE: "-Doptimization=3 -Djemalloc=disabled -Dleak-detection=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/ossl3.ini"
RUN_MESON_INSTALL: 1
system:gcc:ossl3:trixie:amd64:
<<: *debian_sid_amd64_image
<<: *build_job
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Doptimization=3 -Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/sid.ini"
system:gcc:sid:amd64:
<<: *debian_sid_amd64_image
gcc:tarball:
variables:
- CC: gcc
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/tarball.ini"
RUN_MESON_INSTALL: 1
<<: *base_image
<<: *build_job
<<: *tumbleweed_latest_amd64_image
<<: *build_job
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -DDEBUG"
- EXTRA_CONFIGURE: "-Didn=enabled -Dgssapi=disabled ${WITH_LIBEDIT}"
+ EXTRA_SETUP_FILES: "--native-file ci/tumbleweed.ini"
system:gcc:tumbleweed:amd64:
<<: *tumbleweed_latest_amd64_image
gcc:jammy:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Dgeoip=disabled -Didn=enabled -Ddoh=disabled -Dcmocka=disabled -Ddnstap=disabled -Dgssapi=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/jammy.ini"
<<: *ubuntu_jammy_amd64_image
<<: *build_job
gcc:noble:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/noble.ini"
<<: *ubuntu_noble_amd64_image
<<: *build_job
gcc:resolute:amd64:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Didn=enabled"
+ EXTRA_SETUP_FILES: "--native-file ci/resolute.ini"
<<: *ubuntu_resolute_amd64_image
<<: *build_job
gcc:asan:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Db_sanitize=address,undefined -Didn=enabled -Djemalloc=disabled -Dtracing=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/asan.ini"
<<: *fedora_44_amd64_image
<<: *build_job
clang:asan:
variables:
- CC: ${CLANG}
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Db_sanitize=address,undefined -Db_lundef=false -Didn=enabled -Djemalloc=disabled -Dtracing=disabled --native-file ci/clang-trixie.ini"
+ EXTRA_SETUP_FILES: "--native-file ci/asan.ini --native-file ci/clang-trixie.ini --native-file ci/clang-sanitizer.ini"
<<: *base_image
<<: *build_job
gcc:tsan:
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -Wno-stringop-overread"
- LDFLAGS: "-Wl,--disable-new-dtags"
- EXTRA_CONFIGURE: "${TSAN_CONFIGURE_FLAGS_COMMON}"
+ EXTRA_SETUP_FILES: "--native-file ci/tsan.ini --native-file ci/tsan-gcc.ini"
<<: *tsan_fedora_44_amd64_image
<<: *build_job
<<: *tsan_debian_trixie_amd64_image
<<: *build_job
variables:
- CC: "${CLANG}"
- CFLAGS: "${CFLAGS_COMMON}"
- LDFLAGS: "-Wl,--disable-new-dtags"
- EXTRA_CONFIGURE: "${TSAN_CONFIGURE_FLAGS_COMMON} -Db_lundef=false --native-file ci/clang-trixie.ini"
+ EXTRA_SETUP_FILES: "--native-file ci/tsan.ini --native-file ci/clang-trixie.ini --native-file ci/clang-sanitizer.ini"
system:clang:tsan:
variables:
clang:trixie:amd64:
variables:
- CC: ${CLANG}
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "--native-file ci/clang-trixie.ini"
+ EXTRA_SETUP_FILES: "--native-file ci/clang-trixie.ini"
RUN_MESON_INSTALL: 1
<<: *debian_trixie_amd64_image
<<: *build_job
clang:freebsd14:amd64:
variables:
- CC: clang
- CFLAGS: "${CFLAGS_COMMON}"
GIT_CLONE_PATH: "${GIT_CLONE_PATH_INSTANCE_EXECUTOR}"
- # Use MIT Kerberos5 for BIND 9 GSS-API support because of FreeBSD Heimdal
- # incompatibility; see https://bugs.freebsd.org/275241.
- EXTRA_CONFIGURE: "${WITH_LIBEDIT} -Doptimization=g --native-file ci/freebsd.ini"
+ EXTRA_SETUP_FILES: "--native-file ci/freebsd.ini"
<<: *build_job
<<: *freebsd_autoscaler_14_amd64_tags
clang:freebsd15:amd64:
variables:
- CC: clang
- CFLAGS: "${CFLAGS_COMMON}"
GIT_CLONE_PATH: "${GIT_CLONE_PATH_INSTANCE_EXECUTOR}"
- # Use MIT Kerberos5 for BIND 9 GSS-API support because of FreeBSD Heimdal
- # incompatibility; see https://bugs.freebsd.org/275241.
- EXTRA_CONFIGURE: "${WITH_LIBEDIT} -Doptimization=g --native-file ci/freebsd.ini"
+ EXTRA_SETUP_FILES: "--native-file ci/freebsd.ini"
<<: *build_job
<<: *freebsd_autoscaler_15_amd64_tags
<<: *tumbleweed_latest_amd64_image
<<: *build_job
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -DDEBUG"
- EXTRA_CONFIGURE: "-Didn=enabled ${WITH_LIBEDIT}"
+ EXTRA_SETUP_FILES: "--native-file ci/tumbleweed.ini"
before_script:
- *list_installed_package_versions
- zypper --non-interactive rm --clean-deps libuv-devel
<<: *respdiff_job
<<: *base_image
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -DISC_TRACK_PTHREADS_OBJECTS"
- EXTRA_CONFIGURE: "-Doptimization=g"
+ EXTRA_SETUP_FILES: "--native-file ci/respdiff.ini"
MAX_DISAGREEMENTS_PERCENTAGE: "0.3"
script:
- bash respdiff.sh -m /usr/lib/x86_64-linux-gnu/libjemalloc.so.2 -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" -r "${PWD}/respdiff" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named"
<<: *respdiff_job
<<: *base_image
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Doptimization=g -Db_sanitize=address,undefined -Djemalloc=disabled"
+ EXTRA_SETUP_FILES: "--native-file ci/respdiff-asan.ini"
MAX_DISAGREEMENTS_PERCENTAGE: "0.3"
script:
- bash respdiff.sh -s named -q "${PWD}/100k_mixed.txt" -c 3 -w "${PWD}/rspworkdir" -r "${PWD}/respdiff" "${CI_PROJECT_DIR}" "/usr/local/respdiff-reference-bind/sbin/named"
<<: *respdiff_job
<<: *tsan_debian_trixie_amd64_image
variables:
- CC: "${CLANG}"
- CFLAGS: "${CFLAGS_COMMON}"
- LDFLAGS: "-Wl,--disable-new-dtags"
- EXTRA_CONFIGURE: "${TSAN_CONFIGURE_FLAGS_COMMON} -Db_lundef=false"
+ EXTRA_SETUP_FILES: "--native-file ci/tsan.ini --native-file ci/clang-trixie.ini --native-file ci/clang-sanitizer.ini"
MAX_DISAGREEMENTS_PERCENTAGE: "0.3"
TSAN_SYMBOLIZER_PATH: "${TSAN_SYMBOLIZER_PATH_DEBIAN}"
script:
<<: *respdiff_job
<<: *base_image
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON}"
- EXTRA_CONFIGURE: "-Doptimization=g"
+ EXTRA_SETUP_FILES: "--native-file ci/respdiff-third-party.ini"
MAX_DISAGREEMENTS_PERCENTAGE: "0.5"
script:
- bash respdiff.sh -s third_party -q "${PWD}/100k_mixed.txt" -c 1 -w "${PWD}/rspworkdir" -r "${PWD}/respdiff" "${CI_PROJECT_DIR}"
respdiff:recent-named:
<<: *respdiff_recent_named
variables:
- CC: gcc
- CFLAGS: "${CFLAGS_COMMON} -DISC_TRACK_PTHREADS_OBJECTS"
- EXTRA_CONFIGURE: "-Doptimization=g"
+ EXTRA_SETUP_FILES: "--native-file ci/respdiff.ini"
MAX_DISAGREEMENTS_PERCENTAGE: "0.15"
# Performance tests