You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for the ITK_FUTURE_LEGACY_REMOVE / ITK_LEGACY_REMOVE build fixes across the opt-in (ingested remote) modules. The Mac10.15-AppleClang-dbg nightly (CDash build 11368783) configures with ITK_FUTURE_LEGACY_REMOVE and failed to compile; investigating it surfaced that the deprecation-removal configurations are broken across many modules that no CI job exercises.
Add an all-in-tree-modules ITK_FUTURE_LEGACY_REMOVE/ITK_LEGACY_REMOVE CI gate (extend the Mac10.15-AppleClang-dbg nightly to ITK_BUILD_ALL_MODULES) so this class of breakage is caught at PR time. Unblocked once the PRs above merge.
Retire FEM LinearSystemWrapperItpack (dsrc2c.c, ~8k lines of f2c) for an Eigen-backed wrapper, then drop the co-located tqlrat.
CI coverage gap. The only nightly that enables ITK_FUTURE_LEGACY_REMOVE (Mac10.15-AppleClang-dbg) builds only the default module set. The modules above are opt-in (ingested remote modules, EXCLUDE_FROM_DEFAULT), so they are exercised by no CI job under the legacy-removal flags — and the ITK_LEGACY_REMOVE-only configuration is not exercised at all. That is why this breakage accumulated undetected until the QR deprecation tripped the one default-module gate.
Root cause & mechanism
The deprecation guards are hard compile-time errors:
ITK_FUTURE_LEGACY_REMOVE: itkTypeMacro / itkGetStaticConstMacro / itkStaticConstMacro become static_assert/string-literal errors (itkMacro.h); vnl/algo/vnl_qr.h and VNLSparseLUSolverTraits.h#error; vnl_*_eigensystem and the netlib eispack are dropped; ImageRegionIterator/ImageScanlineIterator::GetIndex() and the CoordRepType aliases are removed.
ITK_LEGACY_REMOVE: ITK_NOEXCEPT is removed.
Because a #error/static_assert only fires when a translation unit that includes it is actually compiled, and these modules are never compiled under the legacy flags in CI, the breakage was invisible. The fixes are mechanical, behavior-preserving modernizations to the replacement APIs the deprecation messages point to (itkOverrideGetNameOfClassMacro, Self::name, static constexpr, ImageRegionIteratorWithIndex, CoordinateType, noexcept, itk::QRDecomposition).
Verification
Each PR was built under baseline, ITK_LEGACY_REMOVE=ON, and ITK_LEGACY_REMOVE=ON + ITK_FUTURE_LEGACY_REMOVE=ON, with the module's tests run in baseline (no behavior change). The IsotropicWaveletsShrinkDecimate/ExpandWithZeros scanline→ImageRegionIteratorWithIndex refactor and the FEM/LandmarkBasedvnl_qr→itk::QRDecomposition migrations were additionally verified for numerical equivalence.
Tracking issue for the
ITK_FUTURE_LEGACY_REMOVE/ITK_LEGACY_REMOVEbuild fixes across the opt-in (ingested remote) modules. TheMac10.15-AppleClang-dbgnightly (CDash build 11368783) configures withITK_FUTURE_LEGACY_REMOVEand failed to compile; investigating it surfaced that the deprecation-removal configurations are broken across many modules that no CI job exercises.PRs (merge checklist)
LandmarkBasedTransformInitializer, FEM:vnl_qr→ Eigen-backeditk::QRDecomposition(+Solve(matrix)/Inverse()), self-containedtqlrat, drop deaddeterm_vnl_algotests: gate thevnl_*_eigensystemtests underITK_FUTURE_LEGACY_REMOVE(completes the eispack drop)SmoothingRecursiveYvvGaussianFilter:ITK_NOEXCEPT,itkTypeMacro,itkGetStaticConstMacroVariationalRegistration:itkTypeMacro, iteratorGetIndex(),CoordRepTypeCuberille,FixedPointInverseDisplacementField,SubdivisionQuadEdgeMeshFilter,TotalVariation,IOMeshSTL,RANSAC:itkTypeMacro, iteratorGetIndex()ParabolicMorphology:itkTypeMacro,itkGetStaticConstMacroHigherOrderAccurateGradient:itkTypeMacro,itkGetStaticConstMacroIsotropicWavelets,MGHIO,PhaseSymmetry,MinimalPathExtraction: deprecated iteratorGetIndex()PrincipalComponentsAnalysis:itkTypeMacro,itkStaticConstMacroFollow-ups (not yet opened)
ITK_FUTURE_LEGACY_REMOVE/ITK_LEGACY_REMOVECI gate (extend theMac10.15-AppleClang-dbgnightly toITK_BUILD_ALL_MODULES) so this class of breakage is caught at PR time. Unblocked once the PRs above merge.LinearSystemWrapperItpack(dsrc2c.c, ~8k lines of f2c) for an Eigen-backed wrapper, then drop the co-locatedtqlrat.CMake/itkCCacheSupport.cmake: bakeCCACHE_BASEDIRinto the compiler launcher (theset(ENV{...})was a configure-time no-op) so cross-build-tree cache reuse worksRoot cause & mechanism
The deprecation guards are hard compile-time errors:
ITK_FUTURE_LEGACY_REMOVE:itkTypeMacro/itkGetStaticConstMacro/itkStaticConstMacrobecomestatic_assert/string-literal errors (itkMacro.h);vnl/algo/vnl_qr.handVNLSparseLUSolverTraits.h#error;vnl_*_eigensystemand the netlib eispack are dropped;ImageRegionIterator/ImageScanlineIterator::GetIndex()and theCoordRepTypealiases are removed.ITK_LEGACY_REMOVE:ITK_NOEXCEPTis removed.Because a
#error/static_assertonly fires when a translation unit that includes it is actually compiled, and these modules are never compiled under the legacy flags in CI, the breakage was invisible. The fixes are mechanical, behavior-preserving modernizations to the replacement APIs the deprecation messages point to (itkOverrideGetNameOfClassMacro,Self::name,static constexpr,ImageRegionIteratorWithIndex,CoordinateType,noexcept,itk::QRDecomposition).Verification
Each PR was built under baseline,
ITK_LEGACY_REMOVE=ON, andITK_LEGACY_REMOVE=ON + ITK_FUTURE_LEGACY_REMOVE=ON, with the module's tests run in baseline (no behavior change). TheIsotropicWaveletsShrinkDecimate/ExpandWithZerosscanline→ImageRegionIteratorWithIndexrefactor and the FEM/LandmarkBasedvnl_qr→itk::QRDecompositionmigrations were additionally verified for numerical equivalence.