Closed tbirdso closed 2 years ago
Seeing build failures specific to this PR on update:
[13/104] Generating ../../../../../../ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.xml
FAILED: ../../../ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.xml /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.xml
cd /work/_skbuild/linux-x86_64-3.8/cmake-build/Wrapping/Modules/IsotropicWavelets && /work/_skbuild/linux-x86_64-3.8/cmake-build/Wrapping/Generators/CastXML/castxml/bin/castxml -o /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.xml --castxml-gccxml --castxml-start _wrapping_ --castxml-cc-gnu "(" /opt/rh/devtoolset-10/root/usr/bin/g++ -std=c++14 ")" -w -c @/work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/IsotropicWavelets.castxml.inc /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.cxx
In file included from /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.cxx:21:
In file included from /work/include/itkWaveletFrequencyForward.h:27:
In file included from /work/include/itkFrequencyShrinkImageFilter.h:23:
/work/ITK-source/ITK/Modules/Core/Common/include/itkEnableIf.h:167:4: error: Use C++ 11 std::enable_if directly
# error Use C++ 11 std::enable_if directly
^
In file included from /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.cxx:21:
In file included from /work/include/itkWaveletFrequencyForward.h:28:
In file included from /work/include/itkFrequencyShrinkViaInverseFFTImageFilter.h:21:
/work/include/itkShrinkDecimateImageFilter.h:123:12: error: no template named 'EnableIfC'; did you mean 'Eigen::internal::EnableIf'?
typename EnableIfC<std::numeric_limits<TOutputType>::is_integer, TOutputType>::Type
^~~~~~~~~
Eigen::internal::EnableIf
/work/ITK-source/ITK/Modules/ThirdParty/Eigen3/src/itkeigen/../itkeigen/Eigen/src/Core/util/ForwardDeclarations.h:151:23: note: 'Eigen::internal::EnableIf' declared here
template<bool> struct EnableIf;
^
In file included from /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.cxx:21:
In file included from /work/include/itkWaveletFrequencyForward.h:28:
In file included from /work/include/itkFrequencyShrinkViaInverseFFTImageFilter.h:21:
/work/include/itkShrinkDecimateImageFilter.h:123:12: error: too many template arguments for class template 'EnableIf'
typename EnableIfC<std::numeric_limits<TOutputType>::is_integer, TOutputType>::Type
^ ~~~~~~~~~~~~
/work/ITK-source/ITK/Modules/ThirdParty/Eigen3/src/itkeigen/../itkeigen/Eigen/src/Core/util/ForwardDeclarations.h:151:23: note: template is declared here
template<bool> struct EnableIf;
~~~~~~~~~~~~~~ ^
In file included from /work/ITK-cp38-cp38-manylinux2014_x64/Wrapping/itkWaveletFrequencyForward.cxx:21:
In file included from /work/include/itkWaveletFrequencyForward.h:28:
In file included from /work/include/itkFrequencyShrinkViaInverseFFTImageFilter.h:21:
/work/include/itkShrinkDecimateImageFilter.h:132:12: error: no template named 'DisableIfC'
typename DisableIfC<std::numeric_limits<TOutputType>::is_integer, TOutputType>::Type
^
4 errors generated.
@dzenanz This must be related to some changes in ITK. Could you provide more context?
itkEnableIf.h:167:4: error: Use C++ 11 std::enable_if directly
I think that https://github.com/InsightSoftwareConsortium/ITK/pull/2713 made the relevant changes. InsightSoftwareConsortium/ITK@98ee48a
(#2713) shows what to do.
I think the errors come from updating the CI version past the commit which deprecated itk::mpl::EnableIf
. The fixes for this can, and should be merged before this PR.
Review #153, merge if ok, and rebase on top this branch to check if errors are gone
The force-push a plain rebase.
This error is fixable, PR incoming
Why is this PR touching the images? @tbirdso
Those are errors. This was done by a script on ~50 remote modules. A few unwanted file modifications sneaked in.
A few unwanted file modifications sneaked in
No doubt. @dzenan could you take over?
I am currently travelling. I could take over if no one gets to it before me. But this PR by itself should be easy. CI failures are icky.
Is it possible that the original test images have been deleted in the data server? That's why other unrelated PR's to this are also seg-faulting?
Lack/absence of data would produce a read exception, not a segfault.
It's not lack/absence of file, it's corruption of that file.
@dzenanz @phcerdan Thanks for your work on this, and great catch identifying test files that were unintentionally updated. I've removed those changes from this PR.
That solved seg-faulting. Thanks @tbirdso. I will have a look at python errors. You are more up-to-date in recent ITK changes. Do you know if something has changed in itkPoint, itkVector, itkFixedArray, constructors or wrapping?
I see the errors you are describing, unfortunately I'm not sure what would have changed recently. Perhaps @dzenanz will have some intuition?
/work/include/itkMonogenicSignalFrequencyImageFilter.hxx:57:84: error: cannot convert ‘itk::FrequencyFFTLayoutImageRegionConstIteratorWithIndex<itk::Image<std::complex , 3> >::FrequencyType’ {aka ‘itk::Vector<double, 3>’} to ‘const itk::Point<double, 3>&’ 57 evaluatedArray = this->m_Evaluator->EvaluateAllComponents(inFreqIt.GetFrequency()); ~~~~~^~
I think this was due to increasing strictness in types. I think @N-Dekker did it in main repo.
I think this was due to increasing strictness in types. I think @N-Dekker did it in main repo.
Indeed! 🤔 [still looking at the code...] Do I understand correctly that GetFrequency() returns an itk::Vector
, while EvaluateAllComponents expects an itk::Point
as argument?
A itk::Vector
may be "converted" to a point by adding the vector to a zero-filled point. So a quickfix could be to add a zero-filled point to the return value of GetFrequency(). Does that help?
By the way, thanks @N-Dekker! I opted to wrap more types instead of converting or casting them.
I got segfaults in tests related to data corruption generated in this PR in #156, even though they are solved in the last iteration of this PR. Is the ExternalData cached or something in the servers? I fail to understand :(
I see checks are now passing in the master
branch, thank you for your work here @phcerdan !
Automated reformatting with https://github.com/InsightSoftwareConsortium/ITK/blob/master/Utilities/Maintenance/ApplyScriptToRemotes.sh