summary refs log tree commit diff
path: root/pkgs/applications/science/biology
diff options
context:
space:
mode:
authorAdrien Devresse <adrien.devresse@epfl.ch>2016-08-23 13:30:40 +0200
committerFrederik Rietdijk <fridh@fridh.nl>2016-09-01 12:03:10 +0200
commitae2800378fe856edd5eed2a04407234779e81006 (patch)
tree525ccf260c7b81bff43c4fb8238a6ceaf15386e6 /pkgs/applications/science/biology
parente0da6b16f680e727abeab24daead1031fcb85893 (diff)
downloadnixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar.gz
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar.bz2
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar.lz
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar.xz
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.tar.zst
nixpkgs-ae2800378fe856edd5eed2a04407234779e81006.zip
neuron: fix issue #17914 -> Add python bindings to neuron derivation and minor fixes
- Add support for python bindings
- make neuron respect standard pythonpath prefix
- force exec_prefix == prefix to respect standard nix file hierarchy
- normalize indentation
- propagate dependencies necessary for nrniv_makefile usage
- Add support for darwin
Diffstat (limited to 'pkgs/applications/science/biology')
-rw-r--r--pkgs/applications/science/biology/neuron/default.nix54
-rw-r--r--pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch21
2 files changed, 64 insertions, 11 deletions
diff --git a/pkgs/applications/science/biology/neuron/default.nix b/pkgs/applications/science/biology/neuron/default.nix
index 33f6d50d8ad..71abe614a0c 100644
--- a/pkgs/applications/science/biology/neuron/default.nix
+++ b/pkgs/applications/science/biology/neuron/default.nix
@@ -1,33 +1,65 @@
 { stdenv 
 , fetchurl 
-, pkgconfig 
-, ncurses 
+, pkgconfig
+, automake
+, autoconf
+, libtool
+, ncurses
+, readline
+, which
+, python ? null 
 , mpi ? null
 }:
 
 stdenv.mkDerivation rec {
-  name = "neuron-7.4";
-  buildInputs = [ stdenv pkgconfig ncurses mpi ];
+  name = "neuron-${version}";
+  version = "7.4";
+  
+  nativeBuildInputs = [ which pkgconfig automake autoconf libtool ];
+  buildInputs = [ ncurses readline python mpi  ];
 
   src = fetchurl {
-    url = "http://www.neuron.yale.edu/ftp/neuron/versions/v7.4/nrn-7.4.tar.gz";
+    url = "http://www.neuron.yale.edu/ftp/neuron/versions/v${version}/nrn-${version}.tar.gz";
     sha256 = "1rid8cmv5mca0vqkgwahm0prkwkbdvchgw2bdwvx4adkn8bbl0ql";
   };
 
+  patches = (stdenv.lib.optional (stdenv.isDarwin) [ ./neuron-carbon-disable.patch ]);
 
   enableParallelBuilding = true;
 
-  configureFlags = [ "--without-x"
-		     "${if mpi != null then "--with-mpi" else "--without-mpi"}" ];
+  ## neuron install by default everything under prefix/${host_arch}/*
+  ## override this to support nix standard file hierarchy 
+  ## without issues: install everything under prefix/
+  preConfigure = ''
+    ./build.sh
+    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"] 
+                        else ["--without-mpi"]);
+                        
+                        
+  postInstall = stdenv.lib.optionals (python != null) [ ''
+    ## standardise python neuron install dir if any
+    if [[ -d $out/lib/python ]]; then
+        mkdir -p ''${out}/${python.sitePackages}
+        mv ''${out}/lib/python  ''${out}/${python.sitePackages}
+    fi
+  ''];
+  
+  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, 
-		involving many ion-specific channels, ion accumulation, and second messengers";
+                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;
diff --git a/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch b/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch
new file mode 100644
index 00000000000..923bffb1c33
--- /dev/null
+++ b/pkgs/applications/science/biology/neuron/neuron-carbon-disable.patch
@@ -0,0 +1,21 @@
+--- nrn-7.4/src/mac/Makefile.am	2015-11-12 21:42:45.000000000 +0100
++++ nrn-7.4.new/src/mac/Makefile.am	2016-08-24 17:43:39.000000000 +0200
+@@ -15,18 +15,8 @@
+ host_cpu = @host_cpu@
+ 
+ if MAC_DARWIN
+-carbon = @enable_carbon@
+ bin_SCRIPTS = $(launch_scripts)
+ install: install-am
+-if UniversalMacBinary
+-	$(CC) -arch ppc -o aoutppc -Dcpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-	$(CC) -arch i386 -o aouti386 -Dcpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-	lipo aouti386 aoutppc -create -output a.out
+-else
+-	gcc -g -arch i386 -Dncpu="\"$(host_cpu)\"" -I. $(srcdir)/launch.c $(srcdir)/mac2uxarg.c -framework Carbon
+-
+-endif
+-	carbon=$(carbon) sh $(srcdir)/launch_inst.sh "$(host_cpu)" "$(DESTDIR)$(prefix)" "$(srcdir)"
+ 	for i in $(S) ; do \
+ 		sed "s/^CPU.*/CPU=\"$(host_cpu)\"/" < $(DESTDIR)$(bindir)/$$i > temp; \
+ 		mv temp $(DESTDIR)$(bindir)/$$i; \