Mac extension builds failing with cout error

We noticed SlicerDMRI and other mac builds today. Looks like python extensions are okay but not C++ ones.

Maybe related to the clipboard locale change? @Sam_Horvath @ebrahim ?

DMRI is failing across all platforms and has been since before the locale change

Other C++ builds, such as SlicerIGT are fine

C++ builds begin to fail after: ENH: Add support for building against VTK version 9.6.0 · Slicer/Slicer@1b21266 · GitHub

Thanks @Sam_Horvath !

@jamesobutler do you see why this change would be breaking some extensions? Maybe we can revert until the underlying issue is understood and fixed?

Looking at the errors, many/most are complaining about cout missing from std. Looking at a file that has errors in SlicerDMRI: SlicerDMRI/Libs/vtkDMRI/vtkSeedTracts.cxx at master · SlicerDMRI/SlicerDMRI · GitHub, <iostream> is not included but cout is used, so perhaps a transitive include was cleaned up.

Yes, that makes sense @Sam_Horvath - maybe we should add that include to a core slicer header to fix all the extensions that relied on that at once and avoid the backwards incompatibility.

I am not sure how much of the problem that would actually fix? The vtkSeedTracts one I linked above is a pure vtkObject, it doesn’t include any Slicer headers.

The related items is a simple fix.

See the following comment:

and the following for reference:

Thanks James!

Steve, I don’t think we can avoid doing the fixes at the extension level.

Yes, that’s very clear now, thanks!

Odd to make a backwards incompatible change on a minor release, but that’s the way it goes I guess.

I’ll try to fix SlicerDMRI later today.

I’ll get SlicerRT today as well

Okay, SlicerDMRI should be good to go tomorrow.

Fix log (unchecked are in progress):

SlicerDMRI
SlicerRT : Iostream missing include fixes by sjh26 · Pull Request #314 · SlicerRt/SlicerRT · GitHub
MeshToLabelMap
SlicerVMTK: Pending this vmtk fix, Include iostream to build against VTK 9.6 by chir-set · Pull Request #481 · vmtk/vmtk · GitHub, my branch here: GitHub - sjh26/SlicerExtension-VMTK at fix-iostream · GitHub
VASSTAlgorithms: BUG: Add missing #include <iostream> to C++ files using cerr/endl by sjh26 · Pull Request #5 · VASST/VASSTAlgorithms · GitHub
SlicerAutoscoperM: Autoscoper PR: COMP: Fix build with VTK 9.6 by sjh26 · Pull Request #328 · BrownBiomechanics/Autoscoper · GitHub
CarreraSlice: COMP: Fix iostream include hygiene across C++ sources (VTK 9.6 compat) by sjh26 · Pull Request #14 · ikolesov/CarreraSlice · GitHub
CMFreg: COMP: VTK 9.6 build fix - iostream include hygiene by sjh26 · Pull Request #41 · DCBIA-OrthoLab/CMFreg · GitHub
PortPlacement: COMP: VTK 9.6 build fix - add missing <iostream> include by sjh26 · Pull Request #4 · SlicerIGT/PortPlacement · GitHub
ShapeVariationAnalyzer: COMP: VTK 9.6 Build Fix - Fix iostream include hygiene by sjh26 · Pull Request #72 · DCBIA-OrthoLab/ShapeVariationAnalyzer · GitHub
SlicerFreeSurfer: COMP: VTK 9.6 Build Fix - Fix iostream include hygiene by sjh26 · Pull Request #22 · PerkLab/SlicerFreeSurfer · GitHub

This appears to be everything for current failures caused by VTK 9.6 transition