|
| 1 | +# CI Known Issues |
| 2 | + |
| 3 | +This document tracks CI limitations and their resolutions. Most issues |
| 4 | +stemmed from the migration from CPM/FetchContent to Conan 2.0. |
| 5 | + |
| 6 | +## clang-tidy and Conan include paths (RESOLVED) |
| 7 | + |
| 8 | +**Status:** Fixed by removing the `-p` flag from `StaticAnalyzers.cmake`. |
| 9 | + |
| 10 | +**Root cause:** The `-p` flag in `CMAKE_CXX_CLANG_TIDY` options told CMake |
| 11 | +to have clang-tidy use `compile_commands.json` instead of passing the full |
| 12 | +compile command directly. This broke include resolution for Conan packages |
| 13 | +whose headers live in external `-isystem` paths (`~/.conan2/p/...`). Without |
| 14 | +`-p`, CMake appends `-- <full compile command>` to clang-tidy, which includes |
| 15 | +all `-isystem` paths and works reliably with Conan. |
| 16 | + |
| 17 | +## macOS + GCC Conan ABI (RESOLVED) |
| 18 | + |
| 19 | +**Status:** Fixed by overriding the Conan profile for macOS GCC in CI. |
| 20 | + |
| 21 | +**Root cause:** Conan's default macOS profile detects Apple Clang and sets |
| 22 | +`compiler.libcxx=libc++`. When building with GCC 14 (which uses `libstdc++`), |
| 23 | +this causes ABI mismatches at link time. Fixed by creating a GCC-specific |
| 24 | +Conan profile with `compiler=gcc` and `compiler.libcxx=libstdc++11`. |
| 25 | + |
| 26 | +## codecov fail_ci_if_error (RESOLVED) |
| 27 | + |
| 28 | +**Status:** Set to `true`. Requires `CODECOV_TOKEN` repository secret. |
| 29 | + |
| 30 | +**Setup:** Add `CODECOV_TOKEN` to the repository secrets at |
| 31 | +`Settings > Secrets and variables > Actions`. The token is obtained from |
| 32 | +[codecov.io](https://codecov.io) after linking the repository. Derived repos |
| 33 | +must configure their own token. |
| 34 | + |
| 35 | +## GCC coverage on macOS ARM |
| 36 | + |
| 37 | +**Status:** Skipped in `cmake/Tests.cmake` when `APPLE AND GNU`. |
| 38 | + |
| 39 | +**Root cause:** GCC's `--coverage` flag links against `libgcov`, which |
| 40 | +Apple's ARM linker can't find. Tests still run and pass; only coverage |
| 41 | +instrumentation is skipped. GCC coverage works on Linux. |
| 42 | + |
| 43 | +## Intel ICX coverage |
| 44 | + |
| 45 | +**Status:** gcovr skipped when `matrix.compiler == intel` in `ci.yml`. |
| 46 | + |
| 47 | +**Root cause:** Intel ICX produces coverage data in a format incompatible |
| 48 | +with `gcov`. Tests still run and pass; only the coverage report is skipped. |
| 49 | + |
| 50 | +**Possible fix:** Use `llvm-cov` from the oneAPI toolkit to process ICX |
| 51 | +coverage data. Nice-to-have, not a blocker. |
0 commit comments