From 5ce4a02687e8ac4bac199b04c2718c26b907373e Mon Sep 17 00:00:00 2001 From: DavidCromp Date: Thu, 23 Feb 2023 14:52:36 -0500 Subject: [PATCH] nest: fix Python & Darwin Removed auto-patch-elf and replaced with find command that moves libraries where they are expected by nest. Auto-patchelf isn't supported on aarch64, so I copied my local derivation fix I've been using. PyNEST also requires numpy, so that has been added to propagatedbuildinputs. Also added support for OpenMP on Darwin. --- .../science/biology/nest/default.nix | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/pkgs/applications/science/biology/nest/default.nix b/pkgs/applications/science/biology/nest/default.nix index 01874763901b..f26f06a1f298 100644 --- a/pkgs/applications/science/biology/nest/default.nix +++ b/pkgs/applications/science/biology/nest/default.nix @@ -5,9 +5,12 @@ , cmake , gsl , libtool +, findutils +, llvmPackages , mpi , nest , pkg-config +, boost , python3 , readline , autoPatchelfHook @@ -37,24 +40,36 @@ stdenv.mkDerivation rec { nativeBuildInputs = [ cmake pkg-config - autoPatchelfHook + findutils ]; buildInputs = [ gsl readline libtool # libltdl + boost ] ++ lib.optionals withPython [ python3 python3.pkgs.cython - ] ++ lib.optional withMpi mpi; + ] ++ lib.optional withMpi mpi + ++ lib.optional stdenv.isDarwin llvmPackages.openmp; + + propagatedBuildInputs = with python3.pkgs; [ + numpy + ]; cmakeFlags = [ "-Dwith-python=${if withPython then "ON" else "OFF"}" "-Dwith-mpi=${if withMpi then "ON" else "OFF"}" - "-Dwith-openmp=${if stdenv.isDarwin then "OFF" else "ON"}" + "-Dwith-openmp=ON" ]; + postInstall = '' + # Alternative to autoPatchElf, moves libraries where + # Nest expects them to be + find $out/lib/nest -type f -exec ln -s {} $out/lib \; + ''; + passthru.tests.version = testers.testVersion { package = nest; command = "nest --version"; @@ -64,7 +79,7 @@ stdenv.mkDerivation rec { description = "NEST is a command line tool for simulating neural networks"; homepage = "https://www.nest-simulator.org/"; license = licenses.gpl2; - maintainers = with maintainers; [ jiegec ]; + maintainers = with maintainers; [ jiegec davidcromp ]; platforms = platforms.unix; }; }