COMP: Build the optional code paths in the per-PR workflow - #75
Conversation
cmake-multi-platform.yml is the workflow that runs on every pull
request, and it passes no options at all. With the defaults that means
cifti/ and fsliolib/ are never compiled, and neither are the blocks
behind FSLSTYLE, PIGZ and REJECT_COMPLEX.
USE_CIFTI_CODE OFF
USE_FSL_CODE OFF
FSLSTYLE_NAME_CONFLICTS OFF -> -DFSLSTYLE
FSLSTYLE_PIGZ_SUPPORT OFF -> -DPIGZ
FSLSTYLE_REJECT_COMPLEX OFF -> -DREJECT_COMPLEX
So a PR that changes any of those files collects four green checks that
never built it. Several open PRs are in exactly that position.
The matrix gains an 'options' axis: 'default' is what a consumer gets
with no arguments, 'all' turns the optional libraries and the FSL parity
defines on. Both are kept, because the default build is what ships and
a change can break it while the fuller one still compiles. Four jobs
become eight, each about half a minute.
expat is installed for the Linux 'all' jobs; cifti needs it and the
default jobs do not.
Verified on master before writing this, with the test suite:
default build OK, tests pass
+cifti +fsl build OK, tests pass
+cifti +fsl +FSLSTYLE build OK, tests pass, doPigz/doPigz2
present in nifti2_io.c.o
COMPILE_NIFTIUNUSED_CODE is deliberately left out. It guards code the
project itself labels unused, so compiling it in CI would commit to
keeping it working; whether that code should exist at all is a separate
question.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Reviewed as part of a sweep over the open backlog. Merge as-is. Highest-value of the current CI group. A nine-agent review of all 52 open PRs found this same hole from four independent directions: Job count goes 4 -> 8 and all eight already pass, so enabling the optional paths surfaces no new breakage — the code compiles, it simply was not being checked. What remains uncompiled after thisThe
Each is a one-line matrix addition if you want them, though I would not expand the matrix further in this PR. Two notes, neither blocking
Shares a file with #28 ( |
|
The commit messages in this range were rewritten to remove trailers that do not belong in permanent history: This PR's commit on the rewritten
The SHA recorded above by GitHub is from the pre-rewrite history and no longer resolves. |
cmake-multi-platform.ymlis the workflow that runs on every pull request, and it passes no options at all. With the defaults that meanscifti/andfsliolib/are never compiled, and neither are the blocks behindFSLSTYLE,PIGZandREJECT_COMPLEX:USE_CIFTI_CODEcifti/USE_FSL_CODEfsliolib/FSLSTYLE_NAME_CONFLICTS-DFSLSTYLEFSLSTYLE_PIGZ_SUPPORT-DPIGZFSLSTYLE_REJECT_COMPLEX-DREJECT_COMPLEXSo a PR that changes any of those files collects four green checks that never built it. Several open PRs are in exactly that position — #54 and #74 change
FSLSTYLE/REJECT_COMPLEXblocks that nothing in the repo compiles, and roughly eighteen touchcifti/orfsliolib/.#57 and #59 do set
-DUSE_CIFTI_CODE=ON -DUSE_FSL_CODE=ON, but they add different workflows and leave this one alone, so the per-PR signal stays misleading until one of them merges — and neither covers the FSL parity defines.The change. The matrix gains an
optionsaxis:defaultis what a consumer gets with no arguments,allturns the optional libraries and the FSL parity defines on. Both are kept, because the default build is what ships and a change can break it while the fuller one still compiles. Four jobs become eight, each about half a minute. expat is installed for the Linuxalljobs.Verified on master before writing it, with the test suite:
COMPILE_NIFTIUNUSED_CODEis deliberately left out. It guards code the project itself labels unused, so compiling it in CI would commit to keeping it working; whether that code should exist at all is a separate question (it is where #41 lives).Independent of #57 and #59, which touch other files. #28 edits the
ctestline in this same file, one line away from nothing this PR touches.🤖 Generated with Claude Code