gnu: Add simpleitk.

* gnu/packages/image-processing.scm (simpleitk): New variable.

Change-Id: I96b270097fb54ee4566c278b87014bf893282894
Signed-off-by: Andreas Enge <andreas@enge.fr>
This commit is contained in:
Jake Forster 2025-07-19 01:54:22 +09:30 committed by Andreas Enge
parent 7f2fb067f2
commit 2fd581fba1
No known key found for this signature in database
GPG key ID: F7D5C9BF765C61E3

View file

@ -88,6 +88,7 @@
#:use-module (gnu packages image) #:use-module (gnu packages image)
#:use-module (gnu packages imagemagick) #:use-module (gnu packages imagemagick)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
#:use-module (gnu packages mpi) #:use-module (gnu packages mpi)
#:use-module (gnu packages opencl) #:use-module (gnu packages opencl)
@ -108,6 +109,7 @@
#:use-module (gnu packages sphinx) #:use-module (gnu packages sphinx)
#:use-module (gnu packages sqlite) #:use-module (gnu packages sqlite)
#:use-module (gnu packages ssh) #:use-module (gnu packages ssh)
#:use-module (gnu packages statistics)
#:use-module (gnu packages swig) #:use-module (gnu packages swig)
#:use-module (gnu packages tbb) #:use-module (gnu packages tbb)
#:use-module (gnu packages textutils) #:use-module (gnu packages textutils)
@ -1748,6 +1750,122 @@ Scan Tailer Advanced is a fork of Scan Tailer that merges Scan Tailor Featured
and Scan Tailor Enhanced versions as well as including many more bug fixes.") and Scan Tailor Enhanced versions as well as including many more bug fixes.")
(license license:gpl3+)))) (license license:gpl3+))))
(define-public simpleitk
(package
(name "simpleitk")
(version "2.5.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/SimpleITK/SimpleITK")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1ykrfrfh2012cg1122689w23pan2y731sszfpb701zhsb6fwv7j7"))))
(build-system cmake-build-system)
(outputs '("out" "python" "r"))
(arguments
(list
#:configure-flags
#~(list "-DBUILD_SHARED_LIBS=ON"
"-DWRAP_LUA=OFF"
"-DWRAP_PYTHON=ON"
"-DWRAP_R=ON"
"-DSimpleITK_PYTHON_USE_VIRTUALENV=OFF")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'early-GTest-discovery
(lambda _
;; Find GTest before targets link to 'GTest::GTest'.
(substitute* "Testing/Unit/CMakeLists.txt"
(("add_subdirectory\\(TestBase\\)" anchor)
(string-append "find_package(GTest REQUIRED)\n" anchor)))))
(add-after 'unpack 'extract-test-data
(lambda _
(invoke "tar" "xvf"
#$(this-package-native-input
(string-append "SimpleITKData-" version ".tar.gz"))
"--strip-components=1")))
(add-after 'unpack 'fix-runpath
(lambda _
;; The SWIG-generated shared libraries do not have SimpleITK's
;; libraries in their RUNPATH.
(define (cmake-snippet start)
(string-append
start
"set_target_properties(${SWIG_MODULE_SimpleITK_TARGET_NAME} "
"PROPERTIES BUILD_WITH_INSTALL_RPATH TRUE "
"INSTALL_RPATH \"" #$output "/lib\")\n"))
(substitute* "Wrapping/Python/CMakeLists.txt"
(("^set\\(SWIG_MODULE_SimpleITKPython.*" anchor)
(cmake-snippet anchor)))
(substitute* "Wrapping/R/CMakeLists.txt"
(("^set\\(SWIG_MODULE_SimpleITKR.*" anchor)
(cmake-snippet anchor)))))
(add-after 'unpack 'patch-cmake-config-itk-path
(lambda _
;; Allow building SimpleITK C++ projects without ITK installed
;; in the profile.
#$(let*
((itk (this-package-input "insight-toolkit"))
(itk-version (package-version itk))
(itk-version-major+minor
(version-major+minor itk-version)))
#~(substitute* "SimpleITKConfig.cmake.in"
(((string-append
"find_package\\(ITK \"@ITK_VERSION@\" "
"EXACT REQUIRED\\)"))
(string-append
"find_package(ITK \"" #$itk-version
"\" EXACT REQUIRED PATHS " #$itk
"/lib/cmake/ITK-"
#$itk-version-major+minor ")"))))))
(add-after 'install 'install-language-extension-modules
(lambda _
(with-directory-excursion "Wrapping/Python"
(invoke "python3" "setup.py" "bdist_wheel")
(apply invoke "pip" "--no-cache-dir" "--no-input" "install"
"--no-deps" "--prefix" #$output:python
(find-files "dist" "\\.whl$")))
(let ((r-package-path
(string-append #$output:r "/site-library/SimpleITK")))
(mkdir-p r-package-path)
(copy-recursively "Wrapping/R/R_libs/SimpleITK"
r-package-path))))
(delete 'check)
(add-after 'install 'check-after-install
;; Run the tests when the SimpleITK libraries are where the
;; language extension modules expect them to be.
(assoc-ref %standard-phases 'check)))))
(home-page "https://simpleitk.org")
(inputs (list insight-toolkit python r-minimal))
(native-inputs
(list googletest
lua
python-numpy ;for tests
python-pip
python-setuptools
python-wheel
swig-next
(origin
(method url-fetch)
(uri (string-append
"https://github.com/SimpleITK/SimpleITK/releases/download/v"
version "/SimpleITKData-" version ".tar.gz"))
(sha256
(base32
"13y44qqsgsvbrm84073i8clhggdgk8f36i6102sjg4j3fq790gal")))))
(synopsis "Simplified interface to @acronym{ITK, Insight Toolkit}")
(description
"SimpleITK is an image analysis toolkit built on top of @acronym{ITK,
Insight Toolkit}. It provides a simplified interface to most of the
image filters and the input/output and registration frameworks in
@acronym{ITK, Insight Toolkit}. It is written in C++ and provides
bindings for interpreted languages. This package includes the C++,
Python and R interfaces.")
(license license:asl2.0)))
(define-public stiff (define-public stiff
(package (package
(name "stiff") (name "stiff")