diff --git a/pkgs/applications/science/biology/neuron/default.nix b/pkgs/applications/science/biology/neuron/default.nix index 5d69b1f29e7..136fba47eb7 100644 --- a/pkgs/applications/science/biology/neuron/default.nix +++ b/pkgs/applications/science/biology/neuron/default.nix @@ -1,5 +1,5 @@ -{ stdenv -, fetchurl +{ stdenv +, fetchurl , pkgconfig , automake , autoconf @@ -7,14 +7,14 @@ , ncurses , readline , which -, python ? null +, python ? null , mpi ? null }: stdenv.mkDerivation rec { name = "neuron-${version}"; version = "7.4"; - + nativeBuildInputs = [ which pkgconfig automake autoconf libtool ]; buildInputs = [ ncurses readline python mpi ]; @@ -25,23 +25,32 @@ stdenv.mkDerivation rec { patches = (stdenv.lib.optional (stdenv.isDarwin) [ ./neuron-carbon-disable.patch ]); + # With LLVM 3.8 and above, clang (really libc++) gets upset if you attempt to redefine these... + postPatch = stdenv.lib.optionalString stdenv.cc.isClang '' + substituteInPlace src/gnu/neuron_gnu_builtin.h \ + --replace 'double abs(double arg);' "" \ + --replace 'float abs(float arg);' "" \ + --replace 'short abs(short arg);' "" \ + --replace 'long abs(long arg);' "" + ''; + enableParallelBuilding = true; ## neuron install by default everything under prefix/${host_arch}/* - ## override this to support nix standard file hierarchy + ## override this to support nix standard file hierarchy ## without issues: install everything under prefix/ preConfigure = '' ./build.sh - export prefix="''${prefix} --exec-prefix=''${out}" + export prefix="''${prefix} --exec-prefix=''${out}" ''; configureFlags = with stdenv.lib; [ "--without-x" "--with-readline=${readline}" ] ++ optionals (python != null) [ "--with-nrnpython=${python.interpreter}" ] - ++ (if mpi != null then ["--with-mpi" "--with-paranrn"] + ++ (if mpi != null then ["--with-mpi" "--with-paranrn"] else ["--without-mpi"]); - - + + postInstall = stdenv.lib.optionals (python != null) [ '' ## standardise python neuron install dir if any if [[ -d $out/lib/python ]]; then @@ -49,22 +58,22 @@ stdenv.mkDerivation rec { mv ''${out}/lib/python/* ''${out}/${python.sitePackages}/ fi '']; - - propagatedBuildInputs = [ readline ncurses which libtool ]; + + propagatedBuildInputs = [ readline ncurses which libtool ]; meta = with stdenv.lib; { description = "Simulation environment for empirically-based simulations of neurons and networks of neurons"; - longDescription = "NEURON is a simulation environment for developing and exercising models of - neurons and networks of neurons. It is particularly well-suited to problems where - cable properties of cells play an important role, possibly including extracellular - potential close to the membrane), and where cell membrane properties are complex, + longDescription = "NEURON is a simulation environment for developing and exercising models of + neurons and networks of neurons. It is particularly well-suited to problems where + cable properties of cells play an important role, possibly including extracellular + potential close to the membrane), and where cell membrane properties are complex, involving many ion-specific channels, ion accumulation, and second messengers"; license = licenses.bsd3; homepage = http://www.neuron.yale.edu/neuron; maintainers = [ maintainers.adev ]; platforms = platforms.all; - }; + }; }