2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-22 01:59:26 +00:00

43300 Commits

Author SHA1 Message Date
Štěpán Balážik
a62fdee97f Remove scripts related to the automake test driver
These were left in in the Meson migration.
2025-06-26 13:24:33 +00:00
Petr Špaček
e28714ac67 fix: ci: Simplify maintenance of NO_BUILD_TEST_PREREQ CI hack
Merge branch 'pspacek/fix-ci-meson-170-unit-tests' into 'main'

See merge request isc-projects/bind9!10644
2025-06-26 12:50:31 +00:00
Petr Špaček
052269a357 Simplify maintenance of NO_BUILD_TEST_PREREQ CI hack
Our split between build and test phases in CI triggers odd corner case
in Meson:
- Newer Meson versions (1.7.0+) do not build test targets as part of
  "all" target.
- We copy build artifacts from build phase into test container.
- meson test --no-rebuild does not build test artifacts even if they are
  missing.
- To build these test binaries Meson has special target
  "meson-test-prereq". This target exists only in Meson >= 0.63.
- Ubuntu 22.04 has only Meson 0.61.2 so this target does not exist.

To counter this problem, we introduced BUILD_TEST_PREREQ variable in CI
to explicitly build "meson-test-prereq" target in the "build" phase only
inside images with new-enough Meson versions. This worked, but it forced
us to keep track of Meson versions on various
distros and update the variable accordingly.

