From 09b7444b82827acbd89970997ebc11b5e59558e6 Mon Sep 17 00:00:00 2001 From: Rocky Breslow <1774125+rbreslow@users.noreply.github.com> Date: Wed, 23 Mar 2022 13:38:03 -0400 Subject: [PATCH] dcm2niix: add support for configuring optional compile-time modules Right now, the dcm2niix package produces a single binary without support for dcm2niibatch, JPEG-LS, OpenJPEG, or an alternative zlib library. The official build process for dcm2niix configures all these options (minus batch support). I was motivated to make these changes so my organization could process JPEG 2000 imagery using the Nix binary. --- .../science/biology/dcm2niix/default.nix | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/science/biology/dcm2niix/default.nix b/pkgs/applications/science/biology/dcm2niix/default.nix index 36dddad5db5a..663e438d93f3 100644 --- a/pkgs/applications/science/biology/dcm2niix/default.nix +++ b/pkgs/applications/science/biology/dcm2niix/default.nix @@ -1,8 +1,15 @@ -{ lib, stdenv +{ lib +, stdenv , fetchFromGitHub , cmake -, libyamlcpp , git +, openjpeg +, libyamlcpp +, zlib +, batchVersion ? false +, withJpegLs ? true +, withOpenJpeg ? true +, withSystemZlib ? true }: stdenv.mkDerivation rec { @@ -17,7 +24,21 @@ stdenv.mkDerivation rec { }; nativeBuildInputs = [ cmake git ]; - buildInputs = [ libyamlcpp ]; + buildInputs = lib.optionals batchVersion [ libyamlcpp ] + ++ lib.optionals withOpenJpeg [ openjpeg openjpeg.dev ] + ++ lib.optionals withSystemZlib [ zlib ]; + + cmakeFlags = lib.optionals batchVersion [ + "-DBATCH_VERSION=ON" + "-DYAML-CPP_DIR=${libyamlcpp}/lib/cmake/yaml-cpp" + ] ++ lib.optionals withJpegLs [ + "-DUSE_JPEGLS=ON" + ] ++ lib.optionals withOpenJpeg [ + "-DUSE_OPENJPEG=ON" + "-DOpenJPEG_DIR=${openjpeg}/lib/${openjpeg.pname}-${lib.versions.majorMinor openjpeg.version}" + ] ++ lib.optionals withSystemZlib [ + "-DZLIB_IMPLEMENTATION=System" + ]; meta = with lib; { description = "DICOM to NIfTI converter";