Skip compilers that can never build Catch2 in the nightly library build - #2329
Merged
Merged
Conversation
Catch2 v3 requires C++14 and a hosted standard library. gcc 4.8.5/5.1/5.5 fail on the _sr string literal operator and std::remove_reference_t, and the avr/m68k/sh gcc 16.1 targets have no <ctime>/<type_traits>. They fail on every nightly rebuild and are the first errors in the log, which is what the daily audit keeps reporting as a catch2 compatibility problem. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Copilot wasn't able to review any files in this pull request.
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
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.
The
nightly/catch2job fails every day upstream Catch2 has new commits (e.g. runs on 21, 23, 24, 25 Aug:217 packages built OK, 0 skipped, and 57 failed build) and "passes" with0 built, 270 skippedon days it doesn't. The first errors in the log are always gcc 4.8.5 failing onoperator"" _sr, which is what the daily audit has been reporting as a catch2/compiler compatibility problem. It isn't one: Catch2 v3 requires C++14 (target_compile_features(Catch2 PUBLIC cxx_std_14)), and_sris an ordinary constexpr UDL that hasn't changed upstream since 2025.This adds
skip_compilers(precedent: spdlog) for the compilers that cannot build Catch2 for reasons intrinsic to Catch2, i.e. the ones that fail on every one of their configs and always will:g485,g510,g550operator"" _sr,std::remove_reference_t,operator>>errorsavrg1610,m68kg1610,shg1610fatal error: ctime: No such file or directory,type_traitslikewiseThat's 9 of the 57 failures. I deliberately left the rest alone because they are not about Catch2 and hiding them per library would be the wrong place:
x86+libc++config on every clang 13 to 22, trunk, the assertion builds, armv7/armv8 clang:fatal error: '__config_site' file not found. The x86_64 libc++ and both libstdc++ configs of the same compilers build fine, soskip_compilerscan't express it (disable_clang_32bit/disable_clang_libcppare per compiler, not per combination).fmtfails the same way. A generic "does this compiler have a 32-bit libc++" probe inlibrary_builder.pywould fix it for every library.g63,g72(gcc_ld-fixbuilds): cmake's compiler test can't findcrt1.o/crti.o. Environment.arm1031_10,armug1520,armug1610: cmake compiler test fails at link. Cross toolchains without a sysroot set up for cmake.aocc520: 32-bit configs only,lib32/libstdc++.so is incompatible with elf64-x86-64.edg-6_8-default-15: cmake rejectstarget_compile_features;edg-experimental-reflection:eccp: cannot open object file.So the job will still go red on rebuild days after this; the noise it removes is the misleading part at the top of the log. Happy to follow up on the libc++/x86 probe separately if that's wanted, since it accounts for most of what's left.
Checked with
bin/ce_install --enable nightly list libraries/c++/nightly/catch2that the entry still loads; I have no local conan setup to run the build itself.🤖 Generated with Claude Code