68 lines
1.6 KiB
Nix
68 lines
1.6 KiB
Nix
{ lib, stdenv, fetchFromGitHub, cmake
|
|
, gfortran, blas, lapack, eigen
|
|
, useMpi ? false
|
|
, mpi
|
|
, openssh
|
|
, igraph
|
|
}:
|
|
|
|
# MPI version can only be built with LP64 interface.
|
|
# See https://github.com/opencollab/arpack-ng#readme
|
|
assert useMpi -> !blas.isILP64;
|
|
|
|
stdenv.mkDerivation rec {
|
|
pname = "arpack";
|
|
version = "3.9.1";
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "opencollab";
|
|
repo = "arpack-ng";
|
|
rev = version;
|
|
sha256 = "sha256-HCvapLba8oLqx9I5+KDAU0s/dTmdWOEilS75i4gyfC0=";
|
|
};
|
|
|
|
nativeBuildInputs = [ cmake gfortran ];
|
|
buildInputs = assert (blas.isILP64 == lapack.isILP64); [
|
|
blas
|
|
lapack
|
|
eigen
|
|
] ++ lib.optional useMpi mpi;
|
|
|
|
nativeCheckInputs = lib.optional useMpi openssh;
|
|
|
|
doCheck = true;
|
|
|
|
cmakeFlags = [
|
|
"-DBUILD_SHARED_LIBS=ON"
|
|
"-DINTERFACE64=${if blas.isILP64 then "1" else "0"}"
|
|
"-DMPI=${if useMpi then "ON" else "OFF"}"
|
|
];
|
|
|
|
preCheck = ''
|
|
# Prevent tests from using all cores
|
|
export OMP_NUM_THREADS=2
|
|
'';
|
|
|
|
postFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
|
|
install_name_tool -change libblas.dylib ${blas}/lib/libblas.dylib $out/lib/libarpack.dylib
|
|
'';
|
|
|
|
passthru = {
|
|
inherit (blas) isILP64;
|
|
tests = {
|
|
inherit igraph;
|
|
};
|
|
};
|
|
|
|
meta = {
|
|
homepage = "https://github.com/opencollab/arpack-ng";
|
|
changelog = "https://github.com/opencollab/arpack-ng/blob/${src.rev}/CHANGES";
|
|
description = ''
|
|
A collection of Fortran77 subroutines to solve large scale eigenvalue
|
|
problems.
|
|
'';
|
|
license = lib.licenses.bsd3;
|
|
maintainers = with lib.maintainers; [ ttuegel dotlambda ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
}
|