%define debug_package %{nil} Name: medInria Version: 5.0.1~beta Release: 0.1%{?dist} Summary: Medical image navigation and research tool License: BSD-3-Clause URL: https://github.com/medInria/medInria-public Source0: https://github.com/medInria/medInria-public/archive/refs/tags/V5.0.1beta/medInria-public-V5.0.1beta.tar.gz BuildRequires: cmake >= 3.19 BuildRequires: ninja-build BuildRequires: gcc-c++ # Qt5 BuildRequires: qt5-qtbase-devel BuildRequires: qt5-qtdeclarative-devel BuildRequires: qt5-qtsvg-devel BuildRequires: qt5-qttools-devel BuildRequires: qt5-qtxmlpatterns-devel # Core dependencies BuildRequires: dtk-devel >= 1.7.1 BuildRequires: InsightToolkit5-devel >= 5.4.5-10 # Pin to system VTK 9.2.6 (Qt5 GUISupportQt); avoid COPR VTK 9.5.2 (Qt6) BuildRequires: vtk-devel < 9.3 BuildRequires: vtk-qt < 9.3 # java-devel needed because VTK 9.2.6 cmake targets reference JVM include paths BuildRequires: java-devel BuildRequires: dcmtk-devel BuildRequires: TTK-devel >= 4.0.1 BuildRequires: RPI-devel >= 4.0 # System libraries BuildRequires: mesa-libGL-devel BuildRequires: hdf5-devel BuildRequires: gdcm-devel BuildRequires: openssl-devel BuildRequires: sqlite-devel Requires: qt5-qtbase Requires: qt5-qtsvg Requires: qt5-qtdeclarative Requires: dtk >= 1.7.1 %description medInria is a free medical image viewer and processing tool developed at Inria. It provides visualization of 3D/4D medical images, diffusion MRI processing (tensor estimation, tractography), image registration, and segmentation tools through a plugin-based architecture. %package devel Summary: Development files for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel Headers and cmake config files for medInria development. %prep %setup -q -n medInria-public-5.0.1beta # --------------------------------------------------------------------------- # All patches apply to src/ (the standalone cmake project, not the superbuild) # --------------------------------------------------------------------------- # Fix hardcoded lib/ install destinations to respect CMAKE_INSTALL_LIBDIR # Libraries → CMAKE_INSTALL_LIBDIR (lib64 on x86_64) sed -i 's|LIBRARY DESTINATION lib$|LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}|' \ src/cmake/module/set_lib_install_rules.cmake sed -i 's|ARCHIVE DESTINATION lib$|ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}|' \ src/cmake/module/set_lib_install_rules.cmake # Plugins → lib64/medInria/plugins{,_legacy} sed -i 's|LIBRARY DESTINATION bin/plugins\(.*\)|LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}/medInria/plugins\1|' \ src/cmake/module/set_plugin_install_rules.cmake sed -i 's|RUNTIME DESTINATION bin/plugins\(.*\)|RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR}/medInria/plugins\1|' \ src/cmake/module/set_plugin_install_rules.cmake sed -i 's|ARCHIVE DESTINATION lib/plugins\(.*\)|ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/medInria/plugins\1|' \ src/cmake/module/set_plugin_install_rules.cmake # cmake config install paths → CMAKE_INSTALL_LIBDIR/cmake/ # (only install-time DESTINATION lines, not build-tree CMAKE_BINARY_DIR refs) sed -i 's|INSTALL_DESTINATION lib/cmake/|INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/|g' \ src/cmake/module/set_lib_install_rules.cmake sed -i '/ConfigPackageLocation/s|lib/cmake/|${CMAKE_INSTALL_LIBDIR}/cmake/|' \ src/cmake/module/set_lib_install_rules.cmake sed -i '/^ DESTINATION lib\/cmake/s|lib/cmake/|${CMAKE_INSTALL_LIBDIR}/cmake/|' \ src/cmake/module/set_lib_install_rules.cmake sed -i '/DESTINATION.*lib\/cmake/s|DESTINATION lib/cmake/|DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/|' \ src/cmake/module/set_lib_install_rules.cmake # Remove -Wformat=0 which conflicts with Fedora's -Werror=format-security (GCC 15) sed -i '/Wformat=0/d' src/CMakeLists.txt # Shim vtkLegacyReaderVersion.h (VTK 9.3+ only): define version constants for VTK 9.2 sed -i 's|#include |// VTK 9.2 lacks vtkLegacyReaderVersion.h; define constants\nstatic constexpr int vtkLegacyReaderMajorVersion = 5;\nstatic constexpr int vtkLegacyReaderMinorVersion = 1;|' \ src/layers/legacy/medVtkDataMeshBase/vtkMetaSurfaceMesh.cxx \ src/layers/legacy/medVtkDataMeshBase/vtkMetaVolumeMesh.cxx %build # dtk cmake config omits dtkMathSupport/dtkVrSupport include dirs export CXXFLAGS="%{optflags} -std=c++17 -include cstdint -fpermissive -I/usr/include/dtkMathSupport -I/usr/include/dtkVrSupport" # Build from src/ subdirectory (self-contained cmake project, not superbuild) cd src %cmake \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_CXX_STANDARD_REQUIRED=ON \ -DCMAKE_SKIP_INSTALL_RPATH=ON \ -DCMAKE_INSTALL_LIBDIR=%{_lib} \ -Ddtk_DIR=%{_libdir}/cmake/dtk \ -DITK_DIR=%{_prefix}/lib/cmake/ITK-5.4 \ -DDCMTK_DIR=%{_libdir}/cmake/dcmtk \ -DTTK_DIR=%{_libdir}/cmake/TTK \ -DRPI_DIR=%{_libdir}/cmake/RPI \ -DUSE_Python=OFF \ -DUSE_DTKIMAGING=OFF \ -DUSE_OSPRay=OFF \ -DUSE_FFmpeg=OFF \ -DBUILD_ALL_PLUGINS=ON \ -DBUILD_EXAMPLE_PLUGINS=OFF \ -DBUILD_COMPOSITEDATASET_PLUGIN=OFF \ -DmedInria_BUILD_TESTS=OFF \ -DmedInria_BUILD_DOCUMENTATION=OFF %cmake_build %install cd src %cmake_install cd .. # Remove any qt.conf deploy artifact (not needed for system Qt) rm -f %{buildroot}%{_bindir}/qt.conf %ldconfig_scriptlets %files %license LICENSE.txt %doc LICENSES_EXT.txt %{_bindir}/medInria %{_libdir}/libmed*.so.* %{_libdir}/medInria/ %files devel %{_includedir}/med*/ %{_libdir}/libmed*.so %{_libdir}/cmake/med*/ %changelog * Tue Mar 03 2026 Morgan Hough - 5.0.1~beta-0.1 - Initial package for medInria V5.0.1beta - Build src/ directly, bypassing the superbuild - System dependencies: Qt5, ITK 5.4.5 with VtkGlue, VTK 9.2.6, dtk 1.7.1, TTK 4.0.1, RPI 4.0, DCMTK - Disable Python, dtkImaging, FFmpeg, OSPRay