mrtrix: 3.0.4 -> 3.0.4-unstable-2025-04-09 (#397641)
This commit is contained in:
@@ -18,28 +18,63 @@
|
||||
libXext,
|
||||
less,
|
||||
withGui ? true,
|
||||
fetchFromGitLab,
|
||||
fetchpatch,
|
||||
}:
|
||||
|
||||
let
|
||||
# reverts 'eigen: 3.4.0 -> 3.4.0-unstable-2022-05-19'
|
||||
# https://github.com/NixOS/nixpkgs/commit/d298f046edabc84b56bd788e11eaf7ed72f8171c
|
||||
eigen' = (
|
||||
eigen.overrideAttrs (old: rec {
|
||||
version = "3.4.0";
|
||||
src = fetchFromGitLab {
|
||||
owner = "libeigen";
|
||||
repo = "eigen";
|
||||
tag = version;
|
||||
hash = "sha256-1/4xMetKMDOgZgzz3WMxfHUEpmdAm52RqZvz6i0mLEw=";
|
||||
};
|
||||
patches = (old.patches or [ ]) ++ [
|
||||
# Fixes e.g. onnxruntime on aarch64-darwin:
|
||||
# https://hydra.nixos.org/build/248915128/nixlog/1,
|
||||
# originally suggested in https://github.com/NixOS/nixpkgs/pull/258392.
|
||||
#
|
||||
# The patch is from
|
||||
# ["Fix vectorized reductions for Eigen::half"](https://gitlab.com/libeigen/eigen/-/merge_requests/699)
|
||||
# which is two years old,
|
||||
# but Eigen hasn't had a release in two years either:
|
||||
# https://gitlab.com/libeigen/eigen/-/issues/2699.
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/libeigen/eigen/-/commit/d0e3791b1a0e2db9edd5f1d1befdb2ac5a40efe0.patch";
|
||||
hash = "sha256-8qiNpuYehnoiGiqy0c3Mcb45pwrmc6W4rzCxoLDSvj0=";
|
||||
})
|
||||
];
|
||||
})
|
||||
);
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mrtrix";
|
||||
version = "3.0.4";
|
||||
version = "3.0.4-unstable-2025-04-09";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "MRtrix3";
|
||||
repo = "mrtrix3";
|
||||
tag = version;
|
||||
hash = "sha256-87zBAoBLWQPccGS37XyQ8H0GhL01k8GQFgcLL6IwbcM=";
|
||||
rev = "7843bfc53a75f465901804ccf3fd6797d77531dd";
|
||||
hash = "sha256-C4Io3VkX10eWia4djrYvN12fWmwm0j1G60I8lmFH49w=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
eigen
|
||||
makeWrapper
|
||||
less
|
||||
python
|
||||
] ++ lib.optional withGui qt5.wrapQtAppsHook;
|
||||
|
||||
buildInputs =
|
||||
[
|
||||
ants
|
||||
eigen'
|
||||
python
|
||||
fftw
|
||||
libtiff
|
||||
@@ -58,36 +93,47 @@ stdenv.mkDerivation rec {
|
||||
nativeInstallCheckInputs = [ bc ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs ./build ./configure ./run_tests ./bin/*
|
||||
patchShebangs --build ./build ./configure ./run_tests
|
||||
patchShebangs --host ./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' ""
|
||||
--replace-fail 'git submodule update --init $datadir >> $LOGFILE 2>&1' ""
|
||||
|
||||
# reduce build noise
|
||||
substituteInPlace ./configure \
|
||||
--replace-fail "[ '-Wall' ]" "[]"
|
||||
|
||||
# fix error output (cuts off after a few lines otherwise)
|
||||
substituteInPlace ./build \
|
||||
--replace '"less -RX "' '"${less}/bin/less -RX "'
|
||||
--replace-fail 'stderr=subprocess.PIPE' 'stderr=None'
|
||||
'';
|
||||
|
||||
configurePhase = ''
|
||||
export EIGEN_CFLAGS="-isystem ${eigen}/include/eigen3"
|
||||
runHook preConfigure
|
||||
export EIGEN_CFLAGS="-isystem ${eigen'}/include/eigen3"
|
||||
unset LD # similar to https://github.com/MRtrix3/mrtrix3/issues/1519
|
||||
./configure ${lib.optionalString (!withGui) "-nogui"};
|
||||
runHook postConfigure
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
./build
|
||||
(cd testing && ../build)
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installCheckPhase = ''
|
||||
runHook preInstallCheck
|
||||
./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)
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
doInstallCheck = true;
|
||||
|
||||
@@ -99,13 +145,19 @@ stdenv.mkDerivation rec {
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
for prog in $out/bin/*; do
|
||||
if [[ -x "$prog" ]]; then
|
||||
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
|
||||
fi
|
||||
done
|
||||
'';
|
||||
preFixup =
|
||||
if withGui then
|
||||
''
|
||||
qtWrapperArgs+=(--prefix PATH : ${lib.makeBinPath [ ants ]})
|
||||
''
|
||||
else
|
||||
''
|
||||
for prog in $out/bin/*; do
|
||||
if [[ -x "$prog" ]]; then
|
||||
wrapProgram $prog --prefix PATH : ${lib.makeBinPath [ ants ]}
|
||||
fi
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
|
||||
|
||||
Reference in New Issue
Block a user