This commit inverts the logic so we build the special target by default
(in the build phase) and skip building it only if Meson version is too
old. So once we drop the old image, the variable (or rather it's usage)
will be gone and we don't need to touch it for newer images.

We have also considered installing newer Meson into the test image, but
decided to keep the old version around so we can test minimal Meson
version specified in meson.build file.
2025-06-26 14:43:17 +02:00
Michal Nowak
ae67c70be7 chg: ci: Disable Kerberos in tumbleweed
In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.

Closes #5394

Merge branch '5394-disable-kerberos-in-tumbleweed' into 'main'

See merge request isc-projects/bind9!10643
2025-06-26 12:56:08 +02:00
Michal Nowak
1b2c191bed Disable Kerberos in tumbleweed
In the tumbleweed image, we utilize LibreSSL. Several BIND 9 libraries
are linked against LibreSSL's libcrypto.so.55, and when Kerberos is
enabled, we link against libk5crypto.so.3, which in turn links against
OpenSSL's libcrypto.so.3. This might theoretically lead to a symbol
conflict.
2025-06-26 12:54:45 +02:00
Michał Kępień
324b5786dc fix: nil: Fix version description in a startup log message
Commit 5cd6c173ff74309ae7fb73b3e4c754f1589eaddc changed the contents of
the PACKAGE_DESCRIPTION preprocessor macro from " (<description>)" to
just "<description>" and missed a spot while adjusting all uses of this
macro in the code base.  Fix formatting for that malformed log message,
emitted upon named startup.

See #5379

Merge branch '5379-fix-version-description-in-a-startup-log-message' into 'main'

See merge request isc-projects/bind9!10646
2025-06-26 12:06:35 +02:00
Michał Kępień
12829660fc
Fix version description in a startup log message
Commit 5cd6c173ff74309ae7fb73b3e4c754f1589eaddc changed the contents of
the PACKAGE_DESCRIPTION preprocessor macro from " (<description>)" to
just "<description>" and missed a spot while adjusting all uses of this
macro in the code base.  Fix formatting for that malformed log message,
emitted upon named startup.
2025-06-26 12:05:53 +02:00
Štěpán Balážik
4d76a92e6a fix: ci: Ensure that junit.xml is present and non-empty after each system/unit test job
Previously, JUnit files were not generated or were generated empty for various reasons for some system/unit test runs.

Now, the number of tests collected for a MR is up from about 4k to 5.8k in the "Tests" tab of a pipeline.

Additionally, there is a check that ensures that [a somewhat sane](c5a271eb8b) `junit.xml` file is generated after every system/unit test job and fails the job otherwise.

Closes #5316

Merge branch '5316-ensure-junit-xml' into 'main'

See merge request isc-projects/bind9!10556
2025-06-26 10:04:02 +00:00
Štěpán Balážik
4303e06919 Clean up the definitions and usages of &unit_test_* anchors
Remove redundant indirections and overwrites.
2025-06-26 11:17:30 +02:00
Štěpán Balážik
4ec1a37ca0 Hoist the junit and artifact handling to the &unit_test_common anchor
In some cases the report wasn't generated, sometimes it wasn't kept
properly. This unifies the way artifacts are generated and kept.
2025-06-26 11:17:30 +02:00
Štěpán Balážik
cbe9972d3e Clean up the definitions and usages of &system_test_* anchors
Remove redundant indirections and overwrites.
2025-06-25 17:40:05 +02:00
Štěpán Balážik
c61ff639b3 Hoist the artifact handling to the &system_test_common anchor
In the past artifacts of different types of system test jobs were
treated differently but this is no longer the case.
2025-06-25 17:36:29 +02:00
Štěpán Balážik
dfd6097f7b Add a check for existence and sanity of the junit.xml file
And use if after system tests are run using pytest.
2025-06-25 17:24:46 +02:00
Petr Špaček
117091c4fe fix: nil: Be more explicit about CVE checklist milestones
Merge branch 'pspacek/cve-checklist-more-explicit-milestones' into 'main'

See merge request isc-projects/bind9!10626
2025-06-25 15:00:32 +00:00
Petr Špaček
44b1ce6804 Be more explicit about CVE checklist milestones 2025-06-25 16:35:40 +02:00
Alessio Podda
01a49e8e47 chg: dev: Change QP and qpcache logging from DEBUG(1) to DEBUG(3)
Currently qp and qpcache logs are too verbose and enabled at a
level too low compared to how often the logging is useful.

This commit increases the logging level, while keeping it configurable
via a define.

Merge branch 'alessio/higher-level-qp-log' into 'main'

See merge request isc-projects/bind9!10604
2025-06-25 13:22:59 +00:00
Alessio Podda
ef95806e05 Change QP and qpcache logging from DEBUG(1) to DEBUG(3)
Per pspacek, currently qp and qpcache logs are too verbose and enabled at a
level too low compared to how often the logging is useful.

This commit increases the logging level, while keeping it configurable
via a define.
2025-06-25 14:37:01 +02:00
Michal Nowak
27f45d9f64 chg: doc: Make empty changelog fatal error
The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.

Merge branch 'mnowak/make-empty-changelog-fatal' into 'main'

See merge request isc-projects/bind9!10591
2025-06-25 14:06:36 +02:00
Michal Nowak
4d0ae4068f Make empty changelog fatal error
The prep_doc_mr.py script of the bind9-qa repo needs a way to know that
gitchangelog.py did not produce entries. In the case of release notes,
it dies with "No commits matching given revlist". For changelog entries
it used to warn about "Empty changelog", but did not return non-zero
exit code.
2025-06-25 14:06:05 +02:00
Petr Špaček
5b591c74dc fix: test: Do not rely on failure in default configuration
Merge branch 'main-systemtest-cpu-hang' into 'main'

See merge request isc-projects/bind9!10631
2025-06-25 11:35:53 +00:00
Petr Menšík
8e789ea62f Do not expect fail in cpu test default configuration
Previous CPU test relied on either missing default named.conf or the
missing permissions to write into its default directory. In short that
default configuration would be unusable with current user. It would hang
indefinitely at cpu test if the named user could write into directory
specified in default configuration.

Change it instead to explicitly try non-existent configuration file.
It will still fail immediately, but will not rely on running user or
presence of file at default configuration file path.
2025-06-25 11:35:27 +00:00
Michal Nowak
4fa74b4c8c chg: ci: Add meson support to util/release-tarball-comparison.sh
Related: #5379

Merge branch 'mnowak/fix-tarball-comparison-with-meson' into 'main'

See merge request isc-projects/bind9!10620
2025-06-25 12:53:25 +02:00
Michal Nowak
055bc118eb Add meson support to util/release-tarball-comparison.sh 2025-06-25 12:48:13 +02:00
Alessio Podda
32e86ed643 chg: dev: Use RCU for rad name
The RAD/agent domain is a functionality from RFC 9567 that provides
a suffix for reporting error messages. On every query context reset,
we need to check if a RAD is configured and, if so, copy it.

Since we allow the RAD to be changed by reconfiguring the zone,
this access is currently protected by a mutex, which causes contention.

This commit replaces the mutex with RCU to reduce contention. The
change results in a 3% performance improvement in the 1M delegation
test.

Merge branch 'alessio/rcu-rad' into 'main'

See merge request isc-projects/bind9!10616
2025-06-25 08:30:28 +00:00
Alessio Podda
19818aebf7 Use RCU for rad name
The RAD/agent domain is a functionality from RFC 9567 that provides
a suffix for reporting error messages. On every query context reset,
we need to check if a RAD is configured and, if so, copy it.

Since we allow the RAD to be changed by reconfiguring the zone,
this access is currently protected by a mutex, which causes contention.

This commit replaces the mutex with RCU to reduce contention. The
change results in a 3% performance improvement in the 1M delegation
test.
2025-06-25 09:55:02 +02:00
Mark Andrews
e20d44f658 new: ci: Update Clang to version 20
Merge branch 'mnowak/llvm-20' into 'main'

See merge request isc-projects/bind9!10565
2025-06-25 13:22:49 +10:00
Mark Andrews
d36b0f2b43 Ignore reformat sources with up-to-date clang-format-20 2025-06-25 12:47:02 +10:00
Mark Andrews
422b9118e8 Use clang-format-20 to update formatting 2025-06-25 12:44:22 +10:00
Mark Andrews
eeafcee7ad Preserve brackets around string concatenation
We need disable clang-format here to preserve the brackets around
the string concatenation to prevent -Wstring-concatenation -Werror
breaking the build.
2025-06-25 12:44:22 +10:00
Mark Andrews
3620db5ea6 Preserve brackets in DNS_SLABHEADER_GETATTR macro
We need to turn off clang-format to preserve the brackets as
'attribute' can be an expression and we need it to be evaluated
first.

Similarly we need the entire result to be evaluated independent of
the adjoining code.
2025-06-25 12:44:22 +10:00
Michal Nowak
31922536c0 Update Clang to version 20 2025-06-25 12:44:22 +10:00
Nicki Křížek
ea52887e7a chg: ci: Add newline for changelog CI job
In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.

Merge branch 'nicki/ci-changelog-add-missing-newline' into 'main'

See merge request isc-projects/bind9!10628
2025-06-24 17:30:12 +02:00
Nicki Křížek
ebf155ecc8 Add newline for changelog CI job
In case the changelog file doesn't have an empty line at the end of the
file, the job may fail with the following error:

WARNING: Bullet list ends without a blank line; unexpected unindent.

This typically happens in MRs targeting the -S edition, as those
changelogs usually don't have an empty newline. This change ensures the
changelog job can pass and verify the title/desc contents even in those
cases.
2025-06-24 17:29:26 +02:00
Michal Nowak
b611c43915 fix: ci: Fix release CI job with meson
Closes #5364

Merge branch '5364-fix-release-job-with-meson' into 'main'

See merge request isc-projects/bind9!10621
2025-06-24 17:00:48 +02:00
Michal Nowak
9809735195 Fix release CI job with meson
Fix documentation paths.
2025-06-24 17:00:05 +02:00
Michal Nowak
54ea6722e5 Create "srcid" file as part of release tarball
Change the name of the source ID file to what we used to deliver.
2025-06-24 17:00:05 +02:00
Michal Nowak
875c609424 Build epub ARM as part of docs jobs 2025-06-24 17:00:05 +02:00
Nicki Křížek
ecedefa40a chg: test: Make extra_artifacts check optional
There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.

Merge branch 'nicki/make-extra-artifacts-check-optional' into 'main'

See merge request isc-projects/bind9!10622
2025-06-24 16:57:27 +02:00
Nicki Křížek
c06dc71cd5 Make extra_artifacts check optional
There is an ongoing debate about the usefulness of the extra artifacts
check. While it might be useful to detect unexpected behaviour in some
tests, it feels extraneous in many cases. This change provides a middle
ground by making the artifact checking optional. This might be
especially useful for writing new tests, since the author gets to decide
whether the check is useful -- and can utilize it, or can skip it for
sake of brevity.
2025-06-24 16:56:53 +02:00
Petr Špaček
c7d0c7dcb0 fix: nil: Do not include benchmark data in tarball
Related: #5379

Merge branch 'pspacek/do-not-distribute-benchmark-data' into 'main'

See merge request isc-projects/bind9!10619
2025-06-24 12:39:04 +00:00
Michal Nowak
b890ff46cc Drop empty directory bin/rndc/include/
It should have been removed as part of
90880522259a389c7e4e29a240370e676b7d2b25.
2025-06-24 12:38:37 +00:00
Michal Nowak
fcb2203431 Do not include empty directories cocci and .reuse in tarball 2025-06-24 12:38:37 +00:00
Michal Nowak
4ffab46059 Do not include cocci/ data in tarball 2025-06-24 12:38:37 +00:00
Petr Špaček
525c6ae983 Do not include benchmark data in tarball
names.csv file triples (compressed) tarball size.
meson dist respects .gitattributes so we don't need to add special magic
to meson.build.
2025-06-24 12:38:37 +00:00
Michal Nowak
414e13ce3e new: ci: Add Alpine Linux 3.22
Merge branch 'mnowak/alpine-3.22' into 'main'

See merge request isc-projects/bind9!10539
2025-06-24 14:02:54 +02:00
Michal Nowak
b20c71c2dc
Add Alpine Linux 3.22 2025-06-24 13:25:06 +02:00
Colin Vidal
b49f83a3e6 chg: dev: parse user configuration before exclusive mode
Previously, `named.conf` was parsed while the server was in exclusive (i.e., single-threaded) mode and unable to answer queries. This could cause an unnecessary delay in query processing when the file was large. We now delay entry into exclusive mode until after the configuration has been parsed, but before it is applied.

Merge branch 'colin/configparse-before-exclusive' into 'main'

See merge request isc-projects/bind9!10418
2025-06-24 10:52:11 +02:00
Colin Vidal
349cc060f4 wait for reload completed in emptyzones system test
The emptyzones system test ran two consecutive "rndc reload" commands
without waiting for the first one to complete. It used to work because
the commands were serialized, but now an rndc reconfig/reload command is
ignored if another one is already running, so the emptyzones test is
more likely to fail.

Fix this problem by waiting for the log message indicating that all the
zones are loaded before attempting the next reload.
2025-06-23 23:20:30 -07:00
Colin Vidal
209b30d563 log-based test for load/apply config
Add a new system test which checks named output when starting,
reconfiguring and reloading the server. It checks that the steps where
configuration is loaded, when named enters exclusive mode, and when the
configuration is applied are all logged, and that they occur in the
correct order. This adds a guard/warning to keep the parsing of the
named.conf outside of the exclusive mode.
2025-06-23 10:45:31 -07:00
Colin Vidal
d7416bb472 ignore reload request if in a reload process
Ignore an 'rndc reload' or 'rndc reconfig' command if received by named
while the server is currently reloading itself.
2025-06-23 10:45:14 -07:00