diff --git a/nixos/doc/manual/release-notes/rl-unstable.xml b/nixos/doc/manual/release-notes/rl-unstable.xml
index cf67014a69dd..fcbf6ed0addc 100644
--- a/nixos/doc/manual/release-notes/rl-unstable.xml
+++ b/nixos/doc/manual/release-notes/rl-unstable.xml
@@ -153,6 +153,19 @@ nix-env -f "<nixpkgs>" -iA haskellPackages.cabal-install
+
+
+ The OpenBLAS library has been updated to version
+ 0.2.14. Support for the
+ x86_64-darwin platform was added. Dynamic
+ architecture detection was enabled; OpenBLAS now selects
+ microarchitecture-optimized routines at runtime, so optimal
+ performance is achieved without the need to rebuild OpenBLAS
+ locally. OpenBLAS has replaced ATLAS in most packages which use an
+ optimized BLAS or LAPACK implementation.
+
+
+
diff --git a/pkgs/applications/science/math/R/default.nix b/pkgs/applications/science/math/R/default.nix
index d0adb3382079..72de0677e73a 100644
--- a/pkgs/applications/science/math/R/default.nix
+++ b/pkgs/applications/science/math/R/default.nix
@@ -1,7 +1,7 @@
-{ stdenv, fetchurl, blas, bzip2, gfortran, liblapack, libX11, libXmu, libXt
+{ stdenv, fetchurl, bzip2, gfortran, libX11, libXmu, libXt
, libjpeg, libpng, libtiff, ncurses, pango, pcre, perl, readline, tcl
, texLive, tk, xz, zlib, less, texinfo, graphviz, icu, pkgconfig, bison
-, imake, which, jdk, atlas
+, imake, which, jdk, openblas
, withRecommendedPackages ? true
}:
@@ -13,10 +13,10 @@ stdenv.mkDerivation rec {
sha256 = "0dagyqgvi8i3nw158qi2zpwm04s4ffzvnmk5niaksvxs30zrbbpm";
};
- buildInputs = [ blas bzip2 gfortran liblapack libX11 libXmu libXt
+ buildInputs = [ bzip2 gfortran libX11 libXmu libXt
libXt libjpeg libpng libtiff ncurses pango pcre perl readline tcl
texLive tk xz zlib less texinfo graphviz icu pkgconfig bison imake
- which jdk atlas
+ which jdk openblas
];
patches = [ ./no-usr-local-search-paths.patch ];
@@ -25,8 +25,8 @@ stdenv.mkDerivation rec {
configureFlagsArray=(
--disable-lto
--with${stdenv.lib.optionalString (!withRecommendedPackages) "out"}-recommended-packages
- --with-blas="-L${atlas}/lib -lf77blas -latlas"
- --with-lapack="-L${liblapack}/lib -llapack"
+ --with-blas="-L${openblas}/lib -lopenblas"
+ --with-lapack="-L${openblas}/lib -lopenblas"
--with-readline
--with-tcltk --with-tcl-config="${tcl}/lib/tclConfig.sh" --with-tk-config="${tk}/lib/tkConfig.sh"
--with-cairo
diff --git a/pkgs/applications/science/math/jags/default.nix b/pkgs/applications/science/math/jags/default.nix
index 785c2460bb49..9d70d2686911 100644
--- a/pkgs/applications/science/math/jags/default.nix
+++ b/pkgs/applications/science/math/jags/default.nix
@@ -1,4 +1,4 @@
-{stdenv, fetchurl, gfortran, liblapack, blas}:
+{stdenv, fetchurl, gfortran, openblas}:
stdenv.mkDerivation rec {
name = "JAGS-3.4.0";
@@ -6,7 +6,8 @@ stdenv.mkDerivation rec {
url = "mirror://sourceforge/mcmc-jags/${name}.tar.gz";
sha256 = "0ayqsz9kkmbss7mxlwr34ch2z1vsb65lryjzqpprab1ccyiaksib";
};
- buildInputs = [gfortran liblapack blas];
+ buildInputs = [gfortran openblas];
+ configureFlags = [ "--with-blas=-lopenblas" "--with-lapack=-lopenblas" ];
meta = {
description = "Just Another Gibbs Sampler";
diff --git a/pkgs/development/compilers/julia/0.2.nix b/pkgs/development/compilers/julia/0.2.nix
index cc1be3db8a5b..9d585e07fe1a 100644
--- a/pkgs/development/compilers/julia/0.2.nix
+++ b/pkgs/development/compilers/julia/0.2.nix
@@ -1,6 +1,6 @@
{ stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
, readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
- , ncurses, libunistring, lighttpd, patchelf, openblas, liblapack
+ , ncurses, libunistring, lighttpd, patchelf, openblas
, tcl, tk, xproto, libX11, git, mpfr
} :
let
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
- openblas liblapack tcl tk xproto libX11 git mpfr
+ openblas tcl tk xproto libX11 git mpfr
];
configurePhase = ''
@@ -91,14 +91,13 @@ stdenv.mkDerivation rec {
copy_kill_hash "${dsfmt_src}" deps/random
${if realGcc ==null then "" else
- ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr"''}
+ ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -lopenblas -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr"''}
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
export GLPK_PREFIX="${glpk}/include"
- mkdir -p "$out/lib"
sed -e "s@/usr/local/lib@$out/lib@g" -i deps/Makefile
sed -e "s@/usr/lib@$out/lib@g" -i deps/Makefile
@@ -111,9 +110,12 @@ stdenv.mkDerivation rec {
preBuild = ''
mkdir -p usr/lib
-
- echo "$out"
+
mkdir -p "$out/lib"
+ ln -s "${openblas}/lib/libopenblas.so" "$out/lib/libblas.so"
+ ln -s "${openblas}/lib/libopenblas.so" "$out/lib/liblapack.so"
+
+ echo "$out"
(
cd "$(mktemp -d)"
for i in "${suitesparse}"/lib/lib*.a; do
diff --git a/pkgs/development/compilers/julia/0.3.nix b/pkgs/development/compilers/julia/0.3.nix
index 9f216c7207fc..42b296c7b859 100644
--- a/pkgs/development/compilers/julia/0.3.nix
+++ b/pkgs/development/compilers/julia/0.3.nix
@@ -1,142 +1,138 @@
-{ stdenv, fetchgit, gfortran, perl, m4, llvm, gmp, pcre, zlib
- , readline, fftwSinglePrec, fftw, libunwind, suitesparse, glpk, fetchurl
- , ncurses, libunistring, patchelf, openblas, liblapack
- , tcl, tk, xproto, libX11, git, mpfr, which, wget
- } :
+{ stdenv, fetchgit, fetchurl
+# build tools
+, gfortran, git, m4, patchelf, perl, which
+# libjulia dependencies
+, libunwind, llvm, readline, utf8proc, zlib
+# standard library dependencies
+, double_conversion, fftwSinglePrec, fftw, glpk, gmp, mpfr, pcre
+, openblas, arpack, suitesparse
+}:
-assert stdenv.isLinux;
+with stdenv.lib;
-let
- realGcc = stdenv.cc.cc;
-in
stdenv.mkDerivation rec {
pname = "julia";
- version = "0.3.6";
+ version = "0.3.9";
name = "${pname}-${version}";
- dsfmt_ver = "2.2";
- grisu_ver = "1.1.1";
- openblas_ver = "v0.2.13";
- lapack_ver = "3.5.0";
- arpack_ver = "3.1.5";
- patchelf_ver = "0.8";
- pcre_ver = "8.36";
- utf8proc_ver = "1.1.6";
-
- dsfmt_src = fetchurl {
- url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
- name = "dsfmt-${dsfmt_ver}.tar.gz";
- md5 = "cb61be3be7254eae39684612c524740d";
- };
- grisu_src = fetchurl {
- url = "http://double-conversion.googlecode.com/files/double-conversion-${grisu_ver}.tar.gz";
- md5 = "29b533ed4311161267bff1a9a97e2953";
- };
- openblas_src = fetchurl {
- url = "https://github.com/xianyi/OpenBLAS/tarball/${openblas_ver}";
- name = "openblas-${openblas_ver}.tar.gz";
- md5 = "74adf4c0d0d82bff4774be5bf2134183";
- };
- arpack_src = fetchurl rec {
- url = "https://github.com/opencollab/arpack-ng/archive/${arpack_ver}.tar.gz";
- md5 = "d84e1b6108d9ee67c0d21aba7099e953";
- name = "arpack-ng-${arpack_ver}.tar.gz";
- };
- lapack_src = fetchurl {
- url = "http://www.netlib.org/lapack/lapack-${lapack_ver}.tgz";
- name = "lapack-${lapack_ver}.tgz";
- md5 = "b1d3e3e425b2e44a06760ff173104bdf";
- };
- patchelf_src = fetchurl {
- url = "http://hydra.nixos.org/build/1524660/download/2/patchelf-${patchelf_ver}.tar.bz2";
- md5 = "5087261514b4b5814a39c3d3a36eb6ef";
- };
- pcre_src = fetchurl {
- url = "ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-${pcre_ver}.tar.bz2";
- md5 = "b767bc9af0c20bc9c1fe403b0d41ad97";
- };
- utf8proc_src = fetchurl {
- url = "http://www.public-software-group.org/pub/projects/utf8proc/v${utf8proc_ver}/utf8proc-v${utf8proc_ver}.tar.gz";
- md5 = "2462346301fac2994c34f5574d6c3ca7";
- };
-
src = fetchgit {
url = "git://github.com/JuliaLang/julia.git";
rev = "refs/tags/v${version}";
- md5 = "d28e8f428485219f756d80c011d5dd32";
+ sha256 = "ad0820affefd04eb6fba7deb2603756974711846a251900a9202b8d2665a37cf";
name = "julia-git-v${version}";
};
- buildInputs = [ gfortran perl m4 gmp pcre llvm readline zlib
- fftw fftwSinglePrec libunwind suitesparse glpk ncurses libunistring patchelf
- openblas liblapack tcl tk xproto libX11 git mpfr which wget
- ];
+ patches = [ ./0001-work-around-buggy-wcwidth.patch ];
- configurePhase = ''
- for i in GMP LLVM PCRE READLINE FFTW LIBUNWIND SUITESPARSE GLPK ZLIB MPFR;
- do
- makeFlags="$makeFlags USE_SYSTEM_$i=1 "
- done
- makeFlags="$makeFlags JULIA_CPU_TARGET=core2";
+ extraSrcs =
+ let
+ dsfmt_ver = "2.2";
+ dsfmt_src = fetchurl {
+ url = "http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/dSFMT-src-${dsfmt_ver}.tar.gz";
+ name = "dsfmt-${dsfmt_ver}.tar.gz";
+ md5 = "cb61be3be7254eae39684612c524740d";
+ };
+ in [ dsfmt_src ];
+
+ prePatch = ''
copy_kill_hash(){
cp "$1" "$2/$(basename "$1" | sed -e 's/^[a-z0-9]*-//')"
}
- for i in "${grisu_src}" "${dsfmt_src}" "${arpack_src}" "${patchelf_src}" \
- "${pcre_src}" "${utf8proc_src}" "${lapack_src}" "${openblas_src}"; do
+ for i in $extraSrcs; do
copy_kill_hash "$i" deps
done
+ '';
- ${if realGcc ==null then "" else
- ''export NIX_LDFLAGS="$NIX_LDFLAGS -L${realGcc}/lib -L${realGcc}/lib64 -lpcre -llapack -lm -lfftw3f -lfftw3 -lglpk -lunistring -lz -lgmp -lmpfr -lblas -lopenblas -L$out/lib"''}
- export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -fPIC "
-
- export LDFLAGS="-L${suitesparse}/lib -L$out/lib/julia -Wl,-rpath,$out/lib/julia"
-
- export GLPK_PREFIX="${glpk}/include"
-
- mkdir -p "$out/lib"
- sed -e "s@/usr/local/lib@$out/lib@g" -i deps/Makefile
- sed -e "s@/usr/lib@$out/lib@g" -i deps/Makefile
-
- export makeFlags="$makeFlags PREFIX=$out SHELL=${stdenv.shell} prefix=$out"
-
- export dontPatchELF=1
-
- export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/usr/lib:$PWD/usr/lib/julia"
+ postPatch = ''
+ sed -i deps/Makefile \
+ -e "s@/usr/local/lib@$out/lib@g" \
+ -e "s@/usr/lib@$out/lib@g" \
+ -e "s@/usr/include/double-conversion@${double_conversion}/include/double-conversion@g"
patchShebangs . contrib
- export PATH="$PATH:${stdenv.cc.libc}/sbin"
-
# ldconfig doesn't seem to ever work on NixOS; system-wide ldconfig cache
# is probably not what we want anyway on non-NixOS
sed -e "s@/sbin/ldconfig@true@" -i src/ccall.*
-
- ln -s "${openblas}/lib/libopenblas.so" "$out/lib/libblas.so"
'';
- preBuild = ''
- mkdir -p usr/lib
-
- echo "$out"
- mkdir -p "$out/lib"
- (
- cd "$(mktemp -d)"
- for i in "${suitesparse}"/lib/lib*.a; do
- ar -x $i
- done
- gcc *.o --shared -o "$out/lib/libsuitesparse.so"
- )
- cp "$out/lib/libsuitesparse.so" usr/lib
- for i in umfpack cholmod amd camd colamd spqr; do
- ln -s libsuitesparse.so "$out"/lib/lib$i.so;
- ln -s libsuitesparse.so "usr"/lib/lib$i.so;
- done
+ buildInputs =
+ [ libunwind llvm readline utf8proc zlib
+ double_conversion fftw fftwSinglePrec glpk gmp mpfr pcre
+ openblas arpack suitesparse
+ ];
+
+ nativeBuildInputs = [ gfortran git m4 patchelf perl which ];
+
+ makeFlags =
+ let
+ arch = head (splitString "-" stdenv.system);
+ march =
+ { "x86_64-linux" = "x86-64";
+ "x86_64-darwin" = "x86-64";
+ "i686-linux" = "i686";
+ }."${stdenv.system}" or (throw "unsupported system: ${stdenv.system}");
+ in [
+ "ARCH=${arch}"
+ "MARCH=${march}"
+ "JULIA_CPU_TARGET=${march}"
+ "PREFIX=$(out)"
+ "prefix=$(out)"
+ "SHELL=${stdenv.shell}"
+
+ "USE_SYSTEM_BLAS=1"
+ "LIBBLAS=-lopenblas"
+ "LIBBLASNAME=libopenblas"
+
+ "USE_SYSTEM_LAPACK=1"
+ "LIBLAPACK=-lopenblas"
+ "LIBLAPACKNAME=libopenblas"
+
+ "USE_SYSTEM_ARPACK=1"
+ "USE_SYSTEM_FFTW=1"
+ "USE_SYSTEM_GLPK=1"
+ "USE_SYSTEM_GMP=1"
+ "USE_SYSTEM_GRISU=1"
+ "USE_SYSTEM_LIBUNWIND=1"
+ "USE_SYSTEM_LLVM=1"
+ "USE_SYSTEM_MPFR=1"
+ "USE_SYSTEM_PATCHELF=1"
+ "USE_SYSTEM_PCRE=1"
+ "USE_SYSTEM_READLINE=1"
+ "USE_SYSTEM_SUITESPARSE=1"
+ "USE_SYSTEM_UTF8PROC=1"
+ "USE_SYSTEM_ZLIB=1"
+ ];
+
+ GLPK_PREFIX = "${glpk}/include";
+
+ NIX_CFLAGS_COMPILE = [ "-fPIC" ];
+
+ # Julia tries to load these libraries dynamically at runtime, but they can't be found.
+ # Easier by far to link against them as usual.
+ # These go in LDFLAGS, where they affect only Julia itself, and not NIX_LDFLAGS,
+ # where they would also be used for all the private libraries Julia builds.
+ LDFLAGS = [
+ "-larpack"
+ "-lfftw3_threads"
+ "-lfftw3f_threads"
+ "-lglpk"
+ "-lgmp"
+ "-lmpfr"
+ "-lopenblas"
+ "-lpcre"
+ "-lsuitesparse"
+ "-lz"
+ ];
+
+ preConfigure = ''
+ export PATH="$PATH:${stdenv.cc.libc}/sbin"
'';
dontStrip = true;
+ dontPatchELF = true;
enableParallelBuilding = true;
@@ -147,8 +143,8 @@ stdenv.mkDerivation rec {
description = "High-level performance-oriented dynamical language for technical computing";
homepage = "http://julialang.org/";
license = stdenv.lib.licenses.mit;
- maintainers = [ stdenv.lib.maintainers.raskin ];
- platforms = with stdenv.lib.platforms; linux;
+ maintainers = with stdenv.lib.maintainers; [ raskin ttuegel ];
+ platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
broken = false;
};
}
diff --git a/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch b/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch
new file mode 100644
index 000000000000..7c4870fb2a89
--- /dev/null
+++ b/pkgs/development/compilers/julia/0001-work-around-buggy-wcwidth.patch
@@ -0,0 +1,24 @@
+From b9070aeab0ab672ffe321089631f9afe263b0caa Mon Sep 17 00:00:00 2001
+From: Thomas Tuegel
+Date: Thu, 4 Jun 2015 12:03:32 -0500
+Subject: [PATCH] work around buggy wcwidth
+
+---
+ test/unicode.jl | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/test/unicode.jl b/test/unicode.jl
+index 52c3e6a..f1ef698 100644
+--- a/test/unicode.jl
++++ b/test/unicode.jl
+@@ -103,5 +103,6 @@ end
+
+ # handling of embedded NUL chars (#10958)
+ @test length("\0w") == length("\0α") == 2
+-@test strwidth("\0w") == strwidth("\0α") == 1
++@test strwidth("\0w") == charwidth('\0') + charwidth('w')
++@test strwidth("\0α") == charwidth('\0') + charwidth('α')
+ @test normalize_string("\0W", casefold=true) == "\0w"
+--
+2.4.1
+
diff --git a/pkgs/development/haskell-modules/configuration-common.nix b/pkgs/development/haskell-modules/configuration-common.nix
index 55a7e330aa4f..52a0e29c7d46 100644
--- a/pkgs/development/haskell-modules/configuration-common.nix
+++ b/pkgs/development/haskell-modules/configuration-common.nix
@@ -119,6 +119,22 @@ self: super: {
# Help libconfig find it's C language counterpart.
libconfig = (dontCheck super.libconfig).override { config = pkgs.libconfig; };
+ hmatrix = overrideCabal super.hmatrix (drv: {
+ configureFlags = (drv.configureFlags or []) ++ [ "-fopenblas" ];
+ extraLibraries = [ pkgs.openblasCompat ];
+ preConfigure = ''
+ sed -i hmatrix.cabal -e 's@/usr/lib/openblas/lib@${pkgs.openblasCompat}/lib@'
+ '';
+ });
+
+ bindings-levmar = overrideCabal super.bindings-levmar (drv: {
+ preConfigure = ''
+ sed -i bindings-levmar.cabal \
+ -e 's,extra-libraries: lapack blas,extra-libraries: openblas,'
+ '';
+ extraLibraries = [ pkgs.openblas ];
+ });
+
# The Haddock phase fails for one reason or another.
attoparsec-conduit = dontHaddock super.attoparsec-conduit;
base-noprelude = dontHaddock super.base-noprelude;
diff --git a/pkgs/development/interpreters/gnu-apl/default.nix b/pkgs/development/interpreters/gnu-apl/default.nix
index 687b7319cf48..444621614071 100644
--- a/pkgs/development/interpreters/gnu-apl/default.nix
+++ b/pkgs/development/interpreters/gnu-apl/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, liblapack, readline, gettext, ncurses }:
+{ stdenv, fetchurl, readline, gettext, ncurses }:
stdenv.mkDerivation rec {
name = "gnu-apl-${version}";
@@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
sha256 = "0h4diq3wfbdwxp5nm0z4b0p1zq13lwip0y7v28r9v0mbbk8xsfh1";
};
- buildInputs = [ liblapack readline gettext ncurses ];
+ buildInputs = [ readline gettext ncurses ];
postInstall = ''
cp -r support-files/ $out/share/doc/
diff --git a/pkgs/development/interpreters/octave/default.nix b/pkgs/development/interpreters/octave/default.nix
index 9ad8c2790da6..bdf6f7752777 100644
--- a/pkgs/development/interpreters/octave/default.nix
+++ b/pkgs/development/interpreters/octave/default.nix
@@ -1,10 +1,22 @@
{ stdenv, fetchurl, gfortran, readline, ncurses, perl, flex, texinfo, qhull
-, libX11, graphicsmagick, pcre, liblapack, pkgconfig, mesa, fltk
-, fftw, fftwSinglePrec, zlib, curl, qrupdate
+, libX11, graphicsmagick, pcre, pkgconfig, mesa, fltk
+, fftw, fftwSinglePrec, zlib, curl, qrupdate, openblas
, qt ? null, qscintilla ? null, ghostscript ? null, llvm ? null, hdf5 ? null,glpk ? null
, suitesparse ? null, gnuplot ? null, jdk ? null, python ? null
}:
+let
+ suitesparseOrig = suitesparse;
+ qrupdateOrig = qrupdate;
+in
+# integer width is determined by openblas, so all dependencies must be built
+# with exactly the same openblas
+let
+ suitesparse =
+ if suitesparseOrig != null then suitesparseOrig.override { inherit openblas; } else null;
+ qrupdate = if qrupdateOrig != null then qrupdateOrig.override { inherit openblas; } else null;
+in
+
stdenv.mkDerivation rec {
version = "4.0.0";
name = "octave-${version}";
@@ -14,7 +26,7 @@ stdenv.mkDerivation rec {
};
buildInputs = [ gfortran readline ncurses perl flex texinfo qhull libX11
- graphicsmagick pcre liblapack pkgconfig mesa fltk zlib curl
+ graphicsmagick pcre pkgconfig mesa fltk zlib curl openblas
fftw fftwSinglePrec qrupdate ]
++ (stdenv.lib.optional (qt != null) qt)
++ (stdenv.lib.optional (qscintilla != null) qscintilla)
@@ -34,7 +46,13 @@ stdenv.mkDerivation rec {
# problems on Hydra
enableParallelBuilding = false;
- configureFlags = [ "--enable-readline" "--enable-dl" ];
+ configureFlags =
+ [ "--enable-readline"
+ "--enable-dl"
+ "--with-blas=openblas"
+ "--with-lapack=openblas"
+ ]
+ ++ stdenv.lib.optional openblas.blas64 "--enable-64";
# Keep a copy of the octave tests detailed results in the output
# derivation, because someone may care
diff --git a/pkgs/development/libraries/qrupdate/default.nix b/pkgs/development/libraries/qrupdate/default.nix
index 465ec7eebb2b..aaa9ab8a61ad 100644
--- a/pkgs/development/libraries/qrupdate/default.nix
+++ b/pkgs/development/libraries/qrupdate/default.nix
@@ -1,29 +1,34 @@
{ stdenv
, fetchurl
, gfortran
-, liblapack
+, openblas
}:
stdenv.mkDerivation {
name = "qrupdate-1.1.2";
src = fetchurl {
url = mirror://sourceforge/qrupdate/qrupdate-1.1.2.tar.gz ;
- sha256 = "024f601685phcm1pg8lhif3lpy5j9j0k6n0r46743g4fvh8wg8g2";
+ sha256 = "024f601685phcm1pg8lhif3lpy5j9j0k6n0r46743g4fvh8wg8g2";
};
-
- configurePhase = ''
- export PREFIX=$out
- sed -i -e 's,^BLAS=.*,BLAS=-L${liblapack}/lib -L${liblapack.blas} -lcblas -lf77blas -latlas,' \
- -e 's,^LAPACK=.*,LAPACK=-L${liblapack}/lib -llapack -lcblas -lf77blas -latlas,' \
- Makeconf
- '';
+
+ configurePhase =
+ ''
+ export PREFIX=$out
+ sed -i -e 's,^BLAS=.*,BLAS=-L${openblas}/lib -lopenblas,' \
+ -e 's,^LAPACK=.*,LAPACK=-L${openblas}/lib -lopenblas,' \
+ Makeconf
+ ''
+ + stdenv.lib.optionalString openblas.blas64
+ ''
+ sed -i Makeconf -e '/^FFLAGS=.*/ s/$/-fdefault-integer-8/'
+ '';
doCheck = true;
checkTarget = "test";
- buildTarget = "lib";
+ buildFlags = [ "lib" "solib" ];
- installTarget = "install-staticlib";
-
- buildInputs = [ gfortran liblapack ];
+ installTargets = "install";
+
+ buildInputs = [ gfortran openblas ];
}
diff --git a/pkgs/development/libraries/science/math/arpack/default.nix b/pkgs/development/libraries/science/math/arpack/default.nix
index 01bb3371f5e2..c896ecca4728 100644
--- a/pkgs/development/libraries/science/math/arpack/default.nix
+++ b/pkgs/development/libraries/science/math/arpack/default.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, gfortran, atlasWithLapack }:
+{ stdenv, fetchurl, gfortran, openblas }:
+
+with stdenv.lib;
let
version = "3.2.0";
@@ -10,10 +12,15 @@ stdenv.mkDerivation {
sha256 = "1fwch6vipms1ispzg2djvbzv5wag36f1dmmr3xs3mbp6imfyhvff";
};
- buildInputs = [ gfortran atlasWithLapack ];
+ buildInputs = [ gfortran openblas ];
# Auto-detection fails because gfortran brings in BLAS by default
- configureFlags="--with-blas=-latlas --with-lapack=-latlas";
+ configureFlags = [
+ "--with-blas=-lopenblas"
+ "--with-lapack=-lopenblas"
+ ];
+
+ FFLAGS = optional openblas.blas64 "-fdefault-integer-8";
meta = {
homepage = "http://forge.scilab.org/index.php/p/arpack-ng/";
diff --git a/pkgs/development/libraries/science/math/ipopt/default.nix b/pkgs/development/libraries/science/math/ipopt/default.nix
index 4dd1ca46e956..89d2a242f963 100644
--- a/pkgs/development/libraries/science/math/ipopt/default.nix
+++ b/pkgs/development/libraries/science/math/ipopt/default.nix
@@ -1,4 +1,4 @@
-{ stdenv, fetchurl, unzip, blas, liblapack, gfortran }:
+{ stdenv, fetchurl, unzip, openblas, gfortran }:
stdenv.mkDerivation rec {
version = "3.12.3";
@@ -13,9 +13,14 @@ stdenv.mkDerivation rec {
export CXXDEFS="-DHAVE_RAND -DHAVE_CSTRING -DHAVE_CSTDIO"
'';
+ configureFlags = [
+ "--with-blas-lib=-lopenblas"
+ "--with-lapack-lib=-lopenblas"
+ ];
+
nativeBuildInputs = [ unzip ];
- buildInputs = [ gfortran blas liblapack ];
+ buildInputs = [ gfortran openblas ];
enableParallelBuilding = true;
diff --git a/pkgs/development/libraries/science/math/openblas/0.2.10.nix b/pkgs/development/libraries/science/math/openblas/0.2.10.nix
deleted file mode 100644
index ec4422ce8951..000000000000
--- a/pkgs/development/libraries/science/math/openblas/0.2.10.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv, fetchurl, gfortran, perl, liblapack, config }:
-
-let local = config.openblas.preferLocalBuild or false;
- localTarget = config.openblas.target or "";
-in
-stdenv.mkDerivation rec {
- version = "0.2.10";
-
- name = "openblas-${version}";
- src = fetchurl {
- url = "https://github.com/xianyi/OpenBLAS/tarball/v${version}";
- sha256 = "06i0q4qnd5q5xljzrgvda0gjsczc6l2pl9hw6dn2qjpw38al73za";
- name = "openblas-${version}.tar.gz";
- };
-
- preBuild = "cp ${liblapack.src} lapack-${liblapack.meta.version}.tgz";
-
- buildInputs = [gfortran perl];
-
- cpu = builtins.head (stdenv.lib.splitString "-" stdenv.system);
-
- target = if local then localTarget else
- if cpu == "i686" then "P2" else
- if cpu == "x86_64" then "CORE2" else
- # allow autodetect
- "";
-
- makeFlags = "${if target != "" then "TARGET=" else ""}${target} FC=gfortran CC=cc PREFIX=\"\$(out)\" INTERFACE64=1";
-
- meta = with stdenv.lib; {
- description = "Basic Linear Algebra Subprograms";
- license = licenses.bsd3;
- homepage = "https://github.com/xianyi/OpenBLAS";
- platforms = [ "x86_64-linux" ];
- maintainers = with maintainers; [ ttuegel ];
- };
-}
diff --git a/pkgs/development/libraries/science/math/openblas/0.2.2.nix b/pkgs/development/libraries/science/math/openblas/0.2.2.nix
deleted file mode 100644
index c476dac955ad..000000000000
--- a/pkgs/development/libraries/science/math/openblas/0.2.2.nix
+++ /dev/null
@@ -1,37 +0,0 @@
-{ stdenv, fetchurl, gfortran, perl, liblapack, config }:
-
-let local = config.openblas.preferLocalBuild or false;
- localTarget = config.openblas.target or "";
-in
-stdenv.mkDerivation rec {
- version = "0.2.2";
-
- name = "openblas-${version}";
- src = fetchurl {
- url = "https://github.com/xianyi/OpenBLAS/tarball/v${version}";
- sha256 = "13kdx3knff5ajnmgn419g0dnh83plin07p7akwamr3v7z5qfrzqr";
- name = "openblas-${version}.tar.gz";
- };
-
- preBuild = "cp ${liblapack.src} lapack-${liblapack.meta.version}.tgz";
-
- buildInputs = [gfortran perl];
-
- cpu = builtins.head (stdenv.lib.splitString "-" stdenv.system);
-
- target = if local then localTarget else
- if cpu == "i686" then "P2" else
- if cpu == "x86_64" then "CORE2" else
- # allow autodetect
- "";
-
- makeFlags = "${if target != "" then "TARGET=" else ""}${target} FC=gfortran CC=cc PREFIX=\"\$(out)\"";
-
- meta = with stdenv.lib; {
- description = "Basic Linear Algebra Subprograms";
- license = licenses.bsd3;
- homepage = "https://github.com/xianyi/OpenBLAS";
- platforms = [ "x86_64-linux" ];
- maintainers = with maintainers; [ ttuegel ];
- };
-}
diff --git a/pkgs/development/libraries/science/math/openblas/default.nix b/pkgs/development/libraries/science/math/openblas/default.nix
index 67d95f97e074..a4bf1efbb731 100644
--- a/pkgs/development/libraries/science/math/openblas/default.nix
+++ b/pkgs/development/libraries/science/math/openblas/default.nix
@@ -1,22 +1,24 @@
-{ stdenv, fetchurl, gfortran, perl, liblapack, config, coreutils }:
+{ stdenv, fetchurl, gfortran, perl, liblapack, 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 local = config.openblas.preferLocalBuild or false;
binary =
- {
- i686-linux = "32";
+ { i686-linux = "32";
x86_64-linux = "64";
x86_64-darwin = "64";
}."${stdenv.system}" or (throw "unsupported system: ${stdenv.system}");
genericFlags =
- [
- "DYNAMIC_ARCH=1"
+ [ "DYNAMIC_ARCH=1"
"NUM_THREADS=64"
- "BINARY=${binary}"
];
localFlags = config.openblas.flags or
optionals (hasAttr "target" config.openblas) [ "TARGET=${config.openblas.target}" ];
+ blas64Orig = blas64;
in
stdenv.mkDerivation rec {
version = "0.2.14";
@@ -43,9 +45,13 @@ stdenv.mkDerivation rec {
# thus is not an explicit dependency.
"CC=${if stdenv.isDarwin then "clang" else "gcc"}"
''PREFIX="''$(out)"''
- "INTERFACE64=1"
+ "BINARY=${binary}"
+ "USE_OPENMP=${if stdenv.isDarwin then "0" else "1"}"
+ "INTERFACE64=${if blas64 then "1" else "0"}"
];
+ blas64 = if blas64Orig != null then blas64Orig else hasPrefix "x86_64" stdenv.system;
+
meta = with stdenv.lib; {
description = "Basic Linear Algebra Subprograms";
license = licenses.bsd3;
diff --git a/pkgs/development/libraries/science/math/suitesparse/0001-disable-metis.patch b/pkgs/development/libraries/science/math/suitesparse/0001-disable-metis.patch
deleted file mode 100644
index b0f7715f755d..000000000000
--- a/pkgs/development/libraries/science/math/suitesparse/0001-disable-metis.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 456b26d0c9101adaa5876954baac0ca0e872dab6 Mon Sep 17 00:00:00 2001
-From: Thomas Tuegel
-Date: Mon, 15 Dec 2014 10:18:01 -0600
-Subject: [PATCH 1/3] disable metis
-
----
- SuiteSparse_config/SuiteSparse_config.mk | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk
-index ba2da23..e1514bf 100644
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -212,8 +212,8 @@ XERBLA =
- # The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc.
- # You may wish to use an absolute path. METIS is optional. Compile
- # CHOLMOD with -DNPARTITION if you do not wish to use METIS.
--METIS_PATH = ../../metis-4.0
--METIS = ../../metis-4.0/libmetis.a
-+# METIS_PATH = ../../metis-4.0
-+# METIS = ../../metis-4.0/libmetis.a
-
- #------------------------------------------------------------------------------
- # UMFPACK configuration:
-@@ -273,7 +273,7 @@ UMFPACK_CONFIG =
- # -DNSUNPERF for Solaris only. If defined, do not use the Sun
- # Performance Library
-
--CHOLMOD_CONFIG = $(GPU_CONFIG)
-+CHOLMOD_CONFIG = $(GPU_CONFIG) -DNPARTITION
-
- # uncomment this line to compile CHOLMOD without METIS:
- # CHOLMOD_CONFIG = -DNPARTITION
---
-2.1.3
-
diff --git a/pkgs/development/libraries/science/math/suitesparse/0002-set-install-dir.patch b/pkgs/development/libraries/science/math/suitesparse/0002-set-install-dir.patch
deleted file mode 100644
index ef861f68091a..000000000000
--- a/pkgs/development/libraries/science/math/suitesparse/0002-set-install-dir.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From e0fee492a315ce1ef8697b056af210beb1465334 Mon Sep 17 00:00:00 2001
-From: Thomas Tuegel
-Date: Mon, 15 Dec 2014 10:18:12 -0600
-Subject: [PATCH 2/3] set install dir
-
----
- SuiteSparse_config/SuiteSparse_config.mk | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk
-index e1514bf..f1046a6 100644
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -95,8 +95,8 @@ F77LIB =
- # LIB = -lm
-
- # For "make install"
--INSTALL_LIB = /usr/local/lib
--INSTALL_INCLUDE = /usr/local/include
-+INSTALL_LIB = @out@/lib
-+INSTALL_INCLUDE = @out@/include
-
- # Which version of MAKE you are using (default is "make")
- # MAKE = make
---
-2.1.3
-
diff --git a/pkgs/development/libraries/science/math/suitesparse/0003-blas-lapack-flags.patch b/pkgs/development/libraries/science/math/suitesparse/0003-blas-lapack-flags.patch
deleted file mode 100644
index db0b1c456558..000000000000
--- a/pkgs/development/libraries/science/math/suitesparse/0003-blas-lapack-flags.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From a99cca30cfd965683564ae024e8ecc615c61697a Mon Sep 17 00:00:00 2001
-From: Thomas Tuegel
-Date: Mon, 15 Dec 2014 10:24:08 -0600
-Subject: [PATCH 3/3] blas lapack flags
-
----
- SuiteSparse_config/SuiteSparse_config.mk | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/SuiteSparse_config/SuiteSparse_config.mk b/SuiteSparse_config/SuiteSparse_config.mk
-index f1046a6..1710162 100644
---- a/SuiteSparse_config/SuiteSparse_config.mk
-+++ b/SuiteSparse_config/SuiteSparse_config.mk
-@@ -119,8 +119,8 @@ INSTALL_INCLUDE = @out@/include
- # naming the BLAS and LAPACK library (*.a or *.so) files.
-
- # This is probably slow ... it might connect to the Standard Reference BLAS:
-- BLAS = -lblas -lgfortran
-- LAPACK = -llapack
-+ BLAS = @blasFlags@
-+ LAPACK = @lapackFlags@
-
- # MKL
- # BLAS = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread -lm
---
-2.1.3
-
diff --git a/pkgs/development/libraries/science/math/suitesparse/4.2.nix b/pkgs/development/libraries/science/math/suitesparse/4.2.nix
index 4d27701b135a..16174a80212f 100644
--- a/pkgs/development/libraries/science/math/suitesparse/4.2.nix
+++ b/pkgs/development/libraries/science/math/suitesparse/4.2.nix
@@ -1,22 +1,44 @@
-{ stdenv, fetchurl, blas, liblapack, gfortran } :
+{ stdenv, fetchurl, gfortran, openblas }:
+
+let
+ int_t = if openblas.blas64 then "int64_t" else "int32_t";
+in
stdenv.mkDerivation rec {
version = "4.2.1";
name = "suitesparse-${version}";
src = fetchurl {
url = "http://www.cise.ufl.edu/research/sparse/SuiteSparse/SuiteSparse-${version}.tar.gz" ;
- sha256 = "1ga69637x7kdkiy3w3lq9dvva7220bdangv2lch2wx1hpi83h0p8";
+ sha256 = "1ga69637x7kdkiy3w3lq9dvva7220bdangv2lch2wx1hpi83h0p8";
};
- buildInputs = [blas liblapack gfortran] ;
- patches = [./disable-metis.patch];
+
+ nativeBuildInputs = [ gfortran ];
+ buildInputs = [ openblas ];
preConfigure = ''
- export PREFIX=$out
mkdir -p $out/lib
mkdir -p $out/include
+
+ sed -i "SuiteSparse_config/SuiteSparse_config.mk" \
+ -e 's/METIS .*$/METIS =/' \
+ -e 's/METIS_PATH .*$/METIS_PATH =/' \
+ -e '/CHOLMOD_CONFIG/ s/$/-DNPARTITION -DLONGBLAS=${int_t}/' \
+ -e '/UMFPACK_CONFIG/ s/$/-DLONGBLAS=${int_t}/'
'';
- makeFlags = ''PREFIX=\"$(out)\" INSTALL_LIB=$(out)/lib INSTALL_INCLUDE=$(out)/include'';
+ makeFlags = [
+ "PREFIX=\"$(out)\""
+ "INSTALL_LIB=$(out)/lib"
+ "INSTALL_INCLUDE=$(out)/include"
+ "BLAS=-lopenblas"
+ "LAPACK="
+ ];
NIX_CFLAGS = "-fPIC";
+ meta = with stdenv.lib; {
+ homepage = http://faculty.cse.tamu.edu/davis/suitesparse.html;
+ description = "A suite of sparse matrix algorithms";
+ license = with licenses; [ bsd2 gpl2Plus lgpl21Plus ];
+ maintainers = with maintainers; [ ttuegel ];
+ };
}
diff --git a/pkgs/development/libraries/science/math/suitesparse/SuiteSparse_config.mk b/pkgs/development/libraries/science/math/suitesparse/SuiteSparse_config.mk
deleted file mode 100644
index 157a20d7b5aa..000000000000
--- a/pkgs/development/libraries/science/math/suitesparse/SuiteSparse_config.mk
+++ /dev/null
@@ -1,452 +0,0 @@
-#===============================================================================
-# SuiteSparse_config.mk: common configuration file for the SuiteSparse
-#===============================================================================
-
-# This file contains all configuration settings for all packages authored or
-# co-authored by Tim Davis:
-#
-# Package Version Description
-# ------- ------- -----------
-# AMD 1.2 or later approximate minimum degree ordering
-# COLAMD 2.4 or later column approximate minimum degree ordering
-# CCOLAMD 1.0 or later constrained column approximate minimum degree ordering
-# CAMD any constrained approximate minimum degree ordering
-# UMFPACK 4.5 or later sparse LU factorization, with the BLAS
-# CHOLMOD any sparse Cholesky factorization, update/downdate
-# KLU 0.8 or later sparse LU factorization, BLAS-free
-# BTF 0.8 or later permutation to block triangular form
-# LDL 1.2 or later concise sparse LDL'
-# CXSparse any extended version of CSparse (int/long, real/complex)
-# SuiteSparseQR any sparse QR factorization
-# RBio 2.0 or later read/write sparse matrices in Rutherford-Boeing format
-#
-# By design, this file is NOT included in the CSparse makefile.
-# That package is fully stand-alone. CSparse is primarily for teaching;
-# production code should use CXSparse.
-#
-# The SuiteSparse_config directory and the above packages should all appear in
-# a single directory, in order for the Makefile's within each package to find
-# this file.
-#
-# To enable an option of the form "# OPTION = ...", edit this file and
-# delete the "#" in the first column of the option you wish to use.
-#
-# The use of METIS 4.0.1 is optional. To exclude METIS, you must compile with
-# CHOLMOD_CONFIG set to -DNPARTITION. See below for details. However, if you
-# do not have a metis-4.0 directory inside the SuiteSparse directory, the
-# */Makefile's that optionally rely on METIS will automatically detect this
-# and compile without METIS.
-
-#------------------------------------------------------------------------------
-# Generic configuration
-#------------------------------------------------------------------------------
-
-# Using standard definitions from the make environment, typically:
-#
-# CC cc C compiler
-# CXX g++ C++ compiler
-# CFLAGS [ ] flags for C and C++ compiler
-# CPPFLAGS [ ] flags for C and C++ compiler
-# TARGET_ARCH [ ] target architecture
-# FFLAGS [ ] flags for Fortran compiler
-# RM rm -f delete a file
-# AR ar create a static *.a library archive
-# ARFLAGS rv flags for ar
-# MAKE make make itself (sometimes called gmake)
-#
-# You can redefine them here, but by default they are used from the
-# default make environment.
-
-# To use OpenMP add -openmp to the CFLAGS
-# If OpenMP is used, it is recommended to define CHOLMOD_OMP_NUM_THREADS
-# as the number of cores per socket on the machine being used to maximize
-# memory performance
- CFLAGS =
-# CFLAGS = -g
-# for the icc compiler and OpenMP:
-# CFLAGS = -openmp
-
-# C and C++ compiler flags. The first three are standard for *.c and *.cpp
-# Add -DNTIMER if you do use any timing routines (otherwise -lrt is required).
-# CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -DNTIMER
- CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC
-# for the MKL BLAS:
-# CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -O3 -fexceptions -fPIC -I$(MKLROOT)/include -D_GNU_SOURCE
-# with no optimization:
-# CF = $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -fexceptions -fPIC
-
-# ranlib, and ar, for generating libraries. If you don't need ranlib,
-# just change it to RANLAB = echo
-RANLIB = ranlib
-ARCHIVE = $(AR) $(ARFLAGS)
-
-# copy and delete a file
-CP = cp -f
-MV = mv -f
-
-# Fortran compiler (not required for 'make' or 'make library')
-F77 = gfortran
-F77FLAGS = $(FFLAGS) -O
-F77LIB =
-
-# C and Fortran libraries. Remove -lrt if you don't have it.
- LIB = -lm -lrt
-# Using the following requires CF = ... -DNTIMER on POSIX C systems.
-# LIB = -lm
-
-# For "make install"
-INSTALL_LIB = @out@/lib
-INSTALL_INCLUDE = @out@/include
-
-# Which version of MAKE you are using (default is "make")
-# MAKE = make
-# MAKE = gmake
-
-#------------------------------------------------------------------------------
-# BLAS and LAPACK configuration:
-#------------------------------------------------------------------------------
-
-# UMFPACK and CHOLMOD both require the BLAS. CHOLMOD also requires LAPACK.
-# See Kazushige Goto's BLAS at http://www.cs.utexas.edu/users/flame/goto/ or
-# http://www.tacc.utexas.edu/~kgoto/ for the best BLAS to use with CHOLMOD.
-# LAPACK is at http://www.netlib.org/lapack/ . You can use the standard
-# Fortran LAPACK along with Goto's BLAS to obtain very good performance.
-# CHOLMOD gets a peak numeric factorization rate of 3.6 Gflops on a 3.2 GHz
-# Pentium 4 (512K cache, 4GB main memory) with the Goto BLAS, and 6 Gflops
-# on a 2.5Ghz dual-core AMD Opteron.
-
-# These settings will probably not work, since there is no fixed convention for
-# naming the BLAS and LAPACK library (*.a or *.so) files.
-
-# This is probably slow ... it might connect to the Standard Reference BLAS:
- BLAS = -lf77blas -latlas -lcblas -lgfortran
- LAPACK = -llapack -latlas -lcblas
-
-# MKL
-# BLAS = -Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_core.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a -Wl,--end-group -lpthread -lm
-# LAPACK =
-
-# ACML
-# BLAS = -lacml -lgfortran
-# LAPACK =
-
-# OpenBLAS
-# BLAS = -lopenblas
-# LAPACK =
-
-# NOTE: this next option for the "Goto BLAS" has nothing to do with a "goto"
-# statement. Rather, the Goto BLAS is written by Dr. Kazushige Goto.
-# Using the Goto BLAS:
-# BLAS = -lgoto -lgfortran -lgfortranbegin
-# BLAS = -lgoto2 -lgfortran -lgfortranbegin -lpthread
-
-# Using non-optimized versions:
-# BLAS = -lblas_plain -lgfortran -lgfortranbegin
-# LAPACK = -llapack_plain
-
-# BLAS = -lblas_plain -lgfortran -lgfortranbegin
-# LAPACK = -llapack
-
-# The BLAS might not contain xerbla, an error-handling routine for LAPACK and
-# the BLAS. Also, the standard xerbla requires the Fortran I/O library, and
-# stops the application program if an error occurs. A C version of xerbla
-# distributed with this software (SuiteSparse_config/xerbla/libcerbla.a)
-# includes a Fortran-callable xerbla routine that prints nothing and does not
-# stop the application program. This is optional.
-
-# XERBLA = ../../SuiteSparse_config/xerbla/libcerbla.a
-
-# If you wish to use the XERBLA in LAPACK and/or the BLAS instead,
-# use this option:
-XERBLA =
-
-# If you wish to use the Fortran SuiteSparse_config/xerbla/xerbla.f instead,
-# use this:
-
-# XERBLA = ../../SuiteSparse_config/xerbla/libxerbla.a
-
-#------------------------------------------------------------------------------
-# GPU configuration for CHOLMOD and SPQR
-#------------------------------------------------------------------------------
-
-# no cuda
- CUDA_ROOT =
- GPU_BLAS_PATH =
- GPU_CONFIG =
- CUDA_PATH =
- CUDART_LIB =
- CUBLAS_LIB =
- CUDA_INC_PATH =
- NV20 =
- NV30 =
- NV35 =
- NVCC = echo
- NVCCFLAGS =
-
-# with cuda for CHOLMOD
-# CUDA_ROOT = /usr/local/cuda
-# GPU_BLAS_PATH = $(CUDA_ROOT)
-# with 4 cores (default):
-# GPU_CONFIG = -I$(CUDA_ROOT)/include -DGPU_BLAS
-# with 10 cores:
-# GPU_CONFIG = -I$(CUDA_ROOT)/include -DGPU_BLAS -DCHOLMOD_OMP_NUM_THREADS=10
-# CUDA_PATH = $(CUDA_ROOT)
-# CUDART_LIB = $(CUDA_ROOT)/lib64/libcudart.so
-# CUBLAS_LIB = $(CUDA_ROOT)/lib64/libcublas.so
-# CUDA_INC_PATH = $(CUDA_ROOT)/include/
-# NV20 = -arch=sm_20 -Xcompiler -fPIC
-# NV30 = -arch=sm_30 -Xcompiler -fPIC
-# NV35 = -arch=sm_35 -Xcompiler -fPIC
-# NVCC = $(CUDA_ROOT)/bin/nvcc
-# NVCCFLAGS = $(NV20) -O3 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_30,code=sm_30 -gencode=arch=compute_35,code=sm_35
-
-# was NVCC = $(CUDA_ROOT)/bin/nvcc $(NV35) $(NV30) $(NV20)
-
-#------------------------------------------------------------------------------
-# METIS, optionally used by CHOLMOD
-#------------------------------------------------------------------------------
-
-# If you do not have METIS, or do not wish to use it in CHOLMOD, you must
-# compile CHOLMOD with the -DNPARTITION flag.
-
-# The path is relative to where it is used, in CHOLMOD/Lib, CHOLMOD/MATLAB, etc.
-# You may wish to use an absolute path. METIS is optional. Compile
-# CHOLMOD with -DNPARTITION if you do not wish to use METIS.
-# METIS_PATH = ../../metis-4.0
-# METIS = ../../metis-4.0/libmetis.a
-
-#------------------------------------------------------------------------------
-# UMFPACK configuration:
-#------------------------------------------------------------------------------
-
-# Configuration flags for UMFPACK. See UMFPACK/Source/umf_config.h for details.
-#
-# -DNBLAS do not use the BLAS. UMFPACK will be very slow.
-# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
-# LAPACK and the BLAS (defaults to 'int')
-# -DNSUNPERF do not use the Sun Perf. Library (default is use it on Solaris)
-# -DNRECIPROCAL do not multiply by the reciprocal
-# -DNO_DIVIDE_BY_ZERO do not divide by zero
-# -DNCHOLMOD do not use CHOLMOD as a ordering method. If -DNCHOLMOD is
-# included in UMFPACK_CONFIG, then UMFPACK does not rely on
-# CHOLMOD, CAMD, CCOLAMD, COLAMD, and METIS.
-
-UMFPACK_CONFIG =
-
-# uncomment this line to compile UMFPACK without CHOLMOD:
-# UMFPACK_CONFIG = -DNCHOLMOD
-
-#------------------------------------------------------------------------------
-# CHOLMOD configuration
-#------------------------------------------------------------------------------
-
-# CHOLMOD Library Modules, which appear in libcholmod.a:
-# Core requires: none
-# Check requires: Core
-# Cholesky requires: Core, AMD, COLAMD. optional: Partition, Supernodal
-# MatrixOps requires: Core
-# Modify requires: Core
-# Partition requires: Core, CCOLAMD, METIS. optional: Cholesky
-# Supernodal requires: Core, BLAS, LAPACK
-#
-# CHOLMOD test/demo Modules (all are GNU GPL, do not appear in libcholmod.a):
-# Tcov requires: Core, Check, Cholesky, MatrixOps, Modify, Supernodal
-# optional: Partition
-# Valgrind same as Tcov
-# Demo requires: Core, Check, Cholesky, MatrixOps, Supernodal
-# optional: Partition
-#
-# Configuration flags:
-# -DNCHECK do not include the Check module. License GNU LGPL
-# -DNCHOLESKY do not include the Cholesky module. License GNU LGPL
-# -DNPARTITION do not include the Partition module. License GNU LGPL
-# also do not include METIS.
-# -DNCAMD do not use CAMD, etc from Partition module. GNU LGPL
-# -DNGPL do not include any GNU GPL Modules in the CHOLMOD library:
-# -DNMATRIXOPS do not include the MatrixOps module. License GNU GPL
-# -DNMODIFY do not include the Modify module. License GNU GPL
-# -DNSUPERNODAL do not include the Supernodal module. License GNU GPL
-#
-# -DNPRINT do not print anything.
-# -D'LONGBLAS=long' or -DLONGBLAS='long long' defines the integers used by
-# LAPACK and the BLAS (defaults to 'int')
-# -DNSUNPERF for Solaris only. If defined, do not use the Sun
-# Performance Library
-
-CHOLMOD_CONFIG = $(GPU_CONFIG) -DNPARTITION
-
-# uncomment this line to compile CHOLMOD without METIS:
-# CHOLMOD_CONFIG = -DNPARTITION
-
-#------------------------------------------------------------------------------
-# SuiteSparseQR configuration:
-#------------------------------------------------------------------------------
-
-# The SuiteSparseQR library can be compiled with the following options:
-#
-# -DNPARTITION do not include the CHOLMOD partition module
-# -DNEXPERT do not include the functions in SuiteSparseQR_expert.cpp
-# -DHAVE_TBB enable the use of Intel's Threading Building Blocks (TBB)
-
-# default, without timing, without TBB:
-SPQR_CONFIG = $(GPU_CONFIG)
-# with TBB:
-# SPQR_CONFIG = -DHAVE_TBB
-
-# This is needed for IBM AIX: (but not for and C codes, just C++)
-# SPQR_CONFIG = -DBLAS_NO_UNDERSCORE
-
-# with TBB, you must select this:
-# TBB = -ltbb
-# without TBB:
-TBB =
-
-#------------------------------------------------------------------------------
-# code formatting
-#------------------------------------------------------------------------------
-
-# Use "grep" only, if you do not have "indent"
-# PRETTY = grep -v "^\#"
-# PRETTY = grep -v "^\#" | indent -bl -nce -ss -bli0 -i4 -sob -l120
- PRETTY = grep -v "^\#" | indent -bl -nce -bli0 -i4 -sob -l120
-
-#------------------------------------------------------------------------------
-# Linux
-#------------------------------------------------------------------------------
-
-# Using default compilers:
-# CC = gcc
-# CF = $(CFLAGS) -O3 -fexceptions
-
-# alternatives:
-# CF = $(CFLAGS) -g -fexceptions \
-# -Wall -W -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
-# -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi \
-# -funit-at-a-time
-# CF = $(CFLAGS) -O3 -fexceptions \
-# -Wall -W -Werror -Wshadow -Wmissing-prototypes -Wstrict-prototypes \
-# -Wredundant-decls -Wnested-externs -Wdisabled-optimization -ansi
-# CF = $(CFLAGS) -O3 -fexceptions -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
-# CF = $(CFLAGS) -O3
-# CF = $(CFLAGS) -O3 -g -fexceptions
-# CF = $(CFLAGS) -g -fexceptions \
-# -Wall -W -Wshadow \
-# -Wredundant-decls -Wdisabled-optimization -ansi
-
-# consider:
-# -fforce-addr -fmove-all-movables -freduce-all-givs -ftsp-ordering
-# -frename-registers -ffast-math -funroll-loops
-
-# Using the Goto BLAS:
-# BLAS = -lgoto -lfrtbegin -lg2c $(XERBLA) -lpthread
-
-# Using Intel's icc and ifort compilers:
-# (does not work for mexFunctions unless you add a mexopts.sh file)
-# F77 = ifort
-# CC = icc
-# CF = $(CFLAGS) -O3 -xN -vec_report=0
-# CF = $(CFLAGS) -g
-
-# 64bit:
-# F77FLAGS = -O -m64
-# CF = $(CFLAGS) -O3 -fexceptions -m64
-# BLAS = -lgoto64 -lfrtbegin -lg2c -lpthread $(XERBLA)
-# LAPACK = -llapack64
-
-# SUSE Linux 10.1, AMD Opteron, with GOTO Blas
-# F77 = gfortran
-# BLAS = -lgoto_opteron64 -lgfortran
-
-# SUSE Linux 10.1, Intel Pentium, with GOTO Blas
-# F77 = gfortran
-# BLAS = -lgoto -lgfortran
-
-#------------------------------------------------------------------------------
-# Mac
-#------------------------------------------------------------------------------
-
-# As recommended by macports, http://suitesparse.darwinports.com/
-# I've tested them myself on Mac OSX 10.6.1 and 10.6.8 (Snow Leopard),
-# on my MacBook Air, and they work fine.
-
-# F77 = gfortran
-# CF = $(CFLAGS) -O3 -fno-common -fexceptions -DNTIMER
-# BLAS = -framework Accelerate
-# LAPACK = -framework Accelerate
-# LIB = -lm
-
-#------------------------------------------------------------------------------
-# Solaris
-#------------------------------------------------------------------------------
-
-# 32-bit
-# CF = $(CFLAGS) -KPIC -dalign -xc99=%none -Xc -xlibmieee -xO5 -xlibmil -m32
-
-# 64-bit
-# CF = $(CFLAGS) -fast -KPIC -xc99=%none -xlibmieee -xlibmil -m64 -Xc
-
-# FFLAGS = -fast -KPIC -dalign -xlibmil -m64
-
-# The Sun Performance Library includes both LAPACK and the BLAS:
-# BLAS = -xlic_lib=sunperf
-# LAPACK =
-
-
-#------------------------------------------------------------------------------
-# Compaq Alpha
-#------------------------------------------------------------------------------
-
-# 64-bit mode only
-# CF = $(CFLAGS) -O2 -std1
-# BLAS = -ldxml
-# LAPACK =
-
-#------------------------------------------------------------------------------
-# IBM RS 6000
-#------------------------------------------------------------------------------
-
-# BLAS = -lessl
-# LAPACK =
-
-# 32-bit mode:
-# CF = $(CFLAGS) -O4 -qipa -qmaxmem=16384 -qproto
-# F77FLAGS = -O4 -qipa -qmaxmem=16384
-
-# 64-bit mode:
-# CF = $(CFLAGS) -O4 -qipa -qmaxmem=16384 -q64 -qproto
-# F77FLAGS = -O4 -qipa -qmaxmem=16384 -q64
-
-#------------------------------------------------------------------------------
-# SGI IRIX
-#------------------------------------------------------------------------------
-
-# BLAS = -lscsl
-# LAPACK =
-
-# 32-bit mode
-# CF = $(CFLAGS) -O
-
-# 64-bit mode (32 bit int's and 64-bit long's):
-# CF = $(CFLAGS) -64
-# F77FLAGS = -64
-
-# SGI doesn't have ranlib
-# RANLIB = echo
-
-#------------------------------------------------------------------------------
-# AMD Opteron (64 bit)
-#------------------------------------------------------------------------------
-
-# BLAS = -lgoto_opteron64 -lg2c
-# LAPACK = -llapack_opteron64
-
-# SUSE Linux 10.1, AMD Opteron
-# F77 = gfortran
-# BLAS = -lgoto_opteron64 -lgfortran
-# LAPACK = -llapack_opteron64
-
-#------------------------------------------------------------------------------
-# remove object files and profile output
-#------------------------------------------------------------------------------
-
-CLEAN = *.o *.obj *.ln *.bb *.bbg *.da *.tcov *.gcov gmon.out *.bak *.d *.gcda *.gcno
diff --git a/pkgs/development/libraries/science/math/suitesparse/default.nix b/pkgs/development/libraries/science/math/suitesparse/default.nix
index add4ca9a08f4..f30db472b0de 100644
--- a/pkgs/development/libraries/science/math/suitesparse/default.nix
+++ b/pkgs/development/libraries/science/math/suitesparse/default.nix
@@ -1,34 +1,53 @@
-{ stdenv, fetchurl, substituteAll
-, atlasWithLapack, gfortran }:
+{ stdenv, fetchurl, gfortran, openblas }:
let
- name = "suitesparse-4.4.1";
+ version = "4.4.4";
+ name = "suitesparse-${version}";
+
+ int_t = if openblas.blas64 then "int64_t" else "int32_t";
in
stdenv.mkDerivation {
inherit name;
src = fetchurl {
- url = "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.4.1.tar.gz";
- sha256 = "0y8i6dizrr556xggpjyc7wijjv4jbizhssmjj4jv8n1s7zxy2z0n";
+ url = "http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-${version}.tar.gz";
+ sha256 = "1zdn1y0ij6amj7smmcslkqgbqv9yy5cwmbyzqc9v6drzdzllgbpj";
};
- patches = [
- ./0001-disable-metis.patch
- ./0002-set-install-dir.patch
- (substituteAll {
- src = ./0003-blas-lapack-flags.patch;
- blasFlags = "-lf77blas -latlas -lcblas -lgfortran";
- lapackFlags= "-llapack -latlas -lcblas";
- })
- ];
-
preConfigure = ''
- substituteAllInPlace SuiteSparse_config/SuiteSparse_config.mk
mkdir -p $out/lib
mkdir -p $out/include
+
+ sed -i "SuiteSparse_config/SuiteSparse_config.mk" \
+ -e 's/METIS .*$/METIS =/' \
+ -e 's/METIS_PATH .*$/METIS_PATH =/' \
+ -e '/CHOLMOD_CONFIG/ s/$/-DNPARTITION -DLONGBLAS=${int_t}/' \
+ -e '/UMFPACK_CONFIG/ s/$/-DLONGBLAS=${int_t}/'
'';
+ makeFlags = [
+ "PREFIX=\"$(out)\""
+ "INSTALL_LIB=$(out)/lib"
+ "INSTALL_INCLUDE=$(out)/include"
+ "BLAS=-lopenblas"
+ "LAPACK="
+ ];
+
+ NIX_CFLAGS = "-fPIC";
+
postInstall = ''
+ # Build and install shared library
+ (
+ cd "$(mktemp -d)"
+ for i in "$out"/lib/lib*.a; do
+ ar -x $i
+ done
+ gcc *.o --shared -o "$out/lib/libsuitesparse.so"
+ )
+ for i in umfpack cholmod amd camd colamd spqr; do
+ ln -s libsuitesparse.so "$out"/lib/lib$i.so;
+ done
+
# Install documentation
outdoc=$out/share/doc/${name}
mkdir -p $outdoc
@@ -47,7 +66,7 @@ stdenv.mkDerivation {
'';
nativeBuildInputs = [ gfortran ];
- buildInputs = [ atlasWithLapack ];
+ buildInputs = [ openblas ];
meta = with stdenv.lib; {
homepage = http://faculty.cse.tamu.edu/davis/suitesparse.html;
diff --git a/pkgs/development/libraries/science/math/suitesparse/disable-metis.patch b/pkgs/development/libraries/science/math/suitesparse/disable-metis.patch
deleted file mode 100644
index 5b735eb7d3c9..000000000000
--- a/pkgs/development/libraries/science/math/suitesparse/disable-metis.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff -Nrc SuiteSparse/UMFPACK/Demo/Makefile SuiteSparse-new/UMFPACK/Demo/Makefile
-*** SuiteSparse/UMFPACK/Demo/Makefile 2009-11-11 21:09:45.000000000 +0100
---- SuiteSparse-new/UMFPACK/Demo/Makefile 2010-08-02 12:53:16.000000000 +0200
-***************
-*** 40,46 ****
- ../../CAMD/Lib/libcamd.a:
- ( cd ../../CAMD ; $(MAKE) library )
-
-- $(METIS):
-- ( cd $(METIS_PATH) && $(MAKE) )
-
- UMFPACK = ../Lib/libumfpack.a ../../AMD/Lib/libamd.a \
---- 40,44 ----
- ../../CAMD/Lib/libcamd.a:
- ( cd ../../CAMD ; $(MAKE) library )
-
-
- UMFPACK = ../Lib/libumfpack.a ../../AMD/Lib/libamd.a \
diff --git a/pkgs/development/libraries/utf8proc/default.nix b/pkgs/development/libraries/utf8proc/default.nix
index 63de08b46dd7..c8a2fd6a4e99 100644
--- a/pkgs/development/libraries/utf8proc/default.nix
+++ b/pkgs/development/libraries/utf8proc/default.nix
@@ -11,9 +11,7 @@ stdenv.mkDerivation rec {
sha256 = "1ryjlcnpfm7fpkq6444ybi576hbnh2l0w7kjhbqady5lxwjyg3pf";
};
- installPhase = ''
- make install prefix=$out
- '';
+ makeFlags = [ "prefix=$(out)" ];
meta = with stdenv.lib; {
description = "A clean C library for processing UTF-8 Unicode data";
diff --git a/pkgs/development/python-modules/numpy-scipy-support.nix b/pkgs/development/python-modules/numpy-scipy-support.nix
index 22be22633c20..915b27cb4cd3 100644
--- a/pkgs/development/python-modules/numpy-scipy-support.nix
+++ b/pkgs/development/python-modules/numpy-scipy-support.nix
@@ -3,14 +3,14 @@
python,
# Name of package (e.g. numpy or scipy)
pkgName,
- # Atlas math library
- atlas
+ # OpenBLAS math library
+ openblas
}:
{
- # Re-export atlas here so that it can be sure that the same one will be used
+ # Re-export openblas here so that it can be sure that the same one will be used
# in the propagatedBuildInputs.
- inherit atlas;
+ inherit openblas;
# First "install" the package, then import what was installed, and call the
# .test() function, which will run the test suite.
@@ -48,9 +48,9 @@
preBuild = ''
echo "Creating site.cfg file..."
cat << EOF > site.cfg
- [atlas]
- include_dirs = ${atlas}/include
- library_dirs = ${atlas}/lib
+ [openblas]
+ include_dirs = ${openblas}/include
+ library_dirs = ${openblas}/lib
EOF
'';
}
diff --git a/pkgs/development/r-modules/default.nix b/pkgs/development/r-modules/default.nix
index 11d7193edee7..2f8c22fe8658 100644
--- a/pkgs/development/r-modules/default.nix
+++ b/pkgs/development/r-modules/default.nix
@@ -997,7 +997,7 @@ let
});
Mposterior = old.Mposterior.overrideDerivation (attrs: {
- PKG_LIBS = "-L${pkgs.atlas}/lib -lf77blas -latlas";
+ PKG_LIBS = "-L${pkgs.openblasCompat}/lib -lopenblas";
});
qtbase = old.qtbase.overrideDerivation (attrs: {
@@ -1037,11 +1037,11 @@ let
});
slfm = old.slfm.overrideDerivation (attrs: {
- PKG_LIBS = "-L${pkgs.atlas}/lib -lf77blas -latlas";
+ PKG_LIBS = "-L${pkgs.openblasCompat}/lib -lopenblas";
});
SamplerCompare = old.SamplerCompare.overrideDerivation (attrs: {
- PKG_LIBS = "-L${pkgs.atlas}/lib -lf77blas -latlas";
+ PKG_LIBS = "-L${pkgs.openblasCompat}/lib -lopenblas";
});
gputools = old.gputools.overrideDerivation (attrs: {
@@ -1087,6 +1087,7 @@ let
BayesLogit = old.BayesLogit.overrideDerivation (attrs: {
patches = [ ./patches/BayesLogit.patch ];
+ buildInputs = (attrs.buildInputs or []) ++ [ pkgs.openblasCompat ];
});
BayesBridge = old.BayesBridge.overrideDerivation (attrs: {
diff --git a/pkgs/development/r-modules/patches/BayesLogit_cblas.patch b/pkgs/development/r-modules/patches/BayesLogit_cblas.patch
index 4c8778c46976..ef776f3531da 100644
--- a/pkgs/development/r-modules/patches/BayesLogit_cblas.patch
+++ b/pkgs/development/r-modules/patches/BayesLogit_cblas.patch
@@ -6,7 +6,7 @@ diff -ru -x '*~' BayesLogit_orig/src/Makevars BayesLogit/src/Makevars
OBJECTS = Matrix.o MatrixFrame.o RRNG.o RNG.o FSF_nmix.o LogitWrapper.o \
PolyaGamma.o PolyaGammaAlt.o PolyaGammaSP.o InvertY.o
-PKG_LIBS = $(BLAS_LIBS) $(FLIBS) $(LAPACK_LIBS)
-+PKG_LIBS = $(BLAS_LIBS) $(FLIBS) $(LAPACK_LIBS) -llapack -lf77blas -lcblas -latlas -lgfortran
++PKG_LIBS = $(BLAS_LIBS) $(FLIBS) $(LAPACK_LIBS) -lopenblas
# PKG_CPPFLAGS = -DUSE_R -DNDEBUG -DDISABLE_SINGLE -DNTHROW -Wall -pedantic -Wextra
PKG_CPPFLAGS = -DUSE_R -DNDEBUG -DDISABLE_SINGLE -DNTHROW
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 22ff26e098ed..b55478313a5e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -4022,18 +4022,11 @@ let
jikes = callPackage ../development/compilers/jikes { };
julia02 = callPackage ../development/compilers/julia/0.2.nix {
- liblapack = liblapack.override {shared = true;};
llvm = llvm_33;
suitesparse = suitesparse_4_2;
};
- julia03 = let
- liblapack = liblapack_3_5_0.override {shared = true;};
- in callPackage ../development/compilers/julia/0.3.nix {
- inherit liblapack;
- suitesparse = suitesparse_4_2.override {
- inherit liblapack;
- };
+ julia03 = callPackage ../development/compilers/julia/0.3.nix {
llvm = llvm_33;
};
julia = julia03;
@@ -4859,6 +4852,7 @@ let
glpk = null;
suitesparse = null;
jdk = null;
+ openblas = openblasCompat;
};
octaveFull = (lowPrio (callPackage ../development/interpreters/octave {
fltk = fltk13.override { cfg.xftSupport = true; };
@@ -8596,6 +8590,7 @@ let
R = callPackage ../applications/science/math/R {
inherit (xlibs) libX11 libXt;
texLive = texLiveAggregationFun { paths = [ texLive texLiveExtra ]; };
+ openblas = openblasCompat;
withRecommendedPackages = false;
};
@@ -13935,9 +13930,11 @@ let
liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { };
- openblas = callPackage ../development/libraries/science/math/openblas {
- liblapack = liblapack_3_5_0;
- };
+ openblas = callPackage ../development/libraries/science/math/openblas { };
+
+ # A version of OpenBLAS using 32-bit integers on all platforms for compatibility with
+ # standard BLAS and LAPACK.
+ openblasCompat = openblas.override { blas64 = false; };
mathematica = callPackage ../applications/science/math/mathematica { };
mathematica9 = callPackage ../applications/science/math/mathematica/9.nix { };
@@ -13945,9 +13942,10 @@ let
sage = callPackage ../applications/science/math/sage { };
suitesparse_4_2 = callPackage ../development/libraries/science/math/suitesparse/4.2.nix { };
- suitesparse_4_4_1 = callPackage ../development/libraries/science/math/suitesparse {};
+ suitesparse_4_4 = callPackage ../development/libraries/science/math/suitesparse {};
+ suitesparse = suitesparse_4_4;
- ipopt = callPackage ../development/libraries/science/math/ipopt { };
+ ipopt = callPackage ../development/libraries/science/math/ipopt { openblas = openblasCompat; };
### SCIENCE/MOLECULAR-DYNAMICS
diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix
index c625301926b7..703560b77588 100644
--- a/pkgs/top-level/python-packages.nix
+++ b/pkgs/top-level/python-packages.nix
@@ -1068,7 +1068,12 @@ let
sha256 = "f856ea2e9e2947abc1a6557625cc6b0e45228984f397a90c420b2f468dc4cb97";
};
doCheck = false;
- buildInputs = with pkgs; [ liblapack blas ];
+ buildInputs = with pkgs; [ openblasCompat ];
+ preConfigure = ''
+ export CVXOPT_BLAS_LIB_DIR=${pkgs.openblasCompat}/lib
+ export CVXOPT_BLAS_LIB=openblas
+ export CVXOPT_LAPACK_LIB=openblas
+ '';
meta = {
homepage = "http://cvxopt.org/";
description = "Python Software for Convex Optimization";
@@ -7850,7 +7855,7 @@ let
numpy = let
support = import ../development/python-modules/numpy-scipy-support.nix {
inherit python;
- atlas = pkgs.atlasWithLapack;
+ openblas = pkgs.openblasCompat;
pkgName = "numpy";
};
in buildPythonPackage ( rec {
@@ -7873,7 +7878,7 @@ let
setupPyBuildFlags = ["--fcompiler='gnu95'"];
buildInputs = [ pkgs.gfortran self.nose ];
- propagatedBuildInputs = [ support.atlas ];
+ propagatedBuildInputs = [ support.openblas ];
meta = {
description = "Scientific tools for Python";
@@ -11322,7 +11327,7 @@ let
scipy = let
support = import ../development/python-modules/numpy-scipy-support.nix {
inherit python;
- atlas = pkgs.atlasWithLapack;
+ openblas = pkgs.openblasCompat;
pkgName = "numpy";
};
in buildPythonPackage rec {
@@ -11360,15 +11365,14 @@ let
};
buildInputs = with self; [ nose pillow pkgs.gfortran pkgs.glibcLocales ];
- propagatedBuildInputs = with self; [ numpy scipy pkgs.atlas ];
+ propagatedBuildInputs = with self; [ numpy scipy pkgs.openblas ];
buildPhase = ''
- export ATLAS=${pkgs.atlas}
${self.python.executable} setup.py build_ext -i --fcompiler='gnu95'
'';
checkPhase = ''
- LC_ALL="en_US.UTF-8" HOME=$TMPDIR ATLAS="" nosetests
+ LC_ALL="en_US.UTF-8" HOME=$TMPDIR OMP_NUM_THREADS=1 nosetests
'';
meta = {