From: Oto Šťáva Date: Fri, 31 May 2024 13:04:25 +0000 (+0200) Subject: .gitlab-ci: use Arch for linting X-Git-Tag: v6.0.8~14^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=68688fac013a4c16a476acc15c366a8ce07ed46e;p=thirdparty%2Fknot-resolver.git .gitlab-ci: use Arch for linting This allows us to use the newest versions of linter tools. --- diff --git a/.clang-tidy b/.clang-tidy index bc1d69c3e..4d77c1a7d 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -37,6 +37,10 @@ Checks: |- -readability-magic-numbers, -readability-non-const-parameter, -readability-redundant-declaration, + -clang-analyzer-core.UndefinedBinaryOperatorResult + +# TODO: remove `-clang-analyzer-core.UndefinedBinaryOperatorResult` when we +# upgrade to Clang >=18 (it's a false positive ) WarningsAsErrors: |- cert-*, @@ -45,7 +49,7 @@ WarningsAsErrors: |- readability-*, -readability-non-const-parameter, -HeaderFilterRegex: '(contrib/ucw/*.h|/usr/*.h)' +HeaderFilterRegex: 'contrib/ucw/*.h' CheckOptions: - key: readability-identifier-naming value: 'lower_case' diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e83ecb788..7b6381339 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -20,7 +20,7 @@ variables: # IMAGE_TAG is a Git branch/tag name from https://gitlab.nic.cz/knot/knot-resolver-ci # In general, keep it pointing to a tag - use a branch only for development. # More info in the knot-resolver-ci repository. - IMAGE_TAG: 'v20240506' + IMAGE_TAG: 'v20240604' IMAGE_PREFIX: '$CI_REGISTRY/knot/knot-resolver-ci' image: $IMAGE_PREFIX/debian12-knot_3_3:$IMAGE_TAG @@ -84,6 +84,12 @@ stages: reports: junit: build_ci*/meson-logs/integration.deckard.junit.xml +.after_build_arch: &after_build_arch + <<: *after_build + image: $IMAGE_PREFIX/arch:$IMAGE_TAG + needs: + - build-arch + .nodep: &nodep <<: *common needs: [] @@ -112,6 +118,15 @@ archive: script: - apkg make-archive +build-arch: + <<: *build + image: $IMAGE_PREFIX/arch:$IMAGE_TAG + script: + - meson build_ci_arch --prefix=$PREFIX -Dmalloc=disabled -Dwerror=true + - ninja -C build_ci_arch + - ninja -C build_ci_arch install >/dev/null + - ${MESON_TEST} --suite unit --suite config --suite dnstap --no-suite snowflake + build-stable: <<: *build script: @@ -264,7 +279,7 @@ lint:pedantic: - ninja -C build_pedantic_clang lint:tidy: - <<: *after_build + <<: *after_build_arch stage: sanity script: - ninja -C build_ci* tidy diff --git a/meson.build b/meson.build index 535c497cc..8ac3e6e38 100644 --- a/meson.build +++ b/meson.build @@ -181,6 +181,13 @@ add_project_arguments( language: 'c', ) +if meson.get_compiler('c').get_id() == 'gcc' + add_project_arguments( + '-Wno-nonnull-compare', # reasonable to do in assertions + language: 'c', + ) +endif + # Files for clang-tidy lint c_src_lint = files() diff --git a/tests/pytests/kresd.py b/tests/pytests/kresd.py index ca15e0d7e..21d964555 100644 --- a/tests/pytests/kresd.py +++ b/tests/pytests/kresd.py @@ -312,5 +312,7 @@ KRESD_LOG_IO_CLOSE = re.compile(r'^\[io \].*closed by peer.*') @contextmanager def make_kresd(workdir, certname=None, ip='127.0.0.1', ip6='::1', **kwargs): with Kresd(workdir, ip=ip, ip6=ip6, certname=certname, **kwargs) as kresd: - yield kresd - print(kresd.partial_log()) + try: + yield kresd + finally: + print(kresd.partial_log())