ci: compiler-compat matrix (gcc 14-16, clang 18-21; arm64/s390x) + fixes - #45
Merged
Conversation
The clang flag list includes -Wno-pre-c11-compat, which older clang releases do not recognise; under -Werror they fail the build with -Wunknown-warning-option. Add -Wno-unknown-warning-option first so clang silently ignores any -Wno-* flag it does not know (supported across all clang versions we target), keeping the newer suppressions without breaking older clang. Signed-off-by: Jo5ta <Jo5ta@mail.de>
Jo5ta
force-pushed
the
jo5ta/ci-compiler-compat-matrix
branch
from
July 20, 2026 10:49
cdf55f7 to
d39c3f7
Compare
Jo5ta
force-pushed
the
jo5ta/ci-compiler-compat-matrix
branch
from
July 20, 2026 10:52
d39c3f7 to
0e5ae91
Compare
Add a compiler-compat CI leg that compiles, links, and runs a minimal tracing example against every released GCC (>=14) and clang (>=18) - the cheap gate that a consumer can use a tracepoint on a given compiler, without the full test suite. Each matrix entry runs in a pinned official compiler image and invokes scripts/ci-cd/step_compat.sh, which configures a minimal build (tracing library + simple_c/simple_cpp only; no external deps), builds and runs the examples, and verifies each produces a .clltk_trace file. The floors (GCC 14, clang 18) are set by the Ws inline-asm constraint the tracepoint macros use for their _metaptr metadata sections; older compilers reject it with impossible/invalid-constraint errors. Documented in the README. Runnable locally: CC=gcc-14 CXX=g++-14 ./scripts/ci-cd/step_compat.sh Signed-off-by: Jo5ta <Jo5ta@mail.de>
Jo5ta
force-pushed
the
jo5ta/ci-compiler-compat-matrix
branch
from
July 20, 2026 11:14
0e5ae91 to
ed102ac
Compare
step_build_kernel_module.sh installed kernel-devel with a plain 'dnf install', which hits the same stale-metadata failure fixed for step_kernel_runtime.sh: the weekly-cached container metadata can reference a kernel-devel NEVRA Fedora has pruned from its mirrors, so the install 404s on every mirror. Apply the same 'dnf --refresh' + retry treatment. Signed-off-by: Jo5ta <Jo5ta@mail.de>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds a
compiler-compatCI leg that compiles, links, and runs a minimal tracing example against every supported GCC and clang version, plus the small library fix that portability across clang versions requires.What the leg does
gcc:14/15/16,silkeh/clang:18/19/20/21(7 legs,fail-fast: false).scripts/ci-cd/step_compat.sh: minimal CMake configure (tracing library +simple_c/simple_cpponly — CLI tool, decoders, snapshot, kernel module, tests off, so no external deps), build the two examples, run them withCLLTK_TRACING_PATHset, and verify each writes a.clltk_tracefile.-Werrorkept on so new-compiler warnings surface.CC=gcc-14 CXX=g++-14 ./scripts/ci-cd/step_compat.sh.Supported-compiler floor (discovered while building this)
The tracepoint macros use the
Wsinline-asm constraint (symbol+offset, for the_metaptrmetadata sections). It only exists in GCC ≥14 and clang ≥18; older compilers reject the build withimpossible/invalid constraint in 'asm'. So the matrix starts at those floors, and the requirement is now documented in the README.Library fix
tracing_library/CMakeLists.txtlisted-Wno-pre-c11-compatfor all clang, but older clang doesn't know that flag and errors under-Werror -Wunknown-warning-option. Added-Wno-unknown-warning-optionfirst so clang silently ignores any-Wno-*it doesn't recognise — needed for clang 18 to pass.Testing
Every matrix leg was run locally in its real image (docker): gcc 14/15/16 and clang 18/19/20/21 all build, run, and produce trace files. Also confirmed the floor: gcc 12/13 and clang 16/17 fail on the
Wsconstraint as expected.Also included: kernel-module build dnf refresh
step_build_kernel_module.shinstalledkernel-develwith a plaindnf install, hitting the same stale-metadata 404 that was fixed forstep_kernel_runtime.sh. Applied the samednf --refresh+ retry treatment, so thebuild-kernel-modulejob stops flaking on pruned Fedora kernel packages.