Change:
But we cannot upgrade to openblas 0.2.15 either, due to runtime issues (segfault?). Possible fix is to package the openblas 'develop' branch. See discussions: CC
Did you try with 2.15 yourself? We could also go back to Atlast + Lapack. It would mean changing and the same line in . And of course
I just built numpy with openblas 0.2.15 and did . Nothing more. (numpy is just being pulled in as a dependency on my system, I don't really have any specific use for it at the moment.) If upstream makes a new release in a week, I can wait for that.
Good. I think we do need to have a solution for the new stable.
They put out an RC:
I'm now testing the RC. , do you know whether would hide processor information?
I'm pretty sure it doesn't.
Evaluation with openblas 0.2.15: Evaluation with openblas 0.2.16.rc1: We get a segfault with scikitlearn when using 0.2.15, but not anymore with 0.2.16.rc1. , could you try building the current PR?
That is, this one
I've evaluated numpy/scipy/scikitlearn without issues using openblas 0.2.17. See
Because we use openblas 0.2.17 now I am closing this.

Discussion:
<ins> { stdenv, fetchurl, gfortran, perl, which, config, coreutils # Most packages depending on openblas expect integer width to match pointer width, # but some expect to use 32-bit integers always (for compatibility with reference BLAS). , blas64 ? null }: with stdenv.lib; let blas64_ = blas64; in let local = config.openblas.preferLocalBuild or false; binary = { i686-linux = "32"; x86_64-linux = "64"; x86_64-darwin = "64"; }."${stdenv.system}" or (throw "unsupported system: ${stdenv.system}"); genericFlags = [ "DYNAMIC_ARCH=1" "NUM_THREADS=64" ]; localFlags = config.openblas.flags or optionals (hasAttr "target" config.openblas) [ "TARGET=${config.openblas.target}" ]; blas64 = if blas64_ != null then blas64_ else hasPrefix "x86_64" stdenv.system; version = "0.2.14"; in stdenv.mkDerivation { name = "openblas-${version}"; src = fetchurl { url = "https://github.com/xianyi/OpenBLAS/archive/v${version}.tar.gz"; sha256 = "2411c4f56f477b42dff54db2b7ffc0b7cf53bb9778d54982595c64cc69c40fc1"; name = "openblas-${version}.tar.gz"; }; inherit blas64; nativeBuildInputs = optionals stdenv.isDarwin [coreutils] ++ [gfortran perl which]; makeFlags = (if local then localFlags else genericFlags) ++ optionals stdenv.isDarwin ["MACOSX_DEPLOYMENT_TARGET=10.9"] ++ [ "FC=gfortran" # Note that clang is available through the stdenv on OSX and # thus is not an explicit dependency. "CC=${if stdenv.isDarwin then "clang" else "gcc"}" ''PREFIX="''$(out)"'' "BINARY=${binary}" "USE_OPENMP=${if stdenv.isDarwin then "0" else "1"}" "INTERFACE64=${if blas64 then "1" else "0"}" ]; doCheck = true; checkTarget = "tests"; meta = with stdenv.lib; { description = "Basic Linear Algebra Subprograms"; license = licenses.bsd3; homepage = "https://github.com/xianyi/OpenBLAS"; platforms = platforms.unix; maintainers = with maintainers; [ ttuegel ]; }; } </ins>

<del> { # Python package expression python, # Name of package (e.g. numpy or scipy) pkgName, # OpenBLAS math library openblas }: { # Re-export openblas here so that it can be sure that the same one will be used # in the propagatedBuildInputs. inherit openblas; # First "install" the package, then import what was installed, and call the # .test() function, which will run the test suite. checkPhase = '' runHook preCheck pushd dist ${python.interpreter} -c 'import ${pkgName}; ${pkgName}.test("fast", verbose=10)' popd runHook postCheck ''; # Creates a site.cfg telling the setup script where to find depended-on # math libraries. preBuild = '' echo "Creating site.cfg file..." cat << EOF > site.cfg [openblas] include_dirs = ${openblas}/include library_dirs = ${openblas}/lib EOF ''; } </del>

<ins> {lib, python, buildPythonPackage, isPyPy, gfortran, nose, blas}: args: let inherit (args) version; in buildPythonPackage (args // rec { name = "numpy-${version}"; disabled = isPyPy; buildInputs = args.buildInputs or [ gfortran nose ]; propagatedBuildInputs = args.propagatedBuildInputs or [ passthru.blas ]; preConfigure = '' sed -i 's/-faltivec//' numpy/distutils/system_info.py ''; preBuild = '' echo "Creating site.cfg file..." cat << EOF > site.cfg [openblas] include_dirs = ${passthru.blas}/include library_dirs = ${passthru.blas}/lib EOF ''; checkPhase = '' runHook preCheck pushd dist ${python.interpreter} -c 'import numpy; numpy.test("fast", verbose=10)' popd runHook postCheck ''; passthru = { blas = blas; }; # The large file support test is disabled because it takes forever # and can cause the machine to run out of disk space when run. prePatch = '' sed -i 's/test_large_file_support/donttest/' numpy/lib/tests/test_format.py ''; meta = { description = "Scientific tools for Python"; homepage = "http://numpy.scipy.org/"; maintainers = with lib.maintainers; [ fridh ]; } // (args.meta or {}); }) </ins>

<ins> {lib, python, buildPythonPackage, isPyPy, gfortran, nose}: args: let inherit (args) version; inherit (args) numpy; in buildPythonPackage (args // rec { name = "scipy-${version}"; buildInputs = (args.buildInputs or [ gfortran nose ]); propagatedBuildInputs = (args.propagatedBuildInputs or [ passthru.blas numpy]); preConfigure = '' sed -i '0,/from numpy.distutils.core/s//import setuptools;from numpy.distutils.core/' setup.py ''; preBuild = '' echo "Creating site.cfg file..." cat << EOF > site.cfg [openblas] include_dirs = ${passthru.blas}/include library_dirs = ${passthru.blas}/lib EOF ''; checkPhase = '' runHook preCheck pushd dist ${python.interpreter} -c 'import scipy; scipy.test("fast", verbose=10)' popd runHook postCheck ''; passthru = { blas = numpy.blas; }; setupPyBuildFlags = [ "--fcompiler='gnu95'" ]; meta = { description = "SciPy (pronounced 'Sigh Pie') is open-source software for mathematics, science, and engineering. "; homepage = http://www.scipy.org/; maintainers = with lib.maintainers; [ fridh ]; } // (args.meta or {}); }) </ins>

liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { }; openblas = callPackage ../development/libraries/science/math/openblas { }; <ins> openblas_2_14 = callPackage ../development/libraries/science/math/openblas/0.2.14.nix { }; </ins> # A version of OpenBLAS using 32-bit integers on all platforms for compatibility with # standard BLAS and LAPACK. openblasCompat = openblas.override { blas64 = false; }; <ins> openblasCompat_2_14 = openblas_2_14.override { blas64 = false; }; </ins> openlibm = callPackage ../development/libraries/science/math/openlibm {};

}; }; <del> numpy = let support = import ../development/python-modules/numpy-scipy-support.nix { inherit python; openblas = pkgs.openblasCompat; pkgName = "numpy"; }; in buildPythonPackage ( rec { name = "numpy-${version}"; version = "1.10.4"; </del> <ins> buildNumpyPackage = callPackage ../development/python-modules/numpy.nix { gfortran = pkgs.gfortran; blas = pkgs.openblasCompat_2_14; }; numpy = self.numpy_1_10; numpy_1_10 = self.buildNumpyPackage rec { version = "1.10.4"; </ins> src = pkgs.fetchurl { <del> url = "https://pypi.python.org/packages/source/n/numpy/${name}.tar.gz"; </del> <ins> url = "https://pypi.python.org/packages/source/n/numpy/numpy-${version}.tar.gz"; </ins> sha256 = "7356e98fbcc529e8d540666f5a919912752e569150e9a4f8d869c686f14c720b"; }; <del> disabled = isPyPy;  # WIP preConfigure = '' sed -i 's/-faltivec//' numpy/distutils/system_info.py ''; inherit (support) preBuild checkPhase; buildInputs = [ pkgs.gfortran self.nose ]; propagatedBuildInputs = [ support.openblas ]; # Disable failing test_f2py test. # f2py couldn't be found by test, # even though it was used successfully to build numpy # The large file support test is disabled because it takes forever # and can cause the machine to run out of disk space when run. prePatch = '' sed -i 's/test_f2py/donttest/' numpy/tests/test_scripts.py sed -i 's/test_large_file_support/donttest/' numpy/lib/tests/test_format.py ''; meta = { description = "Scientific tools for Python"; homepage = "http://numpy.scipy.org/"; }; }); </del> <ins> }; </ins> numpydoc = buildPythonPackage rec { name = "numpydoc-${version}";

}; }; <ins> buildScipyPackage = callPackage ../development/python-modules/scipy.nix { gfortran = pkgs.gfortran; }; </ins> <del> scipy = let support = import ../development/python-modules/numpy-scipy-support.nix { inherit python; openblas = pkgs.openblasCompat; pkgName = "scipy"; }; in buildPythonPackage rec { name = "scipy-${version}"; version = "0.16.1"; </del> <ins> scipy = self.scipy_0_17; scipy_0_16 = self.buildScipyPackage rec { version = "0.16.1"; </ins> src = pkgs.fetchurl { <del> url = "http://pypi.python.org/packages/source/s/scipy/${name}.tar.gz"; </del> <ins> url = "https://pypi.python.org/packages/source/s/scipy/scipy-${version}.tar.gz"; </ins> sha256 = "ecd1efbb1c038accb0516151d1e6679809c6010288765eb5da6051550bf52260"; }; <ins> numpy = self.numpy_1_10; }; </ins> <del> buildInputs = [ pkgs.gfortran self.nose ]; propagatedBuildInputs = [ self.numpy ]; preConfigure = '' sed -i '0,/from numpy.distutils.core/s//import setuptools;from numpy.distutils.core/' setup.py ''; # First test: RuntimeWarning: Mean of empty slice. # Second: SyntaxError: invalid syntax. Due to wrapper? # Third: test checks permissions prePatch = '' substituteInPlace scipy/stats/tests/test_stats.py --replace "test_chisquare_masked_arrays" "remove_this_one" rm scipy/linalg/tests/test_lapack.py substituteInPlace scipy/weave/tests/test_catalog.py --replace "test_user" "remove_this_one" ''; inherit (support) preBuild checkPhase; patches = [../development/python-modules/scipy-0.16.1-decorator-fix.patch]; setupPyBuildFlags = [ "--fcompiler='gnu95'" ]; meta = { description = "SciPy (pronounced 'Sigh Pie') is open-source software for mathematics, science, and engineering. "; homepage = http://www.scipy.org/; </del> <ins> scipy_0_17 = self.buildScipyPackage rec { version = "0.17.0"; src = pkgs.fetchurl { url = "https://pypi.python.org/packages/source/s/scipy/scipy-${version}.tar.gz"; sha256 = "f600b755fb69437d0f70361f9e560ab4d304b1b66987ed5a28bdd9dd7793e089"; </ins> }; <ins> numpy = self.numpy_1_10; </ins> }; scikitimage = buildPythonPackage rec {

}; buildInputs = with self; [ nose pillow pkgs.gfortran pkgs.glibcLocales ]; <del> propagatedBuildInputs = with self; [ numpy scipy pkgs.openblas ]; </del> <ins> propagatedBuildInputs = with self; [ numpy scipy numpy.blas ]; </ins> LC_ALL="en_US.UTF-8";