Update build for ubuntu 22.04
- fixes #935
Defers the installation of CIL run requirements which confuse CMake.
There is an issue with Gadgetron or dcmtk and GCC? https://github.com/SyneRBI/SIRF-SuperBuild/actions/runs/13265453075/job/37031643450?pr=937
/usr/include/dcmtk/ofstd/ofstdinc.h:121:2: error: #error "Macro INCLUDE_CSTRING not supported anymore. Include <cstring> directly."
121 | #error "Macro INCLUDE_CSTRING not supported anymore. Include <cstring> directly."
This is the error on my docker instance, potentially I haven't redirected stderr so the output seems incomplete.
#24 86.45 ninja: build stopped: subcommand failed.
#24 86.45 ninja: build stopped: subcommand failed.
#24 ERROR: process "/bin/bash -o pipefail -c BUILD_FLAGS=\"-G Ninja -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DSTIR_ENABLE_OPENMP=${STIR_ENABLE_OPENMP} -DUSE_SYSTEM_Armadillo=${USE_SYSTEM_Armadillo} -DUSE_SYSTEM_Boost=${USE_SYSTEM_Boost} -DUSE_SYSTEM_FFTW3=${USE_SYSTEM_FFTW3} -DUSE_SYSTEM_HDF5=${USE_SYSTEM_HDF5} -DUSE_ITK=${USE_ITK} -DUSE_SYSTEM_SWIG=${USE_SYSTEM_SWIG} -DUSE_NiftyPET=${USE_NiftyPET} -DBUILD_siemens_to_ismrmrd=${BUILD_siemens_to_ismrmrd} -DBUILD_pet_rd_tools=${BUILD_pet_rd_tools} -DGadgetron_USE_CUDA=${Gadgetron_USE_CUDA} -DBUILD_CIL=${BUILD_CIL}\" EXTRA_BUILD_FLAGS=\"${EXTRA_BUILD_FLAGS}\" bash /opt/scripts/user_sirf-ubuntu.sh && fix-permissions /opt/SIRF-SuperBuild /opt/ccache" did not complete successfully: exit code: 1
There is. https://github.com/gadgetron/gadgetron/issues/1277. However, this shouldn't occur on ubuntu 22.04. Does it say somewhere what version of dcmtk is being used?
Good spot! My docker image says it's 24.04
(base) root@2a418c82a9b7:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
I suppose the base docker image has upgraded to 24.04 more or less recently without us noticying.
https://github.com/SyneRBI/SIRF-SuperBuild/blob/5f1a7f498bf6f41551c19eb53798b5d33af43eec/Dockerfile#L2
We hit a similar issue but for a too old image with CIL.
On my docker instance with the ubuntu-22.04 base image it builds
(base) root@2035ef435116:/opt/SIRF-SuperBuild# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
Why did you move the python setup later on GHA? GHA is using the system python and pip. This doesn't have anything to do with conda discussions/problems on docker.
By the way, why not pin the hdf5 version (both conda and pip I guess to be the same as the system one. Then it wouldn't matter which one is picked up. For conda, I suppose we'd still need to install cxx-compiler to avoid what we saw at https://github.com/SyneRBI/SIRF-SuperBuild/issues/935#issuecomment-2651524936
Let's try to install hdf5 from conda/pip of the same version of the system one to minimise incompatibilities.
I tried armadillo from conda-forge but the superbuild didn't find the devel files.
Yes, as usual this is a long and painful road.
I get the following error on Gadgetron configuration. Indeed the system boost is 1.78.0.3 on Ubuntu 22.04
CMake Error at /usr/local/share/cmake-3.29/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find Boost: Found unsuitable version "1.74.0", but required is at
least "1.80.0" (found /usr/include, found components: coroutine system
date_time program_options filesystem timer context chrono)
The Gadgetron boost error will be because you update Gadgetron (which I told you to do). Let's keep it at the original version for now to get this through and see.
Downgrade gadgetron!
However, building with conda hdf5 fails due to https://github.com/UCL/STIR/issues/1557. So, if we do this, you'll need to fix that STIR (actually, cmake!) problem, and update STIR in version_config.cmake
Note that I successfully built Gadgetron via conda packages now. Update on https://github.com/SyneRBI/SIRF/wiki/Building-SIRF-and-CIL-with-conda.
Not 100% sure what we do with this now, but surely we urgently need the diff
- ARG BASE_CONTAINER=quay.io/jupyter/scipy-notebook:ubuntu-latest
+ ARG BASE_CONTAINER=quay.io/jupyter/scipy-notebook:ubuntu-22.04
Hash before rebase 40605c7c461fcee11ebe3e24bb6757e588f6c984
Currently encountering a weird error. If building with SB the build fails because of link errors with ISMRMRD.
docker build . --build-arg NUM_PARALLEL_BUILDS=1 --build-arg RUN_CTEST=0 --build-arg BUILD_CIL=ON --build-arg REMOVE_BUILD_FILES=0 --target=build
If just configuring with SB and commenting out the build line and then launching the image and executing bash within the container, ISMRMRD builds nicely.
docker run --rm -it --entrypoint bash <image_hash>
It boils down to the incomplete environment in the case of the docker run build, despite we seem to source the same environment file the environments look completely different and the docker one lacks CXXFLAGS for instance. The CMakeCache for ISMRMRD does not have any linker flags and therefore it fails.
- Why are the environments different?
- Who sets the
CXXFLAGS?
Thanks @casperdcl for pair investigation