[SyneRBI/SIRF-SuperBuild] Build gadgetron master (#438)

136 views
Skip to first unread message

Edoardo Pasca

unread,
Oct 6, 2020, 9:53:28 AM10/6/20
to SyneRBI/SIRF-SuperBuild, Subscribed

This changes should allow the build of Gadgetron master.
closes #378
closes #384


You can view, comment on, or merge this pull request online at:

  https://github.com/SyneRBI/SIRF-SuperBuild/pull/438

Commit Summary

  • allows user to pass CBLAS_LIBRARY and CBLAS_INCLUDE_DIR
  • Merge remote-tracking branch 'origin' into build_Gadgetron_master

File Changes

Patch Links:


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Oct 6, 2020, 9:59:46 AM10/6/20
to SyneRBI/SIRF-SuperBuild, Subscribed

It'd be good to decide which commit tag to use for Gadgetron in version_config.cmake
This one is the minimum one @johannesmayer would require to build his RPE encoding branch

Edoardo Pasca

unread,
Oct 6, 2020, 11:25:53 AM10/6/20
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 0e83530 set default version to master


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Kris Thielemans

unread,
Oct 6, 2020, 5:01:31 PM10/6/20
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans approved this pull request.

looks fine to me.

Edoardo Pasca

unread,
Oct 7, 2020, 12:28:11 AM10/7/20
to SyneRBI/SIRF-SuperBuild, Subscribed

But Gadgetron on my VM doesn't seem to build! I had checked but there may have been some caching mechanisms that made it work then.

The culprit is rather simple, really, CMake is giving the wrong directory for includes to Gadgetron:

cd /home/sirfuser/devel/buildVM/builds/Gadgetron/build/core && /usr/bin/c++  
-DARMA_64BIT_WORD -DARMA_DONT_USE_WRAPPER 
-DARMA_USE_CXX11 -DFORCE_LIMIT_OPENBLAS_NUM_THREADS -DUSE_OMP -Dgadgetron_core_EXPORTS 
-I/home/sirfuser/devel/buildVM/builds/Gadgetron/build/include 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/core 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core 
-I/home/sirfuser/devel/buildVM/builds/Gadgetron/build/toolboxes/core 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/image 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/algorithm 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/hostutils 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/math 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/apps/gadgetron 
-I/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/log 
-isystem /home/sirfuser/devel/install/include/ismrmrd  
-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED 
-fopenmp 
-Werror=return-type -Werror=terminate -Werror=non-virtual-dtor 
-O3 -DNDEBUG -fPIC   -std=gnu++1z 
-o CMakeFiles/gadgetron_core.dir/Channel.cpp.o 
-c /home/sirfuser/devel/buildVM/sources/Gadgetron/core/Channel.cpp

I passes the include directory of our install, which is good but it does it with -isystem and appending ismrmrd, which is wrong.

The CMake line that does reads:

target_include_directories(gadgetron_core PUBLIC
        $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
        $<INSTALL_INTERFACE:include>
        )

I don't understand very well this generator expression, but it doesn't look to me that it should be wrong. But it's difficult to debug.

Edoardo Pasca

unread,
Oct 7, 2020, 12:42:51 AM10/7/20
to SyneRBI/SIRF-SuperBuild, Subscribed

If I understand correctly, we are trying to pass Gadgetron the include directory here as

-DCMAKE_INCLUDE_PATH:PATH=${SUPERBUILD_INSTALL_DIR}/include

However, CMAKE_INCLUDE_PATH provides a search path for the find_file() and find_path() commands which is not what we want? We want to add to the standard include directories of Gadgetron.

Kris Thielemans

unread,
Oct 7, 2020, 3:28:55 AM10/7/20
to SyneRBI/SIRF-SuperBuild, Subscribed

However, CMAKE_INCLUDE_PATH provides a search path for the find_file() and find_path() commands which is not what we want? We want to add to the standard include directories of Gadgetron.

That's correct. A lot of the External* files have lines setting CMAKE_* variables, but they shouldn't be there. Even CMAKE_LIBRARY_PATH shouldn't be set as it should find it from the PREFIX or some other default path.

Kris Thielemans

unread,
Oct 7, 2020, 4:33:03 AM10/7/20
to SyneRBI/SIRF-SuperBuild, Subscribed

-isystem /home/sirfuser/devel/install/include/ismrmrd

this isn't something that we do. It has to come from how Gadgetron depends on ISMRMRD. Gadgetron master uses dependencies on ISMRMRD::ISMRMRD (see e.g.here, so that implies it comes from ISMRMRDConfig.cmake.

That uses include here. It uses to be include/ismrmrd but that was fixed 2 years ago ismrmrd/ismrmrd#109 which seems to be between ISMRMRD 1.4.0 and 1.4.1. I think we're using the latter, so I don't understand. In any case, you'd want to update ISMRMD version if you use Gadgetron master. Most recent seems 1.4.2.1

Edoardo Pasca

unread,
Dec 10, 2020, 9:28:59 AM12/10/20
to SyneRBI/SIRF-SuperBuild, Subscribed

Built ISMRMRD 1.4.2.1, now Gadgetron fails with

/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/math/hoNDArray_reductions.cpp:3:10: fatal error: range/v3/core.hpp: No such file or directory
 #include <range/v3/core.hpp>
          ^~~~~~~~~~~~~~~~~~~
compilation terminated.

It seems now Gadgetron depends on range-v3

Edoardo Pasca

unread,
Dec 11, 2020, 8:04:39 AM12/11/20
to SyneRBI/SIRF-SuperBuild, Subscribed

I'll add the range-v3 to the superbuild (it's a header only library!).

Next problem

In file included from /home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/klt/cpu/hoNDKLT.cpp:6:0:

/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/hoNDArray_utils.h: In function ‘auto Gadgetron::concat_along_dimension(const COLL&, size_t)’:

/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/hoNDArray_utils.h:1015:121: error: cannot deduce template arguments for ‘logical_and’ from ()

 umulate(arrays | view::transform(dimensions_valid), true, std::logical_and() );

                                                                            ^

/home/sirfuser/devel/buildVM/sources/Gadgetron/toolboxes/core/cpu/hoNDArray_utils.h:1021:81: error: cannot deduce template arguments for ‘multiplies’ from ()

                                                  size_t(1), std::multiplies());

Kris Thielemans

unread,
Dec 11, 2020, 8:20:09 AM12/11/20
to SyneRBI/SIRF-SuperBuild, Subscribed

not sure. sorry. You'll need to raise an issue on Gadgetron. More than likely they'll say that you need to have a more recent version of gcc (and potentially C++), but as their CMake doesn't enforce it, they should know about this.

Edoardo Pasca

unread,
Jan 20, 2021, 5:39:37 AM1/20/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Opened an issue in gadgetron/gadgetron#925

Edoardo Pasca

unread,
Jan 20, 2021, 8:51:53 AM1/20/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 007728a added range-v3 dependency for Gadgetron


You are receiving this because you are subscribed to this thread.

Edoardo Pasca

unread,
Jan 23, 2021, 6:20:00 PM1/23/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Apparently Gadgetron requires C++17 which means GCC 9. gadgetron/gadgetron#925 (comment)

Edoardo Pasca

unread,
Jan 25, 2021, 1:21:50 PM1/25/21
to SyneRBI/SIRF-SuperBuild, Subscribed

This also requires CUDA SDK >= 10.2 to build Gadgetron with CUDA gadgets, otherwise the build fails with this error:

nvcc fatal : Value 'c++17' is not defined for option 'std'

https://on-demand.gputechconf.com/supercomputing/2019/pdf/sc1936-gpu-programming-with-standard-c++17.pdf

Edoardo Pasca

unread,
Jan 26, 2021, 2:59:47 AM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

currently Gadgetron test build fails:

/usr/include/c++/9/tuple:1394:33: error: no match for ‘operator==’ (operand types are ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} and ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’})

 1394 |  return bool(std::get<__i>(__t) == std::get<__i>(__u))

      |              ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~

