From abff8db77ab641317a8bc8b8de99ebab843f4a29 Mon Sep 17 00:00:00 2001 From: Jake Forster Date: Tue, 7 Oct 2025 22:11:02 +1030 Subject: [PATCH] gnu: niftilib: Update to 3.0.1. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * gnu/packages/image.scm (niftlib): Update to 3.0.1. [source, home-page]: Switch to https://github.com/NIFTI-Imaging/nifti_clib. [source]: Switch to git-fetch. [build-system, arguments]: Switch to cmake-build-system. [arguments]: Use G-expression. [inputs]: Add expat. [native-inputs]: Add test data. Add help2man when not cross-compiling. [synopsis]: Update it. [description]: Update it. Change-Id: Iae16d2205044378558731b9236cb40368b1f9171 Co-authored-by: Ghislain Vaillant Signed-off-by: Ludovic Courtès --- gnu/packages/image.scm | 126 +++++++++++++++++++++++++++-------------- 1 file changed, 84 insertions(+), 42 deletions(-) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 04c06bd902621f0d171124fe05648bc6c67730c1..fe9e45673c316a0dd91d5902d8a674439107b4dc 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -40,6 +40,8 @@ ;;; Copyright © 2023, 2025 Artyom V. Poptsov ;;; Copyright © 2024 chris ;;; Copyright © 2025 Josep Bigorra +;;; Copyright © 2025 Jake Forster +;;; Copyright © 2025 Ghislain Vaillant ;;; ;;; This file is part of GNU Guix. ;;; @@ -2024,48 +2026,88 @@ and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).") "1kyhczwa17qp8ik3v876yjqsf4zrjj0z3464j04fak269cii404g")))))) (define-public niftilib - (package - (name "niftilib") - (version "2.0.0") - (source (origin - (method url-fetch) - (uri (list (string-append "mirror://sourceforge/niftilib/" - "nifticlib/nifticlib_" - (string-join (string-split version #\.) "_") - "/nifticlib-" version ".tar.gz"))) - (sha256 - (base32 "123z9bwzgin5y8gi5ni8j217k7n683whjsvg0lrpii9flgk8isd3")))) - (build-system gnu-build-system) - (arguments - '(#:tests? #f ; there is no test target - #:parallel-build? #f ; not supported - #:make-flags - (list "SHELL=bash" - (string-append "ZLIB_INC=" - (assoc-ref %build-inputs "zlib") "/include") - ;; Append "-fPIC" to CFLAGS. - (string-append "CFLAGS=" - "-Wall -ansi -pedantic -fPIC")) - #:phases - (modify-phases %standard-phases - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (for-each - (lambda (dir) - (copy-recursively dir (string-append out "/" dir))) - '("bin" "lib" "include"))) - #t)) - (delete 'configure)))) - (inputs - (list zlib)) - (synopsis "Library for reading and writing files in the nifti-1 format") - (description "Niftilib is a set of i/o libraries for reading and writing -files in the nifti-1 data format - a binary file format for storing -medical image data, e.g. magnetic resonance image (MRI) and functional MRI -(fMRI) brain images.") - (home-page "https://niftilib.sourceforge.net") - (license license:public-domain))) + ;; Warning: The version of the test data may not match the package version. + (let* ((nifti-test-data-version "3.0.2") + (nifti-test-data-file (git-file-name "nifti-test-data" + nifti-test-data-version))) + (package + (name "niftilib") + (version "3.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/NIFTI-Imaging/nifti_clib") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0hamm6nvbjdjjd5md4jahzvn5559frigxaiybnjkh59ckxwb1hy4")))) + (build-system cmake-build-system) + (arguments + (list + #:configure-flags + #~(append + (list "-DBUILD_SHARED_LIBS=ON" + "-DDOWNLOAD_TEST_DATA=OFF" + ;; Test data directory must be writeable. + (string-append "-Dfetch_testing_data_SOURCE_DIR=" + (canonicalize-path ".") "/source/test-data") + "-DUSE_CIFTI_CODE=ON") + ;; Unable to generate manual pages via help2man when cross-compiling. + (if #$(%current-target-system) + '() + (list "-DNIFTI_INSTALL_NO_DOCS=FALSE"))) + #:phases + #~(modify-phases %standard-phases + (add-after 'unpack 'set-version + (lambda _ + (substitute* "CMakeLists.txt" + (("0.0.0.0") #$version)))) + (add-after 'unpack 'prepare-test-data + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (copy-recursively #$(this-package-native-input + nifti-test-data-file) + "test-data")))) + (add-after 'unpack 'patch-tests + (lambda* (#:key tests? #:allow-other-keys) + (when tests? + (substitute* (string-append "nifti2/nifti_regress_test/" + "cmake_testscripts/" + "install_linking_test.sh") + (("real_easy") "source/real_easy"))))) + (delete 'check) + (add-after 'install 'check + (lambda args + ;; The 'install_linking' test invokes this package's binaries. + (setenv "PATH" (string-append (getenv "PATH") ":" + #$output "/bin")) + (apply (assoc-ref %standard-phases 'check) args)))))) + (inputs (list expat zlib)) + (native-inputs + (append + (list + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/NIFTI-Imaging/nifti-test-data") + (commit (string-append "v" nifti-test-data-version)))) + (file-name nifti-test-data-file) + (sha256 + (base32 "0jdm8amix7pvfb1zmrb89f7izji2s8fpbfncgamczsngc11yfgcp")))) + (if (%current-target-system) + '() + (list help2man)))) + (synopsis + "C libraries for reading and writing files in @acronym{NIfTI, Neuroimaging +Informatics Technology Initiative} formats") + (description + "@code{Nifti_clib} is a set of I/O libraries for reading and writing files +in the nifti-1, nifti-2, and (to some degree) cifti file formats. These are +binary file formats for storing medical image data, e.g. @acronym{MRI, magnetic +resonance imaging} and @acronym{fMRI, functional MRI} brain images.") + (home-page "https://github.com/NIFTI-Imaging/nifti_clib") + (license license:public-domain)))) (define-public mini (package