1
0
mirror of https://git.savannah.gnu.org/git/guix.git synced 2026-04-06 21:20:33 +02:00

gnu: Add elastix.

* gnu/packages/image-processing.scm (elastix): New variable.
* gnu/packages/patches/elastix-1404.patch: New file.
* gnu/local.mk (dist_patch_DATA): Record it.

Change-Id: Ic3b76c70afe2fc7ddb0f2516204f76e5690143a9
This commit is contained in:
Ricardo Wurmus
2026-03-13 21:31:17 +01:00
parent d47f5ac311
commit f53b641f70
3 changed files with 84 additions and 1 deletions

View File

@@ -1220,6 +1220,7 @@ dist_patch_DATA = \
%D%/packages/patches/dwarves-threading-reproducibility.patch \
%D%/packages/patches/efitools-riscv64-support.patch \
%D%/packages/patches/efivar-fix-fprint-format.patch \
%D%/packages/patches/elastix-1404.patch \
%D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \
%D%/packages/patches/einstein-build.patch \
%D%/packages/patches/elfutils-tests-ptrace.patch \

View File

@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2017, 2019, 2022, 2024 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2019, 2021-2026 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2014, 2021-2023, 2026 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@@ -1771,6 +1771,56 @@ full-featured UI aimed at clinical researchers.")
;; This includes the submodules greedy, c3d and digestible.
(license license:gpl3+))))
(define-public elastix
(package
(name "elastix")
(version "5.3.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/SuperElastix/elastix")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0sgw4cz4x6f78n6iqn87ll6wad32y67lmzvqfdfw1pzjkxbwzwyr"))
(patches
(search-patches "elastix-1404.patch"))))
(properties '((tunable? . #t)))
(build-system cmake-build-system)
(arguments
(list
#:configure-flags
#~(list "-DELASTIX_USE_EIGEN=ON"
"-DELASTIX_ENABLE_PACKAGER:BOOL=OFF"
"-DELASTIX_BUILD_EXECUTABLE:BOOL=ON"
"-DCMAKE_CXX_FLAGS=-fPIC"
"-DCMAKE_CXX_STANDARD=17"
"-DBUILD_TESTING:BOOL=ON")
;; These tests fail and are skipped in upstream CI.
#:test-exclude (string-join
(list "elastix_run_example_COMPARE_IM"
(string-append "elastix_run_3DCT_lung.MI.bspline."
"ASGD.001_COMPARE_TP"))
"|")))
(inputs (list charls
dcmtk
eigen
fftw
insight-toolkit
libpng
libtiff
zlib))
(home-page "https://elastix.dev/")
(synopsis "Image registration toolbox")
(description
"Elastix is a toolbox for rigid and nonrigid registration of images. The
software consists of a collection of algorithms that are commonly used to
perform (medical) image registration: the task of finding a spatial
transformation, mapping one image (the fixed image) to another (the moving
image), by optimizing relevant image similarity metrics.")
(license license:asl2.0)))
(define-public metapixel
;; Follow stable branch.
(let ((commit "98ee9daa093b6c334941242e63f90b1c2876eb4f"))

View File

@@ -0,0 +1,32 @@
From b54984063cd61636c57add80522bad23f70bb00a Mon Sep 17 00:00:00 2001
From: Niels Dekker <N.Dekker@lumc.nl>
Date: Tue, 3 Feb 2026 14:03:06 +0100
Subject: [PATCH] ENH: Add relative path to lib directory to RPATH on Linux and
MacOS
Addresses issue #1402, Avoid "error while loading shared libraries" on Linux
---
Core/CMakeLists.txt | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt
index 3b70abf12..204782b29 100644
--- a/Core/CMakeLists.txt
+++ b/Core/CMakeLists.txt
@@ -277,8 +277,14 @@ set(ELASTIX_LIBRARIES elastix_lib transformix_lib PARENT_SCOPE)
if(ELASTIX_BUILD_EXECUTABLE AND NOT WIN32)
# Tell the executables where to find the required .so files.
- set_target_properties(elastix_exe transformix_exe
- PROPERTIES INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib:${ITK_DIR}")
+ # Supports having the executables in bin, and the .so files in the lib directory next to the bin.
+ if (APPLE)
+ set_target_properties(elastix_exe transformix_exe
+ PROPERTIES BUILD_RPATH "@executable_path/../lib" INSTALL_RPATH "@executable_path/../lib:${CMAKE_INSTALL_PREFIX}/lib:${ITK_DIR}")
+ else()
+ set_target_properties(elastix_exe transformix_exe
+ PROPERTIES BUILD_RPATH "\$ORIGIN/../lib" INSTALL_RPATH "\$ORIGIN/../lib:${CMAKE_INSTALL_PREFIX}/lib:${ITK_DIR}")
+ endif()
endif()
if(ELASTIX_BUILD_EXECUTABLE AND NOT ELASTIX_NO_INSTALL_EXECUTABLES)