nixpkgs/pkgs/applications/science/biology/mrtrix/default.nix
Guillaume Girol 33afbf39f6 treewide: switch to nativeCheckInputs
checkInputs used to be added to nativeBuildInputs. Now we have
nativeCheckInputs to do that instead. Doing this treewide change allows
to keep hashes identical to before the introduction of
nativeCheckInputs.
2023-01-21 12:00:00 +00:00

97 lines
2.3 KiB
Nix

{ stdenv, lib, fetchFromGitHub, python, makeWrapper
, eigen, fftw, libtiff, libpng, zlib, ants, bc
, qt5, libGL, libGLU, libX11, libXext
, withGui ? true, less }:
stdenv.mkDerivation rec {
pname = "mrtrix";
version = "unstable-2021-11-25";
src = fetchFromGitHub {
owner = "MRtrix3";
repo = "mrtrix3";
rev = "994498557037c9e4f7ba67f255820ef84ea899d9";
sha256 = "sha256-8eFDS5z4ZxMzi9Khk90KAS4ndma/Syd6JDXM2Fpr0M8=";
fetchSubmodules = true;
};
nativeBuildInputs = [ eigen makeWrapper ] ++ lib.optional withGui qt5.wrapQtAppsHook;
buildInputs = [
ants
python
fftw
libtiff
libpng
zlib
] ++ lib.optionals withGui [
libGL
libGLU
libX11
libXext
qt5.qtbase
qt5.qtsvg
];
nativeInstallCheckInputs = [ bc ];
postPatch = ''
patchShebangs ./build ./configure ./run_tests ./bin/*
# patching interpreters before fixup is needed for tests:
patchShebangs ./bin/*
patchShebangs testing/binaries/data/vectorstats/*py
substituteInPlace ./run_tests \
--replace 'git submodule update --init $datadir >> $LOGFILE 2>&1' ""
substituteInPlace ./build \
--replace '"less -RX "' '"${less}/bin/less -RX "'
'';
configurePhase = ''
export EIGEN_CFLAGS="-isystem ${eigen}/include/eigen3"
unset LD # similar to https://github.com/MRtrix3/mrtrix3/issues/1519
./configure ${lib.optionalString (!withGui) "-nogui"};
'';
buildPhase = ''
./build
(cd testing && ../build)
'';
installCheckPhase = ''
./run_tests units
./run_tests binaries
# can also `./run_tests scripts`, but this fails due to lack of FSL package
# (and there's no convenient way to disable individual tests)
'';
doInstallCheck = true;
installPhase = ''
runHook preInstall
mkdir -p $out
cp -ar lib $out/lib
cp -ar bin $out/bin
runHook postInstall
'';
postInstall = ''
for prog in $out/bin/*; do
if [[ -x "$prog" ]]; then
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
fi
done
'';
meta = with lib; {
broken = (stdenv.isLinux && stdenv.isAarch64);
homepage = "https://github.com/MRtrix3/mrtrix3";
description = "Suite of tools for diffusion imaging";
maintainers = with maintainers; [ bcdarwin ];
platforms = platforms.linux;
license = licenses.mpl20;
};
}