Closed mavel101 closed 1 year ago
The problem is probably due to an old pugixml library version in the Ubuntu 20.04 apt repositories. On Ubuntu 22.04 it builds with no errors.
@mavel101 not sure this should be closed yet. Ubuntu 20.04 is definitely not EOL at the moment, is the older pugixml version incompatible with the most recent changes to ismrmrd?
Yes, it breaks with commit 595bd68. Ive reopened the issue, maybe someone wants to have a look on this.
This is probably a won’t fix unless you want to have a look at it yourself. Don’t see us going back to keeping pugixml source files in the repo. We could sub module the project instead, but so could anybody who wants to build like that, so I’m not sure it’s worth it.
The distribution version of pugixml is 1.10:
libpugixml-dev/focal 1.10-1 amd64
libpugixml1v5/focal 1.10-1 amd64
And looks like that corresponds to a while back for ISMRMRD dependencies.
I can confirm that ISMRMRD v1.13.7 does build on Ubuntu 20.04.1 using a manual build and install of pugixml 1.14:
https://github.com/zeux/pugixml/tree/v1.14
Linux green 5.15.0-97-generic #107~20.04.1-Ubuntu SMP Fri Feb 9 14:20:11 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
(base) curt@green:~/src/pugixml/build$ cmake ../
-- The CXX compiler identification is GNU 9.4.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done (6.3s)
-- Generating done (0.0s)
-- Build files have been written to: /home/curt/src/pugixml/build
(base) curt@green:~/src/pugixml/build$ make all
[ 50%] Building CXX object CMakeFiles/pugixml-static.dir/src/pugixml.cpp.o
[100%] Linking CXX static library libpugixml.a
[100%] Built target pugixml-static
(base) curt@green:~/src/pugixml/build$ sudo make install/local
[sudo] password for curt:
[100%] Built target pugixml-static
Installing only the local directory...
-- Install configuration: ""
-- Installing: /usr/local/lib/libpugixml.a
-- Installing: /usr/local/lib/cmake/pugixml/pugixml-targets.cmake
-- Installing: /usr/local/lib/cmake/pugixml/pugixml-targets-noconfig.cmake
-- Installing: /usr/local/lib/cmake/pugixml/pugixml-config-version.cmake
-- Installing: /usr/local/lib/cmake/pugixml/pugixml-config.cmake
-- Installing: /usr/local/lib/pkgconfig/pugixml.pc
-- Installing: /usr/local/include/pugiconfig.hpp
-- Installing: /usr/local/include/pugixml.hpp
(base) curt@green:~/src/ismrmrd/ismrmrd$ cmake ../
CMake Deprecation Warning at CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
-- The C compiler identification is GNU 9.4.0
-- The CXX compiler identification is GNU 9.4.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found HDF5: /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so;/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so (found version "1.10.4") found components: C
-- HDF5 include found at: /usr/include/hdf5/serial
-- HDF5 libs found at: /usr/lib/x86_64-linux-gnu/hdf5/serial/libhdf5.so;/usr/lib/x86_64-linux-gnu/libpthread.so;/usr/lib/x86_64-linux-gnu/libsz.so;/usr/lib/x86_64-linux-gnu/libz.so;/usr/lib/x86_64-linux-gnu/libdl.so;/usr/lib/x86_64-linux-gnu/libm.so
-- Found Git: /usr/bin/git (found version "2.43.2")
-- Found Doxygen: /usr/bin/doxygen (found version "1.8.17") found components: doxygen dot
Building info application
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.43") found components: program_options random
-- FFTW3 UNIX libraries: /usr/lib/x86_64-linux-gnu/libfftw3f.so
-- Found FFTW3: /usr/lib/x86_64-linux-gnu/libfftw3f.so
FFTW3 and Boost Found... building utilities
CMake Deprecation Warning at examples/c/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 3.5 will be removed from a future version of
CMake.
Update the VERSION argument <min> value or use a ...<max> suffix to tell
CMake that the project does not need compatibility with older versions.
-- Found Boost: /usr/lib/x86_64-linux-gnu/cmake/Boost-1.71.0/BoostConfig.cmake (found suitable version "1.71.0", minimum required is "1.43") found components: unit_test_framework filesystem
CPACK_PACKAGING_INSTALL_PREFIX: /usr/local
-- Found CPack generators: DEB
-- Configuring done (0.7s)
-- Generating done (0.0s)
-- Build files have been written to: /home/curt/src/ismrmrd/ismrmrd
(base) curt@green:~/src/ismrmrd/ismrmrd$ make all
[ 2%] Building C object CMakeFiles/ismrmrd.dir/libsrc/ismrmrd.c.o
[ 4%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/ismrmrd.cpp.o
[ 7%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/xml.cpp.o
[ 9%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/meta.cpp.o
[ 11%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/serialization.cpp.o
[ 14%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/waveform.cpp.o
[ 16%] Building C object CMakeFiles/ismrmrd.dir/libsrc/waveform.c.o
[ 19%] Building C object CMakeFiles/ismrmrd.dir/libsrc/dataset.c.o
[ 21%] Building CXX object CMakeFiles/ismrmrd.dir/libsrc/dataset.cpp.o
[ 23%] Linking CXX shared library libismrmrd.so
[ 23%] Built target ismrmrd
[ 26%] Building CXX object utilities/CMakeFiles/ismrmrd_info.dir/ismrmrd_info.cpp.o
[ 28%] Linking CXX executable ismrmrd_info
[ 28%] Built target ismrmrd_info
[ 30%] Building CXX object utilities/CMakeFiles/ismrmrd_test_xml.dir/ismrmrd_test_xml.cpp.o
[ 33%] Linking CXX executable ismrmrd_test_xml
[ 33%] Built target ismrmrd_test_xml
[ 35%] Building CXX object utilities/CMakeFiles/ismrmrd_read_timing_test.dir/read_timing_test.cpp.o
[ 38%] Linking CXX executable ismrmrd_read_timing_test
[ 38%] Built target ismrmrd_read_timing_test
[ 40%] Building CXX object utilities/CMakeFiles/ismrmrd_generate_cartesian_shepp_logan.dir/generate_cartesian_shepp_logan.cpp.o
[ 42%] Building CXX object utilities/CMakeFiles/ismrmrd_generate_cartesian_shepp_logan.dir/ismrmrd_phantom.cpp.o
[ 45%] Linking CXX executable ismrmrd_generate_cartesian_shepp_logan
[ 45%] Built target ismrmrd_generate_cartesian_shepp_logan
[ 47%] Building CXX object utilities/CMakeFiles/ismrmrd_recon_cartesian_2d.dir/recon_cartesian_2d.cpp.o
[ 50%] Linking CXX executable ismrmrd_recon_cartesian_2d
[ 50%] Built target ismrmrd_recon_cartesian_2d
[ 52%] Building CXX object utilities/CMakeFiles/ismrmrd_hdf5_to_stream.dir/ismrmrd_hdf5_to_stream.cpp.o
[ 54%] Linking CXX executable ismrmrd_hdf5_to_stream
[ 54%] Built target ismrmrd_hdf5_to_stream
[ 57%] Building CXX object utilities/CMakeFiles/ismrmrd_stream_to_hdf5.dir/ismrmrd_stream_to_hdf5.cpp.o
[ 59%] Linking CXX executable ismrmrd_stream_to_hdf5
[ 59%] Built target ismrmrd_stream_to_hdf5
[ 61%] Building CXX object utilities/CMakeFiles/ismrmrd_stream_recon_cartesian_2d.dir/stream_recon_cartesian_2d.cpp.o
[ 64%] Linking CXX executable ismrmrd_stream_recon_cartesian_2d
[ 64%] Built target ismrmrd_stream_recon_cartesian_2d
[ 66%] Building C object examples/c/CMakeFiles/ismrmrd_c_example.dir/main.c.o
[ 69%] Linking CXX executable ismrmrd_c_example
[ 69%] Built target ismrmrd_c_example
[ 71%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_main.cpp.o
[ 73%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_acquisitions.cpp.o
[ 76%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_images.cpp.o
[ 78%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_ndarray.cpp.o
[ 80%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_flags.cpp.o
[ 83%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_channels.cpp.o
[ 85%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_xml_header.cpp.o
[ 88%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_quaternions.cpp.o
[ 90%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_serialization.cpp.o
[ 92%] Building CXX object tests/CMakeFiles/test_ismrmrd.dir/test_dataset.cpp.o
[ 95%] Linking CXX executable test_ismrmrd
[ 95%] Built target test_ismrmrd
[ 97%] Building CXX object tests/CMakeFiles/benchmark_dataset.dir/benchmark_dataset.cpp.o
[100%] Linking CXX executable benchmark_dataset
[100%] Built target benchmark_dataset
(base) curt@green:~/src/ismrmrd/ismrmrd$ sudo make install/local
[sudo] password for curt:
[ 23%] Built target ismrmrd
[ 28%] Built target ismrmrd_info
[ 33%] Built target ismrmrd_test_xml
[ 38%] Built target ismrmrd_read_timing_test
[ 45%] Built target ismrmrd_generate_cartesian_shepp_logan
[ 50%] Built target ismrmrd_recon_cartesian_2d
[ 54%] Built target ismrmrd_hdf5_to_stream
[ 59%] Built target ismrmrd_stream_to_hdf5
[ 64%] Built target ismrmrd_stream_recon_cartesian_2d
[ 69%] Built target ismrmrd_c_example
[ 95%] Built target test_ismrmrd
[100%] Built target benchmark_dataset
Installing only the local directory...
-- Install configuration: "Release"
-- Installing: /usr/local/include/ismrmrd/version.h
-- Installing: /usr/local/lib/libismrmrd.so.1.14.0
-- Installing: /usr/local/lib/libismrmrd.so.1.14
-- Set non-toolchain portion of runtime path of "/usr/local/lib/libismrmrd.so.1.14.0" to ""
-- Installing: /usr/local/lib/libismrmrd.so
-- Up-to-date: /usr/local/include/ismrmrd
-- Installing: /usr/local/include/ismrmrd/xml.h
-- Installing: /usr/local/include/ismrmrd/ismrmrd.h
-- Installing: /usr/local/include/ismrmrd/meta.h
-- Installing: /usr/local/include/ismrmrd/cpp98.h
-- Installing: /usr/local/include/ismrmrd/serialization.h
-- Installing: /usr/local/include/ismrmrd/export.h
-- Installing: /usr/local/include/ismrmrd/dataset.h
-- Installing: /usr/local/include/ismrmrd/serialization_iostream.h
-- Installing: /usr/local/include/ismrmrd/waveform.h
-- Installing: /usr/local/share/ismrmrd/schema/ismrmrd.xsd
-- Installing: /usr/local/share/ismrmrd/matlab
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/Waveform.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/Acquisition.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/Dataset.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/ImageHeaderToBytes.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/AcquisitionHeaderToBytes.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/AcquisitionHeaderFromBytes.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/hdf5_datatypes.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/isInt.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+util/ImageHeaderFromBytes.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/Image.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/WaveformHeader.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/ImageHeader.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+xml
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+xml/deserialize.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+xml/serialize.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/+xml/validate.m
-- Installing: /usr/local/share/ismrmrd/matlab/+ismrmrd/AcquisitionHeader.m
-- Installing: /usr/local/share/ismrmrd/matlab/test
-- Installing: /usr/local/share/ismrmrd/matlab/test/xmlTest.m
-- Installing: /usr/local/share/ismrmrd/matlab/test/xml
-- Installing: /usr/local/share/ismrmrd/matlab/test/xml/minimal_with_user_parameters.xml
-- Installing: /usr/local/share/ismrmrd/matlab/test/xml/ismrmrd_example_extended.xml
-- Installing: /usr/local/share/ismrmrd/matlab/test/xml/minimal.xml
-- Installing: /usr/local/share/ismrmrd/matlab/test/xml/ismrmrd_example.xml
-- Installing: /usr/local/lib/cmake/ISMRMRD/ISMRMRDTargets.cmake
-- Installing: /usr/local/lib/cmake/ISMRMRD/ISMRMRDTargets-release.cmake
-- Installing: /usr/local/lib/cmake/ISMRMRD/ISMRMRDConfigVersion.cmake
-- Installing: /usr/local/lib/cmake/ISMRMRD/ISMRMRDConfig.cmake
Describe the bug
ISMRMD 1.13.7 wont build on Ubuntu 20.04. Cmake gives the error message:
Target "ismrmrd" links to target "pugixml::pugixml" but the target was not found. Perhaps a find_package() call is missing for an IMPORTED target, or an ALIAS target is missing?
To Reproduce
Dockerfile to reproduce the issue:
System Information: Linux, Ubuntu 20.04
ISMRMRD 1.13.6 is building succesfully with the same Dockerfile.