about summary refs log tree commit diff
path: root/pkgs/development/python-modules/numpy
diff options
context:
space:
mode:
authorFrederik Rietdijk <fridh@fridh.nl>2017-05-16 09:22:07 +0200
committerFrederik Rietdijk <fridh@fridh.nl>2017-05-16 13:37:01 +0200
commitc9b4a2f319914fe31eb8eee866ad47052824c697 (patch)
tree9ddd40445c6272e77983a4ab2899217bab26febc /pkgs/development/python-modules/numpy
parent9174bd253835527cf83aeb53c9bbd0aa937cc067 (diff)
downloadnixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar.gz
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar.bz2
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar.lz
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar.xz
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.tar.zst
nixlib-c9b4a2f319914fe31eb8eee866ad47052824c697.zip
python.pkgs.numpy: move and get rid of multiple versions
Diffstat (limited to 'pkgs/development/python-modules/numpy')
-rw-r--r--pkgs/development/python-modules/numpy/default.nix61
-rw-r--r--pkgs/development/python-modules/numpy/numpy-distutils-C++.patch23
2 files changed, 84 insertions, 0 deletions
diff --git a/pkgs/development/python-modules/numpy/default.nix b/pkgs/development/python-modules/numpy/default.nix
new file mode 100644
index 000000000000..d427a33f80f4
--- /dev/null
+++ b/pkgs/development/python-modules/numpy/default.nix
@@ -0,0 +1,61 @@
+{lib, fetchurl, python, buildPythonPackage, isPy27, isPyPy, gfortran, nose, blas}:
+
+buildPythonPackage rec {
+  pname = "numpy";
+  version = "1.12.1";
+  name = "${pname}-${version}";
+
+  src = fetchurl {
+    url = "mirror://pypi/n/numpy/numpy-${version}.zip";
+    sha256 = "a65266a4ad6ec8936a1bc85ce51f8600634a31a258b722c9274a80ff189d9542";
+  };
+
+  disabled = isPyPy;
+  buildInputs = [ gfortran nose blas ];
+
+  patches = lib.optionals (python.hasDistutilsCxxPatch or false) [
+    # See cpython 2.7 patches.
+    # numpy.distutils is used by cython during it's check phase
+    ./numpy-distutils-C++.patch
+  ];
+
+  preConfigure = ''
+    sed -i 's/-faltivec//' numpy/distutils/system_info.py
+  '';
+
+  preBuild = ''
+    echo "Creating site.cfg file..."
+    cat << EOF > site.cfg
+    [openblas]
+    include_dirs = ${blas}/include
+    library_dirs = ${blas}/lib
+    EOF
+  '';
+
+  checkPhase = ''
+    runHook preCheck
+    pushd dist
+    ${python.interpreter} -c 'import numpy; numpy.test("fast", verbose=10)'
+    popd
+    runHook postCheck
+  '';
+
+  postInstall = ''
+    ln -s $out/bin/f2py* $out/bin/f2py
+  '';
+
+  passthru = {
+    blas = blas;
+  };
+
+  # Disable two tests
+  # - test_f2py: f2py isn't yet on path.
+  # - test_large_file_support: takes a long time and can cause the machine to run out of disk space
+  NOSE_EXCLUDE="test_f2py,test_large_file_support";
+
+  meta = {
+    description = "Scientific tools for Python";
+    homepage = "http://numpy.scipy.org/";
+    maintainers = with lib.maintainers; [ fridh ];
+  };
+}
diff --git a/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch b/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch
new file mode 100644
index 000000000000..4b2d5c640e64
--- /dev/null
+++ b/pkgs/development/python-modules/numpy/numpy-distutils-C++.patch
@@ -0,0 +1,23 @@
+diff --git a/numpy/distutils/unixccompiler.py b/numpy/distutils/unixccompiler.py
+index a92ccd3..9630e91 100644
+--- a/numpy/distutils/unixccompiler.py
++++ b/numpy/distutils/unixccompiler.py
+@@ -43,10 +43,15 @@ def UnixCCompiler__compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts
+         if opt not in llink_s:
+             self.linker_so = llink_s.split() + opt.split()
+ 
+-    display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
+     try:
+-        self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
+-                   extra_postargs, display = display)
++        if self.detect_language(src) == 'c++':
++            display = '%s: %s' % (os.path.basename(self.compiler_so_cxx[0]), src)
++            self.spawn(self.compiler_so_cxx + cc_args + [src, '-o', obj] +
++                       extra_postargs, display = display)
++        else:
++            display = '%s: %s' % (os.path.basename(self.compiler_so[0]), src)
++            self.spawn(self.compiler_so + cc_args + [src, '-o', obj] +
++                       extra_postargs, display = display)
+     except DistutilsExecError:
+         msg = str(get_exception())
+         raise CompileError(msg)