New CI workflows#170
Merged
Merged
Conversation
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.
This PR brought to you by a robot.
Replaces the four legacy workflows with a single matrix workflow plus dedicated workflows for ThreadSanitizer, examples, downstream-consumer smoke, and docs. Adds a Docker dev image for running TSan locally on Apple Silicon. Raises the documented minimum compiler floor.
New workflows
core.yml— single matrix replacing four legacy files. 11 cells: Linux gcc/clang × OpenBLAS/MKL × Release/Debug × {none, ASan, UBSan}; macOS 14 Apple Clang (serial) + Homebrew LLVM (OpenMP) × Accelerate × {none, ASan}; macOS 15 Homebrew LLVM tracking the latest runner.ctesttwice —OMP_NUM_THREADS=1and=4— so the thread-independence invariant is actually exercised, not just compiled.RandBLAS_HAS_MKLcodepaths get real coverage instead of "whichever blaspp happened to pick."thread-sanitizer.yml— clang + libomp +-fsanitize=threadon Linux. Defends the thread-independence invariant on the RNG state machinery that ASan can't catch.examples.yml— buildsexamples/against an installed RandBLAS (withlapackppfrom the composite action). Catches downstream API drift in real consumer code.downstream-consumer.yml+test/downstream/—find_package(RandBLAS)from a tiny isolated consumer. Guards the install/export rules inRandBLAS/CMakeLists.txt.docs.yml—doxygen + sphinx-build. Shadow build for now (no-W) — follow-up after the docstring warning backlog is cleared..github/actions/setup-randblas-deps/— composite action installing system deps and building blaspp + Random123 (+ optionally lapackpp), cached on upstream commit SHA. Eliminates the heavy copy-paste across the old workflows.Removed
core-linux.yaml,core-macos.yml,openmp-macos.yaml,openmp-macos-15.yaml). The last two were converging to the same job oncemacos-latestrolls to 15.Local TSan tooling
docker/tsan/Dockerfile+run.sh— Linux container with clang + libomp + sanitizer runtimes +llvm-symbolizer+ baked blaspp/Random123. Necessary because TSan can't run natively on Apple Silicon (shadow-memory mapping fails at startup before TSan can even print its banner). Usage:./docker/tsan/run.sh build-and-test— full TSan ctest pass in one shot../docker/tsan/run.sh— interactive shell for iteration../docker/tsan/run.sh rebuild-image— refresh blaspp / Random123 upstream.Hygiene
actions/checkout@v4everywhere (three of four legacy files were on deprecated@v2).concurrency:group withcancel-in-progress: trueso superseded PR runs auto-cancel.push: branches: [main]trigger so main's CI status reflects current state, not just the merge-time check.make -j$(nproc)/sysctl -n hw.logicalcpuinstead of-j2.Doc updates
CLAUDE.mdandINSTALL.md: documented minimum compiler raised gcc-9 → gcc-13 to matchubuntu-latest. Old gcc-8.5 /-fconceptsworkaround note removed.Explicitly not in this PR
-Won docs — deferred until the docstring warning baseline is clean.Verification
core.ymlcells green on this branch.thread-sanitizer.yml: locally green viadocker/tsan/run.sh build-and-test. Instrumentation verified end-to-end by planting a deliberate harmless race indense_skops.hhand confirming TSan caught it, then reverting — so the clean baseline isn't a green-because-everything-is-suppressed.examples.ymlanddownstream-consumer.ymlre-pointed at the new CMake config layout from CMake improvements #169 (<prefix>/lib/cmake/RandBLAS/) and switched to-DCMAKE_PREFIX_PATH=<prefix>per the new INSTALL.md recommendation, so the same class of layout-change breakage can't recur.