[ 92%] Building CXX object test/CMakeFiles/test_all.dir/read_writer_test.cpp.o In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple: In instantiation of ‘static constexpr bool std::__tuple_compare<_Tp, _Up, __i, __size>::__eq(const _Tp&, const _Up&) [with _Tp = std::tuple >, std::optional > >; _Up = std::tuple >, std::optional > >; long unsigned int __i = 0; long unsigned int __size = 3]’: /usr/include/c++/9/tuple:1427:29: required from ‘constexpr bool std::operator==(const std::tuple<_Tps ...>&, const std::tuple<_Elements ...>&) [with _TElements = {ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray >, std::optional >}; _UElements = {ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray >, std::optional >}]’ /usr/include/c++/9/bits/stl_algobase.h:820:22: required from ‘static bool std::__equal<_BoolType>::equal(_II1, _II1, _II2) [with _II1 = const std::tuple >, std::optional > >*; _II2 = const std::tuple >, std::optional > >*; bool _BoolType = false]’ /usr/include/c++/9/bits/stl_algobase.h:851:43: required from ‘bool std::__equal_aux(_II1, _II1, _II2) [with _II1 = const std::tuple >, std::optional > >*; _II2 = const std::tuple >, std::optional > >*]’ /usr/include/c++/9/bits/stl_algobase.h:1069:30: required from ‘bool std::equal(_II1, _II1, _II2) [with _II1 = __gnu_cxx::__normal_iterator >, std::optional > >*, std::vector >, std::optional > > > >; _II2 = __gnu_cxx::__normal_iterator >, std::optional > >*, std::vector >, std::optional > > > >]’ /usr/include/c++/9/bits/stl_vector.h:1890:21: required from ‘bool std::operator==(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&) [with _Tp = std::tuple >, std::optional > >; _Alloc = std::allocator >, std::optional > > >]’ /home/ofn77899/devel/installg/include/gtest/gtest.h:1392:11: required from ‘testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = std::vector >, std::optional > > >; T2 = std::vector >, std::optional > > >]’ /home/ofn77899/devel/installg/include/gtest/gtest.h:1421:23: required from ‘static testing::AssertionResult testing::internal::EqHelper::Compare(const char*, const char*, const T1&, const T2&) [with T1 = std::vector >, std::optional > > >; T2 = std::vector >, std::optional > > >; bool lhs_is_null_literal = false]’ /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:188:5: required from here /usr/include/c++/9/tuple:1394:33: error: no match for ‘operator==’ (operand types are ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} and ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’}) 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/iosfwd:40, from /usr/include/c++/9/system_error:40, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/postypes.h:222:5: note: candidate: ‘template bool std::operator==(const std::fpos<_StateT>&, const std::fpos<_StateT>&)’ 222 | operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) | ^~~~~~~~ /usr/include/c++/9/bits/postypes.h:222:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::fpos<_StateT>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/stl_algobase.h:64, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/string:40, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_pair.h:448:5: note: candidate: ‘template constexpr bool std::operator==(const std::pair<_T1, _T2>&, const std::pair<_T1, _T2>&)’ 448 | operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | ^~~~~~~~ /usr/include/c++/9/bits/stl_pair.h:448:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::pair<_T1, _T2>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/stl_algobase.h:67, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/string:40, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_iterator.h:325:5: note: candidate: ‘template constexpr bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_Iterator>&)’ 325 | operator==(const reverse_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_iterator.h:325:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::reverse_iterator<_Iterator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/stl_algobase.h:67, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/string:40, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_iterator.h:363:5: note: candidate: ‘template constexpr bool std::operator==(const std::reverse_iterator<_Iterator>&, const std::reverse_iterator<_IteratorR>&)’ 363 | operator==(const reverse_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_iterator.h:363:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::reverse_iterator<_Iterator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/stl_algobase.h:67, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/string:40, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_iterator.h:1139:5: note: candidate: ‘template constexpr bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorR>&)’ 1139 | operator==(const move_iterator<_IteratorL>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_iterator.h:1139:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::move_iterator<_IteratorL>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/stl_algobase.h:67, from /usr/include/c++/9/bits/char_traits.h:39, from /usr/include/c++/9/string:40, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_iterator.h:1145:5: note: candidate: ‘template constexpr bool std::operator==(const std::move_iterator<_IteratorL>&, const std::move_iterator<_IteratorL>&)’ 1145 | operator==(const move_iterator<_Iterator>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_iterator.h:1145:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::move_iterator<_IteratorL>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/string:41, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/allocator.h:168:5: note: candidate: ‘template bool std::operator==(const std::allocator<_CharT>&, const std::allocator<_T2>&)’ 168 | operator==(const allocator<_T1>&, const allocator<_T2>&) | ^~~~~~~~ /usr/include/c++/9/bits/allocator.h:168:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::allocator<_CharT>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/basic_string.h:48, from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/string_view:473:5: note: candidate: ‘template constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::basic_string_view<_CharT, _Traits>)’ 473 | operator==(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/include/c++/9/string_view:473:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘ISMRMRD::AcquisitionHeader’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/basic_string.h:48, from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/string_view:479:5: note: candidate: ‘template constexpr bool std::operator==(std::basic_string_view<_CharT, _Traits>, std::__detail::__idt >)’ 479 | operator==(basic_string_view<_CharT, _Traits> __x, | ^~~~~~~~ /usr/include/c++/9/string_view:479:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘ISMRMRD::AcquisitionHeader’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/basic_string.h:48, from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/string_view:485:5: note: candidate: ‘template constexpr bool std::operator==(std::__detail::__idt >, std::basic_string_view<_CharT, _Traits>)’ 485 | operator==(__detail::__idt> __x, | ^~~~~~~~ /usr/include/c++/9/string_view:485:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘ISMRMRD::AcquisitionHeader’ is not derived from ‘std::basic_string_view<_CharT, _Traits>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/basic_string.h:6141:5: note: candidate: ‘template bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)’ 6141 | operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.h:6141:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/basic_string.h:6149:5: note: candidate: ‘template typename __gnu_cxx::__enable_if::__value, bool>::__type std::operator==(const std::__cxx11::basic_string<_CharT>&, const std::__cxx11::basic_string<_CharT>&)’ 6149 | operator==(const basic_string<_CharT>& __lhs, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.h:6149:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__cxx11::basic_string<_CharT>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/basic_string.h:6163:5: note: candidate: ‘template bool std::operator==(const _CharT*, const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&)’ 6163 | operator==(const _CharT* __lhs, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.h:6163:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: mismatched types ‘const _CharT*’ and ‘ISMRMRD::AcquisitionHeader’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/string:55, from /usr/include/c++/9/stdexcept:39, from /usr/include/c++/9/system_error:41, from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/basic_string.h:6175:5: note: candidate: ‘template bool std::operator==(const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>&, const _CharT*)’ 6175 | operator==(const basic_string<_CharT, _Traits, _Alloc>& __lhs, | ^~~~~~~~ /usr/include/c++/9/bits/basic_string.h:6175:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__cxx11::basic_string<_CharT, _Traits, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/std_mutex.h:39, from /usr/include/c++/9/condition_variable:39, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/system_error:292:3: note: candidate: ‘bool std::operator==(const std::error_code&, const std::error_code&)’ 292 | operator==(const error_code& __lhs, const error_code& __rhs) noexcept | ^~~~~~~~ /usr/include/c++/9/system_error:292:32: note: no known conversion for argument 1 from ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} to ‘const std::error_code&’ 292 | operator==(const error_code& __lhs, const error_code& __rhs) noexcept | ~~~~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/9/system_error:297:3: note: candidate: ‘bool std::operator==(const std::error_code&, const std::error_condition&)’ 297 | operator==(const error_code& __lhs, const error_condition& __rhs) noexcept | ^~~~~~~~ /usr/include/c++/9/system_error:297:32: note: no known conversion for argument 1 from ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} to ‘const std::error_code&’ 297 | operator==(const error_code& __lhs, const error_condition& __rhs) noexcept | ~~~~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/9/system_error:304:3: note: candidate: ‘bool std::operator==(const std::error_condition&, const std::error_code&)’ 304 | operator==(const error_condition& __lhs, const error_code& __rhs) noexcept | ^~~~~~~~ /usr/include/c++/9/system_error:304:37: note: no known conversion for argument 1 from ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} to ‘const std::error_condition&’ 304 | operator==(const error_condition& __lhs, const error_code& __rhs) noexcept | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ /usr/include/c++/9/system_error:311:3: note: candidate: ‘bool std::operator==(const std::error_condition&, const std::error_condition&)’ 311 | operator==(const error_condition& __lhs, | ^~~~~~~~ /usr/include/c++/9/system_error:311:37: note: no known conversion for argument 1 from ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} to ‘const std::error_condition&’ 311 | operator==(const error_condition& __lhs, | ~~~~~~~~~~~~~~~~~~~~~~~^~~~~ In file included from /usr/include/c++/9/tuple:39, from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/array:252:5: note: candidate: ‘template bool std::operator==(const std::array<_Tp, _Nm>&, const std::array<_Tp, _Nm>&)’ 252 | operator==(const array<_Tp, _Nm>& __one, const array<_Tp, _Nm>& __two) | ^~~~~~~~ /usr/include/c++/9/array:252:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::array<_Tp, _Nm>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/9/tuple:1419:5: note: candidate: ‘template constexpr bool std::operator==(const std::tuple<_Tps ...>&, const std::tuple<_Elements ...>&)’ 1419 | operator==(const tuple<_TElements...>& __t, | ^~~~~~~~ /usr/include/c++/9/tuple:1419:5: note: template argument deduction/substitution failed: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::tuple<_Tps ...>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/unique_ptr.h:715:5: note: candidate: ‘template bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, const std::unique_ptr<_Up, _Ep>&)’ 715 | operator==(const unique_ptr<_Tp, _Dp>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/unique_ptr.h:715:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::unique_ptr<_Tp, _Dp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/unique_ptr.h:721:5: note: candidate: ‘template bool std::operator==(const std::unique_ptr<_Tp, _Dp>&, std::nullptr_t)’ 721 | operator==(const unique_ptr<_Tp, _Dp>& __x, nullptr_t) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/unique_ptr.h:721:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::unique_ptr<_Tp, _Dp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/unique_ptr.h:726:5: note: candidate: ‘template bool std::operator==(std::nullptr_t, const std::unique_ptr<_Tp, _Dp>&)’ 726 | operator==(nullptr_t, const unique_ptr<_Tp, _Dp>& __x) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/unique_ptr.h:726:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::unique_ptr<_Tp, _Dp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/shared_ptr.h:52, from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr_base.h:1412:5: note: candidate: ‘template bool std::operator==(const std::__shared_ptr<_Tp1, _Lp>&, const std::__shared_ptr<_Tp2, _Lp>&)’ 1412 | operator==(const __shared_ptr<_Tp1, _Lp>& __a, | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr_base.h:1412:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__shared_ptr<_Tp1, _Lp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/shared_ptr.h:52, from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr_base.h:1418:5: note: candidate: ‘template bool std::operator==(const std::__shared_ptr<_Tp, _Lp>&, std::nullptr_t)’ 1418 | operator==(const __shared_ptr<_Tp, _Lp>& __a, nullptr_t) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr_base.h:1418:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__shared_ptr<_Tp, _Lp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/shared_ptr.h:52, from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr_base.h:1423:5: note: candidate: ‘template bool std::operator==(std::nullptr_t, const std::__shared_ptr<_Tp, _Lp>&)’ 1423 | operator==(nullptr_t, const __shared_ptr<_Tp, _Lp>& __a) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr_base.h:1423:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__shared_ptr<_Tp, _Lp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr.h:383:5: note: candidate: ‘template bool std::operator==(const std::shared_ptr<_Tp>&, const std::shared_ptr<_Tp>&)’ 383 | operator==(const shared_ptr<_Tp>& __a, const shared_ptr<_Up>& __b) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr.h:383:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::shared_ptr<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr.h:388:5: note: candidate: ‘template bool std::operator==(const std::shared_ptr<_Tp>&, std::nullptr_t)’ 388 | operator==(const shared_ptr<_Tp>& __a, nullptr_t) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr.h:388:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::shared_ptr<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/condition_variable:45, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/shared_ptr.h:393:5: note: candidate: ‘template bool std::operator==(std::nullptr_t, const std::shared_ptr<_Tp>&)’ 393 | operator==(nullptr_t, const shared_ptr<_Tp>& __a) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/shared_ptr.h:393:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::shared_ptr<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/list:63, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_list.h:1991:5: note: candidate: ‘template bool std::operator==(const std::__cxx11::list<_Tp, _Alloc>&, const std::__cxx11::list<_Tp, _Alloc>&)’ 1991 | operator==(const list<_Tp, _Alloc>& __x, const list<_Tp, _Alloc>& __y) | ^~~~~~~~ /usr/include/c++/9/bits/stl_list.h:1991:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::__cxx11::list<_Tp, _Alloc>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/locale_facets.h:48, from /usr/include/c++/9/bits/basic_ios.h:37, from /usr/include/c++/9/ios:44, from /usr/include/c++/9/istream:38, from /usr/include/c++/9/sstream:38, from /usr/include/c++/9/complex:45, from /home/ofn77899/devel/installg/include/ismrmrd/ismrmrd.h:40, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/streambuf_iterator.h:208:5: note: candidate: ‘template bool std::operator==(const std::istreambuf_iterator<_CharT, _Traits>&, const std::istreambuf_iterator<_CharT, _Traits>&)’ 208 | operator==(const istreambuf_iterator<_CharT, _Traits>& __a, | ^~~~~~~~ /usr/include/c++/9/bits/streambuf_iterator.h:208:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::istreambuf_iterator<_CharT, _Traits>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/ofn77899/devel/installg/include/ismrmrd/ismrmrd.h:40, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/complex:459:5: note: candidate: ‘template constexpr bool std::operator==(const std::complex<_Tp>&, const std::complex<_Tp>&)’ 459 | operator==(const complex<_Tp>& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/9/complex:459:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::complex<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/ofn77899/devel/installg/include/ismrmrd/ismrmrd.h:40, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/complex:464:5: note: candidate: ‘template constexpr bool std::operator==(const std::complex<_Tp>&, const _Tp&)’ 464 | operator==(const complex<_Tp>& __x, const _Tp& __y) | ^~~~~~~~ /usr/include/c++/9/complex:464:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::complex<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/ofn77899/devel/installg/include/ismrmrd/ismrmrd.h:40, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/complex:469:5: note: candidate: ‘template constexpr bool std::operator==(const _Tp&, const std::complex<_Tp>&)’ 469 | operator==(const _Tp& __x, const complex<_Tp>& __y) | ^~~~~~~~ /usr/include/c++/9/complex:469:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::complex<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/vector:67, from /home/ofn77899/devel/installg/include/ismrmrd/ismrmrd.h:73, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_vector.h:1888:5: note: candidate: ‘template bool std::operator==(const std::vector<_Tp, _Alloc>&, const std::vector<_Tp, _Alloc>&)’ 1888 | operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y) | ^~~~~~~~ /usr/include/c++/9/bits/stl_vector.h:1888:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::vector<_Tp, _Alloc>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/node_handle.h:39, from /usr/include/c++/9/bits/stl_tree.h:72, from /usr/include/c++/9/map:60, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/optional:983:5: note: candidate: ‘template constexpr std::__optional_relop_t() == declval<_Up>()))> std::operator==(const std::optional<_Tp>&, const std::optional<_Up>&)’ 983 | operator==(const optional<_Tp>& __lhs, const optional<_Up>& __rhs) | ^~~~~~~~ /usr/include/c++/9/optional:983:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::optional<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/node_handle.h:39, from /usr/include/c++/9/bits/stl_tree.h:72, from /usr/include/c++/9/map:60, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/optional:1034:5: note: candidate: ‘template constexpr bool std::operator==(const std::optional<_Tp>&, std::nullopt_t)’ 1034 | operator==(const optional<_Tp>& __lhs, nullopt_t) noexcept | ^~~~~~~~ /usr/include/c++/9/optional:1034:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::optional<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/node_handle.h:39, from /usr/include/c++/9/bits/stl_tree.h:72, from /usr/include/c++/9/map:60, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/optional:1039:5: note: candidate: ‘template constexpr bool std::operator==(std::nullopt_t, const std::optional<_Tp>&)’ 1039 | operator==(nullopt_t, const optional<_Tp>& __rhs) noexcept | ^~~~~~~~ /usr/include/c++/9/optional:1039:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::optional<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/node_handle.h:39, from /usr/include/c++/9/bits/stl_tree.h:72, from /usr/include/c++/9/map:60, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/optional:1095:5: note: candidate: ‘template constexpr std::__optional_relop_t() == declval<_Up>()))> std::operator==(const std::optional<_Tp>&, const _Up&)’ 1095 | operator==(const optional<_Tp>& __lhs, const _Up& __rhs) | ^~~~~~~~ /usr/include/c++/9/optional:1095:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::optional<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/bits/node_handle.h:39, from /usr/include/c++/9/bits/stl_tree.h:72, from /usr/include/c++/9/map:60, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/optional:1101:5: note: candidate: ‘template constexpr std::__optional_relop_t() == declval<_Tp>()))> std::operator==(const _Up&, const std::optional<_Tp>&)’ 1101 | operator==(const _Up& __lhs, const optional<_Tp>& __rhs) | ^~~~~~~~ /usr/include/c++/9/optional:1101:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::optional<_Tp>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/map:61, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_map.h:1455:5: note: candidate: ‘template bool std::operator==(const std::map<_Key, _Tp, _Compare, _Allocator>&, const std::map<_Key, _Tp, _Compare, _Allocator>&)’ 1455 | operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_map.h:1455:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::map<_Key, _Tp, _Compare, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/map:62, from /home/ofn77899/devel/installg/include/ismrmrd/meta.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:4, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/stl_multimap.h:1119:5: note: candidate: ‘template bool std::operator==(const std::multimap<_Key, _Tp, _Compare, _Allocator>&, const std::multimap<_Key, _Tp, _Compare, _Allocator>&)’ 1119 | operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_multimap.h:1119:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::multimap<_Key, _Tp, _Compare, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/functional:59, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/NDArray.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/cpu/hoNDArray.h:7, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/std_function.h:746:5: note: candidate: ‘template bool std::operator==(const std::function<_Res(_ArgTypes ...)>&, std::nullptr_t)’ 746 | operator==(const function<_Res(_Args...)>& __f, nullptr_t) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/std_function.h:746:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::function<_Res(_ArgTypes ...)>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/functional:59, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/NDArray.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/cpu/hoNDArray.h:7, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/std_function.h:752:5: note: candidate: ‘template bool std::operator==(std::nullptr_t, const std::function<_Res(_ArgTypes ...)>&)’ 752 | operator==(nullptr_t, const function<_Res(_Args...)>& __f) noexcept | ^~~~~~~~ /usr/include/c++/9/bits/std_function.h:752:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::function<_Res(_ArgTypes ...)>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/NDArray.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/cpu/hoNDArray.h:7, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/unordered_map.h:2091:5: note: candidate: ‘template bool std::operator==(const std::unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, const std::unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&)’ 2091 | operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/unordered_map.h:2091:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::unordered_map<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/unordered_map:47, from /usr/include/c++/9/functional:61, from /usr/include/c++/9/pstl/glue_algorithm_defs.h:13, from /usr/include/c++/9/algorithm:71, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/NDArray.h:15, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/core/cpu/hoNDArray.h:7, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/bits/unordered_map.h:2103:5: note: candidate: ‘template bool std::operator==(const std::unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&, const std::unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>&)’ 2103 | operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/unordered_map.h:2103:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::unordered_multimap<_Key1, _Tp1, _Hash1, _Pred1, _Alloc1>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:11, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/variant:1177:3: note: candidate: ‘template constexpr bool std::operator==(const std::variant<_Types ...>&, const std::variant<_Types ...>&)’ 1177 | _VARIANT_RELATION_FUNCTION_TEMPLATE(==, equal) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/9/variant:1177:3: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::variant<_Types ...>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Types.h:11, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/MPMCChannel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/variant:1177:3: note: candidate: ‘constexpr bool std::operator==(std::monostate, std::monostate)’ 1177 | _VARIANT_RELATION_FUNCTION_TEMPLATE(==, equal) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /usr/include/c++/9/variant:1177:3: note: no known conversion for argument 1 from ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} to ‘std::monostate’ 1177 | _VARIANT_RELATION_FUNCTION_TEMPLATE(==, equal) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/set:61, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/mri_core/mri_core_data.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:6: /usr/include/c++/9/bits/stl_set.h:979:5: note: candidate: ‘template bool std::operator==(const std::set<_Key, _Compare, _Allocator>&, const std::set<_Key, _Compare, _Allocator>&)’ 979 | operator==(const set<_Key, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_set.h:979:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::set<_Key, _Compare, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/set:62, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/toolboxes/mri_core/mri_core_data.h:8, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:6: /usr/include/c++/9/bits/stl_multiset.h:964:5: note: candidate: ‘template bool std::operator==(const std::multiset<_Key, _Compare, _Allocator>&, const std::multiset<_Key, _Compare, _Allocator>&)’ 964 | operator==(const multiset<_Key, _Compare, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_multiset.h:964:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::multiset<_Key, _Compare, _Allocator>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/iterator:66, from /usr/include/boost/filesystem/path_traits.hpp:28, from /usr/include/boost/filesystem/path.hpp:25, from /usr/include/boost/dll/detail/posix/program_location_impl.hpp:13, from /usr/include/boost/dll/detail/posix/path_from_handle.hpp:12, from /usr/include/boost/dll/detail/posix/shared_library_impl.hpp:13, from /usr/include/boost/dll/shared_library.hpp:26, from /usr/include/boost/dll.hpp:16, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Reader.h:5, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/readers/BufferReader.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:7: /usr/include/c++/9/bits/stream_iterator.h:134:5: note: candidate: ‘template bool std::operator==(const std::istream_iterator<_Tp, _CharT, _Traits, _Dist>&, const std::istream_iterator<_Tp, _CharT, _Traits, _Dist>&)’ 134 | operator==(const istream_iterator<_Tp, _CharT, _Traits, _Dist>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stream_iterator.h:134:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::istream_iterator<_Tp, _CharT, _Traits, _Dist>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/deque:67, from /usr/include/c++/9/stack:60, from /usr/include/boost/filesystem/operations.hpp:42, from /usr/include/boost/dll/detail/posix/program_location_impl.hpp:126, from /usr/include/boost/dll/detail/posix/path_from_handle.hpp:12, from /usr/include/boost/dll/detail/posix/shared_library_impl.hpp:13, from /usr/include/boost/dll/shared_library.hpp:26, from /usr/include/boost/dll.hpp:16, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Reader.h:5, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/readers/BufferReader.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:7: /usr/include/c++/9/bits/stl_deque.h:286:5: note: candidate: ‘template bool std::operator==(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _Ref, _Ptr>&)’ 286 | operator==(const _Deque_iterator<_Tp, _Ref, _Ptr>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_deque.h:286:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::_Deque_iterator<_Tp, _Ref, _Ptr>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/deque:67, from /usr/include/c++/9/stack:60, from /usr/include/boost/filesystem/operations.hpp:42, from /usr/include/boost/dll/detail/posix/program_location_impl.hpp:126, from /usr/include/boost/dll/detail/posix/path_from_handle.hpp:12, from /usr/include/boost/dll/detail/posix/shared_library_impl.hpp:13, from /usr/include/boost/dll/shared_library.hpp:26, from /usr/include/boost/dll.hpp:16, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Reader.h:5, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/readers/BufferReader.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:7: /usr/include/c++/9/bits/stl_deque.h:293:5: note: candidate: ‘template bool std::operator==(const std::_Deque_iterator<_Tp, _Ref, _Ptr>&, const std::_Deque_iterator<_Tp, _RefR, _PtrR>&)’ 293 | operator==(const _Deque_iterator<_Tp, _RefL, _PtrL>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_deque.h:293:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::_Deque_iterator<_Tp, _Ref, _Ptr>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/deque:67, from /usr/include/c++/9/stack:60, from /usr/include/boost/filesystem/operations.hpp:42, from /usr/include/boost/dll/detail/posix/program_location_impl.hpp:126, from /usr/include/boost/dll/detail/posix/path_from_handle.hpp:12, from /usr/include/boost/dll/detail/posix/shared_library_impl.hpp:13, from /usr/include/boost/dll/shared_library.hpp:26, from /usr/include/boost/dll.hpp:16, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Reader.h:5, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/readers/BufferReader.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:7: /usr/include/c++/9/bits/stl_deque.h:2312:5: note: candidate: ‘template bool std::operator==(const std::deque<_Tp, _Alloc>&, const std::deque<_Tp, _Alloc>&)’ 2312 | operator==(const deque<_Tp, _Alloc>& __x, | ^~~~~~~~ /usr/include/c++/9/bits/stl_deque.h:2312:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::deque<_Tp, _Alloc>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/stack:61, from /usr/include/boost/filesystem/operations.hpp:42, from /usr/include/boost/dll/detail/posix/program_location_impl.hpp:126, from /usr/include/boost/dll/detail/posix/path_from_handle.hpp:12, from /usr/include/boost/dll/detail/posix/shared_library_impl.hpp:13, from /usr/include/boost/dll/shared_library.hpp:26, from /usr/include/boost/dll.hpp:16, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Reader.h:5, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/readers/BufferReader.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:7: /usr/include/c++/9/bits/stl_stack.h:313:5: note: candidate: ‘template bool std::operator==(const std::stack<_Tp, _Seq>&, const std::stack<_Tp, _Seq>&)’ 313 | operator==(const stack<_Tp, _Seq>& __x, const stack<_Tp, _Seq>& __y) | ^~~~~~~~ /usr/include/c++/9/bits/stl_stack.h:313:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::stack<_Tp, _Seq>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~ In file included from /usr/include/c++/9/random:51, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:19: /usr/include/c++/9/bits/random.tcc:1884:5: note: candidate: ‘template bool std::operator==(const std::normal_distribution<_RealType>&, const std::normal_distribution<_RealType>&)’ 1884 | operator==(const std::normal_distribution<_RealType>& __d1, | ^~~~~~~~ /usr/include/c++/9/bits/random.tcc:1884:5: note: template argument deduction/substitution failed: In file included from /usr/include/c++/9/bits/unique_ptr.h:37, from /usr/include/c++/9/condition_variable:44, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/core/Channel.h:3, from /home/ofn77899/devel/build_Gadgetron/sources/Gadgetron/test/read_writer_test.cpp:2: /usr/include/c++/9/tuple:1394:33: note: ‘std::__tuple_element_t<0, std::tuple >, std::optional > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} is not derived from ‘const std::normal_distribution<_RealType>’ 1394 | return bool(std::get<__i>(__t) == std::get<__i>(__u)) | ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~

Edoardo Pasca

unread,
Jan 26, 2021, 3:13:53 AM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Using GCC 9 for building Gadgetron adds another layer of difficulty, due to some changes in behaviour of GCC 9 wrt older versions.

In particular the OpenMP clause #pragma omp parallel for default(none) leads to some variable not being declared. Unfortunately, this happens with NIFTYREG.

In function ‘void GetDiscretisedValueSSD_core3D_2(nifti_image*, float*, int, int, nifti_image*, nifti_image*, int*) [with DTYPE = float]’:

/home/ofn77899/devel/build_Gadgetron/sources/NIFTYREG/reg-lib/cpu/_reg_ssd.cpp:850:35: error: ‘voxelBlockNumber_t’ not specified in enclosing ‘parallel’

  850 |             for(idBlock=0;idBlock<voxelBlockNumber_t;idBlock++) {

      |

Edoardo Pasca

unread,
Jan 26, 2021, 11:04:24 AM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

NiftyPET won't build with GCC 9

[  4%] Building NVCC (Device) object nipet/CMakeFiles/mmr_auxe.dir/src/mmr_auxe_generated_scanner_0.cu.o
In file included from /usr/local/cuda/include/cuda_runtime.h:83,
                 from <command-line>:
/usr/local/cuda/include/crt/host_config.h:129:2: error: #error -- unsupported GNU version! gcc versions later than 8 are not supported!

Kris Thielemans

unread,
Jan 26, 2021, 3:20:42 PM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

In particular the OpenMP clause #pragma omp parallel for default(none) leads to some variable not being declared. Unfortunately, this happens with NIFTYREG.

Yes, noted at #413 (comment), which points to a NiftyReg PR

Kris Thielemans

unread,
Jan 26, 2021, 3:23:40 PM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

I suggest to keep comments here restricted to Gadgetron. Problems with gcc9 other dependencies belong in #413

Kris Thielemans

unread,
Jan 26, 2021, 3:26:44 PM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans requested changes on this pull request.


In version_config.cmake:

>    set(DEFAULT_ACE_URL https://github.com/paskino/libace-conda)
   set(DEFAULT_ACE_TAG origin/master)
   
+  # range-v3
+  set(DEFAULT_JSON_TAG origin/master)

JSON_TAG doesn't look ok


In version_config.cmake:

> @@ -169,6 +169,10 @@ set(DEFAULT_CCPi-FrameworkPlugins_TAG ${CIL_VERSION})
 set(DEFAULT_CCPi-Astra_URL https://github.com/vais-ral/CCPi-Astra.git)
 set(DEFAULT_CCPi-Astra_TAG ${CIL_VERSION})
 
+# range-v3
+set(DEFAULT_JSON_URL https://github.com/ericniebler/range-v3.git )
+set(DEFAULT_JSON_TAG 0.11.0)

JSON_TAG doesn't look ok

Kris Thielemans

unread,
Jan 26, 2021, 3:27:07 PM1/26/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Does this PR build if asking for Gadgetron only?

Edoardo Pasca

unread,
Jan 27, 2021, 3:17:27 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 4 commits.

  • c635bd4 creates env_ccppetmr.* symbolic links
  • adb7019 Merge branch 'master' into build_Gadgetron_master
  • e002ca7 pass SIRF include directory to Gadgetron from CPATH env variable
  • 5bcdc05 updates to build Gadgetron master


You are receiving this because you are subscribed to this thread.

Edoardo Pasca

unread,
Jan 27, 2021, 3:18:09 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In version_config.cmake:

>    set(DEFAULT_ACE_URL https://github.com/paskino/libace-conda)
   set(DEFAULT_ACE_TAG origin/master)
   
+  # range-v3
+  set(DEFAULT_JSON_TAG origin/master)

you are right, I fixed it but not pushed

Edoardo Pasca

unread,
Jan 27, 2021, 3:18:19 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In version_config.cmake:

> @@ -169,6 +169,10 @@ set(DEFAULT_CCPi-FrameworkPlugins_TAG ${CIL_VERSION})
 set(DEFAULT_CCPi-Astra_URL https://github.com/vais-ral/CCPi-Astra.git)
 set(DEFAULT_CCPi-Astra_TAG ${CIL_VERSION})
 
+# range-v3
+set(DEFAULT_JSON_URL https://github.com/ericniebler/range-v3.git )
+set(DEFAULT_JSON_TAG 0.11.0)

you are right, I fixed it but not pushed

Kris Thielemans

unread,
Jan 27, 2021, 3:23:00 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

currently Gadgetron test build fails:

This just seems a Gadgetron bug in their current master which presumably will be gone tomorrow.

I feel chasing their master is just giving you extra headaches. I suppose we need @johannesmayer 's gadgetron/gadgetron#794 and gadgetron/gadgetron#816 . We should therefore be fine with the merge commit of the latter, which is gadgetron/gadgetron@0033296. @johannesmayer @ckolbPTB could you confirm if this would be ok?

Johannes Mayer

unread,
Jan 27, 2021, 4:11:28 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

There has also been the fix of an include statement that was required, so I would need gadgetron/gadgetron@7d7a31c

ckolbPTB

unread,
Jan 27, 2021, 7:41:42 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

I leave this one to Johannes - he is the Gadgetron build expert

Edoardo Pasca

unread,
Jan 27, 2021, 11:21:48 AM1/27/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.


You are receiving this because you are subscribed to this thread.

Kris Thielemans

unread,
Jan 27, 2021, 3:29:48 PM1/27/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans requested changes on this pull request.


In SuperBuild/External_Gadgetron.cmake:

> @@ -107,12 +116,13 @@ if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalPr
       ${PYTHONLIBS_CMAKE_ARGS}
       -DGTEST_ROOT:PATH=${GTEST_ROOT}
       ${HDF5_CMAKE_ARGS}
+      -DHDF5_FOUND:BOOL=ON

this makes zero sense to me


In SuperBuild/External_Gadgetron.cmake:

> +if (NOT HDF5_CMAKE_ARGS)
+  message( FATAL_ERROR "HDF5_CMAKE_ARGS not found: ${HDF5_CMAKE_ARGS}")
+else()
+  message( STATUS "HDF5_CMAKE_ARGS found: ${HDF5_CMAKE_ARGS}")
+endif()
+

can't see why you need it. The project depends on HDF5. It should set this appropriately (or not, possibly, if we USE_SYSTEM_HDF5=ON)


In version_config.cmake:

> @@ -115,7 +115,7 @@ set(DEFAULT_glog_TAG v0.3.5)
 
 ## ITK
 set(DEFAULT_ITK_URL https://github.com/InsightSoftwareConsortium/ITK.git)
-set(DEFAULT_ITK_TAG v4.13.1)
+set(DEFAULT_ITK_TAG v4.13.3)

don't do this in this PR


In SuperBuild/External_Gadgetron.cmake:

> @@ -24,12 +24,21 @@
 #This needs to be unique globally
 set(proj Gadgetron)
 
+if ((NOT CC_9) OR (NOT CXX_9))

could try and find it of course


You are receiving this because you are subscribed to this thread.

Edoardo Pasca

unread,
Nov 5, 2021, 3:51:14 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • d2acc9f merge current SIRF-SuperBuild master


You are receiving this because you are subscribed to this thread.

Triage notifications on the go with GitHub Mobile for iOS or Android.

Edoardo Pasca

unread,
Nov 5, 2021, 4:23:20 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 1280ad9 install GCC9 on GitHub action

Edoardo Pasca

unread,
Nov 5, 2021, 4:25:41 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 7293ddf update action to get gcc9

Edoardo Pasca

unread,
Nov 5, 2021, 4:31:00 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 5, 2021, 5:22:13 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 5, 2021, 5:29:34 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 5b17c62 fix HDF5 dep and CUDA check

Edoardo Pasca

unread,
Nov 5, 2021, 9:27:19 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 5, 2021, 10:42:44 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 3fd6baf update Gadgetron and Boost version

Edoardo Pasca

unread,
Nov 5, 2021, 10:43:29 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 5, 2021, 11:21:52 AM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 5, 2021, 12:01:57 PM11/5/21
to SyneRBI/SIRF-SuperBuild, Subscribed

I updated Boost minimal version to 1.71.0, but installing 1.72.0 as the former doesn't exist!

The build seems to complain that I haven't built boost.coroutine https://github.com/SyneRBI/SIRF-SuperBuild/runs/4118695695?check_suite_focus=true#step:6:17209

How do I require that in
https://github.com/SyneRBI/SIRF-SuperBuild/blob/053bfabcdfd0967873aaaf68252e7e0ef497cc26/SuperBuild/External_Boost_configureboost.cmake#L27


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 5, 2021, 12:02:51 PM11/5/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In version_config.cmake:

> @@ -115,7 +115,7 @@ set(DEFAULT_glog_TAG v0.3.5)
 
 ## ITK
 set(DEFAULT_ITK_URL https://github.com/InsightSoftwareConsortium/ITK.git)
-set(DEFAULT_ITK_TAG v4.13.1)
+set(DEFAULT_ITK_TAG v4.13.3)

removed!

Edoardo Pasca

unread,
Nov 5, 2021, 12:03:43 PM11/5/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • d493c2f removed bump of ITK version [ci skip]


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 5, 2021, 12:04:03 PM11/5/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In SuperBuild/External_Gadgetron.cmake:

> +if (NOT HDF5_CMAKE_ARGS)
+  message( FATAL_ERROR "HDF5_CMAKE_ARGS not found: ${HDF5_CMAKE_ARGS}")
+else()
+  message( STATUS "HDF5_CMAKE_ARGS found: ${HDF5_CMAKE_ARGS}")
+endif()
+

removed


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 5, 2021, 12:04:32 PM11/5/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In SuperBuild/External_Gadgetron.cmake:

> @@ -107,12 +116,13 @@ if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalPr
       ${PYTHONLIBS_CMAKE_ARGS}
       -DGTEST_ROOT:PATH=${GTEST_ROOT}
       ${HDF5_CMAKE_ARGS}
+      -DHDF5_FOUND:BOOL=ON

removed in fact

Kris Thielemans

unread,
Nov 6, 2021, 2:09:14 PM11/6/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans commented on this pull request.


In docker/build_gadgetron-ubuntu.sh:

> +apt-get upgrade -y && \
+apt-get dist-upgrade -y && \

I really don't like this...

Kris Thielemans

unread,
Nov 6, 2021, 2:41:43 PM11/6/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Not sure why Gadgetron requires coroutine. I've asked gadgetron/gadgetron#1019.

Edoardo Pasca

unread,
Nov 6, 2021, 7:24:00 PM11/6/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 6, 2021, 7:26:21 PM11/6/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In docker/build_gadgetron-ubuntu.sh:

> +apt-get upgrade -y && \
+apt-get dist-upgrade -y && \

removed


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Kris Thielemans

unread,
Nov 7, 2021, 2:45:20 AM11/7/21
to SyneRBI/SIRF-SuperBuild, Subscribed

ok, past coroutine. Now we need RockDB apparently.
One example script is here https://gist.github.com/srimaln91/bea81d8c5ba36a64b0cd1b3b5324f687

Edoardo Pasca

unread,
Nov 7, 2021, 9:08:16 AM11/7/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 3 commits.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 7, 2021, 9:11:09 AM11/7/21
to SyneRBI/SIRF-SuperBuild, Subscribed

I'm trying with RocksDB from apt. Do you think we should add it to the SuperBuild?


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 7, 2021, 9:20:53 AM11/7/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 2 commits.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 7, 2021, 11:15:08 AM11/7/21
to SyneRBI/SIRF-SuperBuild, Subscribed

An error which has to do with ISMRMRD .

error: no match for ‘operator==’ (operand types are ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} and ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’})

I tried to merge https://github.com/SyneRBI/SIRF-SuperBuild/tree/ismrmrd1421 here and even use ISMRMRD branch, but it still fails.


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Kris Thielemans

unread,
Nov 7, 2021, 6:07:33 PM11/7/21
to SyneRBI/SIRF-SuperBuild, Subscribed

An error which has to do with ISMRMRD .

error: no match for ‘operator==’ (operand types are ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’} and ‘std::__tuple_element_t<0, std::tuple<ISMRMRD::AcquisitionHeader, Gadgetron::hoNDArray<std::complex<float> >, std::optional<Gadgetron::hoNDArray<float> > > >’ {aka ‘const ISMRMRD::AcquisitionHeader’})

I tried to merge https://github.com/SyneRBI/SIRF-SuperBuild/tree/ismrmrd1421 here and even use ISMRMRD branch latest commit, but it still fails.

no idea. @dchansen, @hansenms any idea? This test run was with an old commit of ISMRMRD
https://github.com/ismrmrd/ismrmrd/commits/1066d90 but I suppose if it's too old, CMake should have picked up on it?

Michael Hansen

unread,
Nov 7, 2021, 7:45:44 PM11/7/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans, I am not really sure what the ask is. There is some code somewhere, which is trying to compare and acquisition to another acquisition, but there is no == operator for that. I cannot see where that code is or what the context is, so it is really impossible to provide any comments on this.

Edoardo Pasca

unread,
Nov 8, 2021, 2:48:46 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 6 commits.

  • 7e48a96 trying ISMRMRD 1.4.2.1
  • 45f073a corrected version_config.cmake (missing DEFAULT_ISMRMRD_URL)
  • f3a093f trying v1.4.2
  • 4611d59 corrected version_config.cmake (SyneRBI/ismrmrd->ismrmrd/ismrmrd)
  • f825390 Merge remote-tracking branch 'origin/ismrmrd1421' into build_Gadgetron_master
  • 1c5855b update to latest ISMRMRD commit


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

David Christoffer Hansen

unread,
Nov 8, 2021, 3:35:53 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Gadgetron doesn't really version check ISMRMRD (or indeed most of its dependencies, except Boost), so you wouldn't be getting an error.
In general, Gadgetron will use the latest release of ISMRMRD available, and it would be safest to update the two in sync.

The error you're getting is pretty straight forward: In the version of ISMRMRD you're using, Acquisitionheader didn't have an equality operator. Now it does. So now you can compare two Acquisitions in Gadgetron.


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 8, 2021, 3:43:21 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 8, 2021, 5:59:38 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Subscribed

OK, great @dchansen that file builds now with ISMRMRD master and Gadgetron master.

Next problem

[ 63%] Building CXX object test/CMakeFiles/test_all.dir/nhlbi_compression_tests.cpp.o

/home/runner/work/SIRF-SuperBuild/SIRF-SuperBuild/build/sources/Gadgetron/test/nhlbi_compression_tests.cpp:194:25: error: expected constructor, destructor, or type conversion before ‘(’ token

  194 | INSTANTIATE_TEST_SUITE_P(

      |                         ^

/home/runner/work/SIRF-SuperBuild/SIRF-SuperBuild/build/sources/Gadgetron/test/nhlbi_compression_tests.cpp:236:25: error: expected constructor, destructor, or type conversion before ‘(’ token

  236 | INSTANTIATE_TEST_SUITE_P(

      |                         ^


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Kris Thielemans

unread,
Nov 8, 2021, 6:50:19 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Edoardo Pasca

unread,
Nov 8, 2021, 8:47:38 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 8, 2021, 9:13:01 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 420eb7e add JSON as dependency for Gadgetron and bumb version

Edoardo Pasca

unread,
Nov 8, 2021, 9:30:13 AM11/8/21
to SyneRBI/SIRF-SuperBuild, Subscribed

A couple of steps further, I updated GTest, added JSON as prerequisite for Gadgetron but still fails https://github.com/SyneRBI/SIRF-SuperBuild/runs/4139944170?check_suite_focus=true#step:6:18829

Another point is, I'm currently using RocksDB from ubuntu, but it may not be a correct version? On the other hand the compilation fails both on Ubuntu 18.04 and 20.04


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 11, 2021, 8:46:15 AM11/11/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 11, 2021, 9:35:40 AM11/11/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 15, 2021, 7:26:45 AM11/15/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • a271a01 bump Boost version to 1.78

Edoardo Pasca

unread,
Nov 15, 2021, 10:16:17 AM11/15/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 15, 2021, 10:26:38 AM11/15/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 2 commits.

Edoardo Pasca

unread,
Nov 15, 2021, 11:12:12 AM11/15/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 15, 2021, 12:11:05 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 81a3649 correct gflags apt package

Edoardo Pasca

unread,
Nov 15, 2021, 12:50:23 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Subscribed

The latest error comes from missing gadgetron.xml.example in the Gadgetron repo, gadgetron/gadgetron#1024

This build doesn't build Gadgetron tests, however trying that would fail linking with

[ 55%] Linking CXX executable test_all
cd /home/ofn77899/devel/bgm2/builds/Gadgetron/build/test && /usr/local/bin/cmake -E cmake_link_script CMakeFiles/test_all.dir/link.txt --verbose=1
/usr/bin/g++-9  -DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED -fopenmp -Werror=return-type -Werror=terminate -Werror=non-virtual-dtor -Werror=format-overflow -O3 -DNDEBUG   CMakeFiles/test_all.dir/tests.cpp.o CMakeFiles/test_all.dir/hoNDArray_elemwise_test.cpp.o CMakeFiles/test_all.dir/hoNDArray_blas_test.cpp.o CMakeFiles/test_all.dir/hoNDArray_utils_test.cpp.o CMakeFiles/test_all.dir/hoNDArray_reductions_test.cpp.o CMakeFiles/test_all.dir/read_writer_test.cpp.o CMakeFiles/test_all.dir/hoNDFFT_test.cpp.o CMakeFiles/test_all.dir/hoNFFT_test.cpp.o CMakeFiles/test_all.dir/hoNDWavelet_test.cpp.o CMakeFiles/test_all.dir/curveFitting_test.cpp.o CMakeFiles/test_all.dir/image_morphology_test.cpp.o CMakeFiles/test_all.dir/pattern_recognition_test.cpp.o CMakeFiles/test_all.dir/cmr_mapping_test.cpp.o CMakeFiles/test_all.dir/hoNDArray_linalg_test.cpp.o CMakeFiles/test_all.dir/core_test.cpp.o CMakeFiles/test_all.dir/threadpool_test.cpp.o CMakeFiles/test_all.dir/from_string_test.cpp.o CMakeFiles/test_all.dir/hoNDArrayView_test.cpp.o CMakeFiles/test_all.dir/ChannelAlgorithmsTest.cpp.o CMakeFiles/test_all.dir/cmr_strain_test.cpp.o CMakeFiles/test_all.dir/cmr_thickening_test.cpp.o CMakeFiles/test_all.dir/cmr_analytical_strain_test.cpp.o CMakeFiles/test_all.dir/hoSDC_test.cpp.o CMakeFiles/test_all.dir/nhlbi_compression_tests.cpp.o CMakeFiles/test_all.dir/gadgets/AcquisitionAccumulateTrigget_test.cpp.o CMakeFiles/test_all.dir/gadgets/FlagTriggerParsing_test.cpp.o  -o test_all  -Wl,-rpath,/home/ofn77899/devel/bgm2/builds/Gadgetron/build/core/readers:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/gadgets/mri_core:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/cmr:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/pattern_recognition:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/mri/sdc/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/core/writers:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/denoise:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/operators/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/mri_core:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/registration/optical_flow/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/dwt/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/image/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/klt/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/image_io:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/nfft/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/fft/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/core/cpu/math:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/core/cpu/hostutils:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/core:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/core/cpu:/home/ofn77899/devel/bgm2/builds/Gadgetron/build/toolboxes/log:/home/ofn77899/devel/bgm2/INSTALL/lib: ../core/readers/libgadgetron_core_readers.so.4.1.2 ../gadgets/mri_core/libgadgetron_mricore.so.4.1.2 ../toolboxes/cmr/libgadgetron_toolbox_cmr.so.4.1.2 ../toolboxes/pattern_recognition/libgadgetron_toolbox_pr.so.4.1.2 ../toolboxes/mri/sdc/cpu/libgadgetron_toolbox_cpusdc.so.4.1.2 /home/ofn77899/devel/bgm2/INSTALL/lib/libgtest.a ../core/writers/libgadgetron_core_writers.so.4.1.2 ../toolboxes/denoise/libgadgetron_toolbox_denoise.so.4.1.2 ../toolboxes/operators/cpu/libgadgetron_toolbox_cpuoperator.so.4.1.2 ../toolboxes/mri_core/libgadgetron_toolbox_mri_core.so.4.1.2 ../toolboxes/registration/optical_flow/cpu/libgadgetron_toolbox_cpureg.so.4.1.2 ../toolboxes/dwt/cpu/libgadgetron_toolbox_cpudwt.so.4.1.2 ../toolboxes/image/cpu/libgadgetron_toolbox_cpu_image.so.4.1.2 ../toolboxes/klt/cpu/libgadgetron_toolbox_cpuklt.so.4.1.2 ../toolboxes/image_io/libgadgetron_toolbox_image_analyze_io.so.4.1.2 ../toolboxes/nfft/cpu/libgadgetron_toolbox_cpunfft.so.4.1.2 ../toolboxes/fft/cpu/libgadgetron_toolbox_cpufft.so.4.1.2 ../toolboxes/core/cpu/math/libgadgetron_toolbox_cpucore_math.so.4.1.2 -llapacke /usr/lib/x86_64-linux-gnu/liblapacke.so /usr/lib/x86_64-linux-gnu/libopenblas.so /home/ofn77899/devel/bgm2/INSTALL/lib/libfftw3f.a /home/ofn77899/devel/bgm2/INSTALL/lib/libfftw3.a ../toolboxes/core/cpu/hostutils/libgadgetron_toolbox_hostutils.so.4.1.2 ../core/libgadgetron_core.so.4.1.2 ../toolboxes/core/cpu/libgadgetron_toolbox_cpucore.so.4.1.2 /home/ofn77899/devel/bgm2/INSTALL/lib/libismrmrd.so.1.5.0 /home/ofn77899/devel/bgm2/INSTALL/lib/libhdf5.so /home/ofn77899/devel/bgm2/INSTALL/lib/libboost_filesystem.so.1.78.0 /home/ofn77899/devel/bgm2/INSTALL/lib/libboost_atomic.so.1.78.0 ../toolboxes/log/libgadgetron_toolbox_log.so.4.1.2 /home/ofn77899/devel/bgm2/INSTALL/lib/libboost_system.so.1.78.0
cd /home/ofn77899/devel/bgm2/builds/Gadgetron/build/test && /usr/local/bin/cmake -D TEST_TARGET=test_all -D TEST_EXECUTABLE=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=test_all_TESTS -D CTEST_FILE=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -P /usr/local/share/cmake-3.17/Modules/GoogleTestAddTests.cmake
/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all: error while loading shared libraries: libhdf5.so.100.1.0: cannot open shared object file: No such file or directory


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Kris Thielemans

unread,
Nov 15, 2021, 3:06:55 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Subscribed

This build doesn't build Gadgetron tests, however trying that would fail linking with

cd /home/ofn77899/devel/bgm2/builds/Gadgetron/build/test && /usr/local/bin/cmake -D TEST_TARGET=test_all -D  TEST_EXECUTABLE=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all -D TEST_EXECUTOR= -D TEST_WORKING_DIR=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=test_all_TESTS -D CTEST_FILE=/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=5 -P /usr/local/share/cmake-3.17/Modules/GoogleTestAddTests.cmake
/home/ofn77899/devel/bgm2/builds/Gadgetron/build/test/test_all: error while loading shared libraries: libhdf5.so.100.1.0: cannot open shared object file: No such file or directory

While libhdf5.so.100.1.0 does exist.

This is not a linking error but a run-time error (when executing the test). It is linking fine with /home/ofn77899/devel/bgm2/INSTALL/lib/libhdf5.so. I cannot check if that is a symbolic link to libhdf5.so.100.1.0. (in the same location). Did you set LD_LIBRARY_PATH (i.e. source env_sirf.sh) before running the test?

Edoardo Pasca

unread,
Nov 15, 2021, 3:38:51 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Subscribed

ah, that's good. No, I haven't set the LD_LIBRARY_PATH as this happens during make Gadgetron.

I will set it.

Edoardo Pasca

unread,
Nov 15, 2021, 3:41:44 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Subscribed

On my machine

 ls -lh INSTALL/lib/libhdf5*
-rw-r--r-- 1 ofn77899 ofn77899 7.9M Nov 15 15:02 INSTALL/lib/libhdf5.a
-rw-r--r-- 1 ofn77899 ofn77899 851K Nov 15 15:02 INSTALL/lib/libhdf5_cpp.a
lrwxrwxrwx 1 ofn77899 ofn77899   22 Nov 15 15:02 INSTALL/lib/libhdf5_cpp.so -> libhdf5_cpp.so.100.1.0
lrwxrwxrwx 1 ofn77899 ofn77899   21 Nov 15 15:02 INSTALL/lib/libhdf5_cpp.so.100.1.0 -> libhdf5_cpp.so.1.10.1
-rw-r--r-- 1 ofn77899 ofn77899 527K Nov 15 15:02 INSTALL/lib/libhdf5_cpp.so.1.10.1
-rw-r--r-- 1 ofn77899 ofn77899 3.0K Nov 15 15:01 INSTALL/lib/libhdf5.settings
lrwxrwxrwx 1 ofn77899 ofn77899   18 Nov 15 15:02 INSTALL/lib/libhdf5.so -> libhdf5.so.100.1.0
lrwxrwxrwx 1 ofn77899 ofn77899   17 Nov 15 15:02 INSTALL/lib/libhdf5.so.100.1.0 -> libhdf5.so.1.10.1
-rw-r--r-- 1 ofn77899 ofn77899 4.1M Nov 15 15:02 INSTALL/lib/libhdf5.so.1.10.1

Kris Thielemans

unread,
Nov 15, 2021, 3:51:02 PM11/15/21
to SyneRBI/SIRF-SuperBuild, Subscribed

ah, that's good. No, I haven't set the LD_LIBRARY_PATH as this happens during make Gadgetron.

They run a test during building? That's very non-standard...

Edoardo Pasca

unread,
Nov 16, 2021, 9:36:40 AM11/16/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 3 commits.

  • bf1ca35 build tests
  • cfbbdb9 skip copying of missing config file
  • caa540c pass LD_LIBRARY_DIR at BUILD step


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 16, 2021, 10:03:52 AM11/16/21
to SyneRBI/SIRF-SuperBuild, Subscribed

let me celebrate the last commit which meant that Gadgetron built!

The failure is related to Siemens_to_ISMRMRD


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 16, 2021, 10:06:45 AM11/16/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 631b777 bump siemens_to_ismrmrd commit


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 16, 2021, 11:31:58 AM11/16/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 16, 2021, 12:02:51 PM11/16/21
to SyneRBI/SIRF-SuperBuild, Subscribed

I'm sure it built at some point! :(


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Kris Thielemans

unread,
Nov 16, 2021, 1:05:25 PM11/16/21
to SyneRBI/SIRF-SuperBuild, Subscribed

Random search on the error throws up google/googletest#2702 where they had the same illegal instruction which was related to RocksDB. Obviously that could be a red herring, but as Gadgetron uses that as well, just maybe it has the same cause. Not sure if RocksDB can be tested (or if that issue would allow you to find what the RocksDB problem was)

Edoardo Pasca

unread,
Nov 17, 2021, 4:55:54 AM11/17/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 6b7a007 do not build testing for gadgetron


You are receiving this because you are subscribed to this thread.

View it on GitHub or unsubscribe.

Edoardo Pasca

unread,
Nov 17, 2021, 7:02:48 AM11/17/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Edoardo Pasca

unread,
Nov 17, 2021, 9:05:06 AM11/17/21
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

Kris Thielemans

unread,
Nov 19, 2021, 7:26:35 AM11/19/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans requested changes on this pull request.


In docker/build_gadgetron-ubuntu.sh:

> @@ -6,10 +6,10 @@ apt-get update -qq
 apt-get install -yq --no-install-recommends \
   libhdf5-serial-dev     \
   libboost-dev libboost-chrono-dev \
-        libboost-filesystem-dev libboost-thread-dev \
-        libboost-date-time-dev libboost-regex-dev \
-        libboost-program-options-dev libboost-atomic-dev \
-        libboost-test-dev libboost-timer-dev \
+  libboost-filesystem-dev libboost-thread-dev \
+  libboost-date-time-dev libboost-regex-dev \
+  libboost-program-options-dev libboost-atomic-dev \
+  libboost-test-dev libboost-timer-dev \

don't we need coroutine and context now? Also in the VB script...


In patches/copy_file_if_not_exists.py:

> @@ -5,7 +5,7 @@
 def copy_if_not_exists(src, dst):
     from_file = os.path.abspath(src)
     to_file = os.path.abspath(dst)
-    if not os.path.exists(to_file):
+    if not os.path.exists(to_file) and os.path.exists(from_file):

not sure why you do this, but shouldn't you check then if the file is the same?


In version_config.cmake:

>       else()
        # Ubutnu 16.04 version should be fine
        set(Boost_REQUIRED_VERSION 1.58.0)
      endif()
-     set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_65_1.zip)
-     set(Boost_MD5 9824a7a3e25c9d4fdf2def07bce8651c)
+     # set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_71_0.zip)
+     # https://github.com/boostorg/math/pull/676
+     # https://github.com/boostorg/math/commit/720536a08e4e33639869e1b7a99d9ec923409c0b
+     # seems the bugfix entered Boost 1.78.0 which is not yet released, but probably 1.71.0 is patched on Ubuntu
+     set (Boost_URL https://sourceforge.net/projects/boost/files/boost/1.78.0.beta1/boost_1_78_0_b1.zip)

we'd need to create an issue to move to the released version then


In version_config.cmake:

> @@ -108,17 +113,19 @@ set(DEFAULT_NIFTYREG_TAG 99d584e2b8ea0bffe7e65e40c8dc818751782d92 )
 set(DEFAULT_NIFTYREG_REQUIRED_VERSION 1.5.68)
 
 ## ISMRMRD
-if (WIN32)
-  set(DEFAULT_ISMRMRD_URL https://github.com/SyneRBI/ismrmrd )
-  set(DEFAULT_ISMRMRD_TAG program_options_fix)
-else()
-  set(DEFAULT_ISMRMRD_URL https://github.com/ismrmrd/ismrmrd )
-  set(DEFAULT_ISMRMRD_TAG v1.4.1)
-endif()
+set(DEFAULT_ISMRMRD_URL https://github.com/ismrmrd/ismrmrd )
+set(DEFAULT_ISMRMRD_TAG origin/master)

can't keep this when merging


In version_config.cmake:

>  
 ## Gadgetron
 set(DEFAULT_Gadgetron_URL https://github.com/gadgetron/gadgetron )
-set(DEFAULT_Gadgetron_TAG b6191eaaa72ccca6c6a5fe4c0fa3319694f512ab)
+set(DEFAULT_Gadgetron_TAG origin/master)

will have to fix before merging


You are receiving this because you are subscribed to this thread.

Reply to this email directly, view it on GitHub, or unsubscribe.

Edoardo Pasca

unread,
Nov 19, 2021, 8:46:40 AM11/19/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In docker/build_gadgetron-ubuntu.sh:

> @@ -6,10 +6,10 @@ apt-get update -qq
 apt-get install -yq --no-install-recommends \
   libhdf5-serial-dev     \
   libboost-dev libboost-chrono-dev \
-        libboost-filesystem-dev libboost-thread-dev \
-        libboost-date-time-dev libboost-regex-dev \
-        libboost-program-options-dev libboost-atomic-dev \
-        libboost-test-dev libboost-timer-dev \
+  libboost-filesystem-dev libboost-thread-dev \
+  libboost-date-time-dev libboost-regex-dev \
+  libboost-program-options-dev libboost-atomic-dev \
+  libboost-test-dev libboost-timer-dev \

Currently I cannot compile with the version of Boost in Ubuntu 18.04, so this is irrelevant.
I need to start using 20.04.

Edoardo Pasca

unread,
Nov 19, 2021, 8:47:51 AM11/19/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In patches/copy_file_if_not_exists.py:

> @@ -5,7 +5,7 @@
 def copy_if_not_exists(src, dst):
     from_file = os.path.abspath(src)
     to_file = os.path.abspath(dst)
-    if not os.path.exists(to_file):
+    if not os.path.exists(to_file) and os.path.exists(from_file):

I do this because of gadgetron/gadgetron#1024
In practice in the new Gadgetron repo the example xml config is not there.

Edoardo Pasca

unread,
Nov 19, 2021, 8:49:14 AM11/19/21
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In version_config.cmake:

>  
 ## Gadgetron
 set(DEFAULT_Gadgetron_URL https://github.com/gadgetron/gadgetron )
-set(DEFAULT_Gadgetron_TAG b6191eaaa72ccca6c6a5fe4c0fa3319694f512ab)
+set(DEFAULT_Gadgetron_TAG origin/master)

yes, as with ISMRMRD we will need to choose a version or commit

Edoardo Pasca

unread,
Jan 10, 2022, 5:10:40 AM1/10/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@paskino commented on this pull request.


In patches/copy_file_if_not_exists.py:

> @@ -5,7 +5,7 @@
 def copy_if_not_exists(src, dst):
     from_file = os.path.abspath(src)
     to_file = os.path.abspath(dst)
-    if not os.path.exists(to_file):
+    if not os.path.exists(to_file) and os.path.exists(from_file):

The file is no longer needed


Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/review/847599205@github.com>

Kris Thielemans

unread,
Jan 14, 2022, 8:10:37 AM1/14/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans commented on this pull request.


In version_config.cmake:

> @@ -30,15 +30,20 @@ if (APPLE) # really should be checking for CLang
     set(Boost_MD5 f4096c4583947b0eb103c8539f1623a3)
 else()
      # Use version in Ubuntu 18.04

change comment


Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/review/852897744@github.com>

Kris Thielemans

unread,
Jan 14, 2022, 8:11:42 AM1/14/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans commented on this pull request.


In version_config.cmake:

> @@ -108,17 +113,19 @@ set(DEFAULT_NIFTYREG_TAG 99d584e2b8ea0bffe7e65e40c8dc818751782d92 )
 set(DEFAULT_NIFTYREG_REQUIRED_VERSION 1.5.68)
 
 ## ISMRMRD
-if (WIN32)
-  set(DEFAULT_ISMRMRD_URL https://github.com/SyneRBI/ismrmrd )
-  set(DEFAULT_ISMRMRD_TAG program_options_fix)
-else()
-  set(DEFAULT_ISMRMRD_URL https://github.com/ismrmrd/ismrmrd )
-  set(DEFAULT_ISMRMRD_TAG v1.4.1)
-endif()
+set(DEFAULT_ISMRMRD_URL https://github.com/ismrmrd/ismrmrd )
+set(DEFAULT_ISMRMRD_TAG origin/master)

change to v1.5.0 (i.e. merge master and resolve conflicts)


Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/review/852898713@github.com>

Kris Thielemans

unread,
Jan 21, 2022, 9:10:25 AM1/21/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans requested changes on this pull request.


In version_config.cmake:

>       else()
        # Ubutnu 16.04 version should be fine
        set(Boost_REQUIRED_VERSION 1.58.0)
      endif()
-     set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_65_1.zip)
-     set(Boost_MD5 9824a7a3e25c9d4fdf2def07bce8651c)
+     # set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_71_0.zip)
+     # https://github.com/boostorg/math/pull/676
+     # https://github.com/boostorg/math/commit/720536a08e4e33639869e1b7a99d9ec923409c0b
+     # seems the bugfix entered Boost 1.78.0 which is not yet released, but probably 1.71.0 is patched on Ubuntu
+     set (Boost_URL https://sourceforge.net/projects/boost/files/boost/1.78.0.beta1/boost_1_78_0_b1.zip)

1.78 is released


In version_config.cmake:

>       else()
        # Ubutnu 16.04 version should be fine
        set(Boost_REQUIRED_VERSION 1.58.0)
      endif()
-     set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_65_1.zip)
-     set(Boost_MD5 9824a7a3e25c9d4fdf2def07bce8651c)
+     # set(Boost_URL http://downloads.sourceforge.net/project/boost/boost/${Boost_VERSION}/boost_1_71_0.zip)
+     # https://github.com/boostorg/math/pull/676
+     # https://github.com/boostorg/math/commit/720536a08e4e33639869e1b7a99d9ec923409c0b
+     # seems the bugfix entered Boost 1.78.0 which is not yet released, but probably 1.71.0 is patched on Ubuntu
+     set (Boost_URL https://sourceforge.net/projects/boost/files/boost/1.78.0.beta1/boost_1_78_0_b1.zip)

we could switch to a git (recursive) checkout of https://github.com/boostorg/boost. Avoids having to mess with md5s


Reply to this email directly, view it on GitHub, or unsubscribe.
Triage notifications on the go with GitHub Mobile for iOS or Android.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/review/859582727@github.com>

Edoardo Pasca

unread,
Nov 1, 2022, 8:58:31 AM11/1/22
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • 5563a42 Merge branch 'master' into build_Gadgetron_master

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/push/11516742548@github.com>

Edoardo Pasca

unread,
Nov 1, 2022, 10:40:04 AM11/1/22
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • f440d10 add CPR to Gadgetron dependencies

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/push/11517923162@github.com>

Edoardo Pasca

unread,
Nov 1, 2022, 11:11:48 AM11/1/22
to SyneRBI/SIRF-SuperBuild, Push

@paskino pushed 1 commit.

  • f4ce4dd compile CPR but fails Gadgetron

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/push/11518300100@github.com>

Kris Thielemans

unread,
Nov 1, 2022, 11:44:15 AM11/1/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans requested changes on this pull request.

I'd like to get rid of the gcc9 work-arounds. People might be using clang or whatever anyway.

With any luck, their CMake checks compiler capabilities. We could potentially copy some stuff from them that checks this such that it would fall-over early. Or just tell people. Not sure


In SuperBuild/External_Gadgetron.cmake:

> @@ -55,14 +59,19 @@ if(NOT ( DEFINED "USE_SYSTEM_${externalProjName}" AND "${USE_SYSTEM_${externalPr
 
   # BLAS
   find_package(BLAS)
-  if (APPLE AND NOT (CBLAS_LIBRARY AND CBLAS_INCLUDE_DIR))
-	# if the variables don't exist, let the user set them.
-	SET(CBLAS_LIBRARY "" CACHE FILEPATH "CBLAS library")
-	SET(CBLAS_INCLUDE_DIR "" CACHE PATH "CBLAS include directory")
-    message(FATAL_ERROR "Gadgetron needs CBLAS_LIBRARY and CBLAS_INCLUDE_DIR. If
-      these variables do not exist in your CMake, create them manually. CBLAS_LIBRARY
-      and CBLAS_INCLUDE_DIR should be FILEPATH and PATH, respectively, and live in
-      /usr/local/Cellar/openblas/ if installed with \"brew install openblas\".")
+
+  message(STATUS "CBLAS ${CBLAS_LIBRARY} ${CBLAS_INCLUDE_DIR}")
+  if (NOT (CBLAS_LIBRARY AND CBLAS_INCLUDE_DIR))
+    if (APPLE)

I guess I'd remove this. Probably useful for other systems as well. Although see below


In SuperBuild/External_Gadgetron.cmake:

> -      -DCBLAS_INCLUDE_DIR:PATH=${CBLAS_INCLUDE_DIR}
-      -DCBLAS_LIBRARY:FILEPATH=${CBLAS_LIBRARY}

this removal means that the APPLE stuff above will be ignored.

This might take some more thought. (maybe create a CBLAS_FLAGS variable which defaults to empty).


Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/review/1163557197@github.com>

Edoardo Pasca

unread,
Nov 1, 2022, 12:36:25 PM11/1/22
to SyneRBI/SIRF-SuperBuild, Subscribed

@KrisThielemans I updated to the latest master, but the build fails miserably at CMake time in Gadgetron:

CMake Error at CMakeLists.txt:279 (find_package):
  By not providing "Findcpr.cmake" in CMAKE_MODULE_PATH this project has
  asked CMake to find a package configuration file provided by "cpr", but
  CMake did not find one.

  Could not find a package configuration file provided by "cpr" with any of
  the following names:

    cprConfig.cmake
    cpr-config.cmake

  Add the installation prefix of "cpr" to CMAKE_PREFIX_PATH or set "cpr_DIR"
  to a directory containing one of the above files.  If "cpr" provides a
  separate development package or SDK, be sure it has been installed.


-- Configuring incomplete, errors occurred!


Reply to this email directly, view it on GitHub, or unsubscribe.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/c1298807190@github.com>

Kris Thielemans

unread,
Nov 1, 2022, 12:44:39 PM11/1/22
to SyneRBI/SIRF-SuperBuild, Subscribed

ah well, I guess we can try to get through it with the system curl for the moment?


Reply to this email directly, view it on GitHub, or unsubscribe.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/c1298816838@github.com>

Kris Thielemans

unread,
Nov 1, 2022, 12:48:37 PM11/1/22
to SyneRBI/SIRF-SuperBuild, Subscribed

probably disable the docker CI for this PR for a while longer.


Reply to this email directly, view it on GitHub, or unsubscribe.

You are receiving this because you are subscribed to this thread.Message ID: <SyneRBI/SIRF-SuperBuild/pull/438/c1298821305@github.com>

It is loading more messages.
0 new messages