summary refs log tree commit diff
path: root/pkgs/development/libraries/science/math
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/science/math')
-rw-r--r--pkgs/development/libraries/science/math/arpack/default.nix17
-rw-r--r--pkgs/development/libraries/science/math/ipopt/default.nix13
-rw-r--r--pkgs/development/libraries/science/math/liblapack/3.5.0.nix37
-rw-r--r--pkgs/development/libraries/science/math/liblapack/default.nix35
-rw-r--r--pkgs/development/libraries/science/math/metis/default.nix20
-rw-r--r--pkgs/development/libraries/science/math/openblas/0.2.10.nix37
-rw-r--r--pkgs/development/libraries/science/math/openblas/0.2.2.nix37
-rw-r--r--pkgs/development/libraries/science/math/openblas/default.nix31
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/0001-disable-metis.patch36
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/0002-set-install-dir.patch27
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/0003-blas-lapack-flags.patch27
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/4.2.nix34
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/SuiteSparse_config.mk452
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/default.nix53
-rw-r--r--pkgs/development/libraries/science/math/suitesparse/disable-metis.patch18
15 files changed, 179 insertions, 695 deletions
diff --git a/pkgs/development/libraries/science/math/arpack/default.nix b/pkgs/development/libraries/science/math/arpack/default.nix
index 01bb3371f5e..58326a6fa50 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,16 +12,21 @@ 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/";
+    homepage = "http://github.com/opencollab/arpack-ng";
     description = ''
       A collection of Fortran77 subroutines to solve large scale eigenvalue
-      problems
+      problems.
     '';
     license = stdenv.lib.licenses.bsd3;
     maintainers = [ stdenv.lib.maintainers.ttuegel ];
diff --git a/pkgs/development/libraries/science/math/ipopt/default.nix b/pkgs/development/libraries/science/math/ipopt/default.nix
index 544ab215345..89d2a242f96 100644
--- a/pkgs/development/libraries/science/math/ipopt/default.nix
+++ b/pkgs/development/libraries/science/math/ipopt/default.nix
@@ -1,21 +1,26 @@
-{ stdenv, fetchurl, unzip, blas, liblapack, gfortran }:
+{ stdenv, fetchurl, unzip, openblas, gfortran }:
 
 stdenv.mkDerivation rec {
-  version = "3.12.1";
+  version = "3.12.3";
   name = "ipopt-${version}";
 
   src = fetchurl {
     url = "http://www.coin-or.org/download/source/Ipopt/Ipopt-${version}.zip";
-    sha256 = "0x0wcc21d2bfs3zq8nvhva1nv7xi86wjbyixvvxvcrg2kqjlybdy";
+    sha256 = "0h8qx3hq2m21qrg4v3n26v2qbhl6saxrpa7rbhnmkkcfj5s942yr";
   };
 
   preConfigure = ''
      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/liblapack/3.5.0.nix b/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
index 0b4badf26e7..ef89c0bfee2 100644
--- a/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
+++ b/pkgs/development/libraries/science/math/liblapack/3.5.0.nix
@@ -1,10 +1,22 @@
-{ stdenv, fetchurl, gfortran, atlas, cmake, python, shared ? false }:
+{
+  stdenv,
+  fetchurl,
+  gfortran,
+  cmake,
+  python,
+  atlas ? null,
+  shared ? false
+}:
 let
-  atlasMaybeShared = atlas.override { inherit shared; };
+  atlasMaybeShared = if atlas != null then atlas.override { inherit shared; }
+                     else null;
   usedLibExtension = if shared then ".so" else ".a";
+  inherit (stdenv.lib) optional optionals concatStringsSep;
+  inherit (builtins) hasAttr attrNames;
+  version = "3.5.0";
 in
+
 stdenv.mkDerivation rec {
-  version = "3.5.0";
   name = "liblapack-${version}";
   src = fetchurl {
     url = "http://www.netlib.org/lapack/lapack-${version}.tgz";
@@ -17,11 +29,16 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DUSE_OPTIMIZED_BLAS=ON"
-    "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}"
-    "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}"
     "-DCMAKE_Fortran_FLAGS=-fPIC"
   ]
-  ++ (stdenv.lib.optional shared "-DBUILD_SHARED_LIBS=ON")
+  ++ (optionals (atlas != null) [
+    "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}"
+    "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}"
+  ])
+  ++ (optional shared "-DBUILD_SHARED_LIBS=ON")
+  # If we're on darwin, CMake will automatically detect impure paths. This switch
+  # prevents that.
+  ++ (optional stdenv.isDarwin "-DCMAKE_OSX_SYSROOT:PATH=''")
   ;
 
   doCheck = ! shared;
@@ -37,13 +54,13 @@ stdenv.mkDerivation rec {
     blas = atlas;
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     inherit version;
     description = "Linear Algebra PACKage";
     homepage = "http://www.netlib.org/lapack/";
-    license = "revised-BSD";
+    license = licenses.bsd3;
 
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.simons ];
+    platforms = platforms.all;
+    maintainers = [ maintainers.simons ];
   };
 }
diff --git a/pkgs/development/libraries/science/math/liblapack/default.nix b/pkgs/development/libraries/science/math/liblapack/default.nix
index 9f4f43311a4..f3832ba0a20 100644
--- a/pkgs/development/libraries/science/math/liblapack/default.nix
+++ b/pkgs/development/libraries/science/math/liblapack/default.nix
@@ -1,9 +1,21 @@
-{ stdenv, fetchurl, gfortran, atlas, cmake, python, shared ? false }:
+{
+  stdenv,
+  fetchurl,
+  gfortran,
+  cmake,
+  python,
+  atlas ? null,
+  shared ? false
+}:
 let
-  atlasMaybeShared = atlas.override { inherit shared; };
+  atlasMaybeShared = if atlas != null then atlas.override { inherit shared; }
+                     else null;
   usedLibExtension = if shared then ".so" else ".a";
+  inherit (stdenv.lib) optional optionals concatStringsSep;
+  inherit (builtins) hasAttr attrNames;
   version = "3.4.1";
 in
+
 stdenv.mkDerivation rec {
   name = "liblapack-${version}";
   src = fetchurl {
@@ -17,11 +29,16 @@ stdenv.mkDerivation rec {
 
   cmakeFlags = [
     "-DUSE_OPTIMIZED_BLAS=ON"
-    "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}"
-    "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}"
     "-DCMAKE_Fortran_FLAGS=-fPIC"
   ]
-  ++ (stdenv.lib.optional shared "-DBUILD_SHARED_LIBS=ON")
+  ++ (optionals (atlas != null) [
+    "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}"
+    "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}"
+  ])
+  ++ (optional shared "-DBUILD_SHARED_LIBS=ON")
+  # If we're on darwin, CMake will automatically detect impure paths. This switch
+  # prevents that.
+  ++ (optional stdenv.isDarwin "-DCMAKE_OSX_SYSROOT:PATH=''")
   ;
 
   doCheck = ! shared;
@@ -37,13 +54,13 @@ stdenv.mkDerivation rec {
     blas = atlas;
   };
 
-  meta = {
+  meta = with stdenv.lib; {
     inherit version;
     description = "Linear Algebra PACKage";
     homepage = "http://www.netlib.org/lapack/";
-    license = "revised-BSD";
+    license = licenses.bsd3;
 
-    platforms = stdenv.lib.platforms.all;
-    maintainers = [ stdenv.lib.maintainers.simons ];
+    platforms = platforms.all;
+    maintainers = [ maintainers.simons ];
   };
 }
diff --git a/pkgs/development/libraries/science/math/metis/default.nix b/pkgs/development/libraries/science/math/metis/default.nix
new file mode 100644
index 00000000000..3ce94f28ac2
--- /dev/null
+++ b/pkgs/development/libraries/science/math/metis/default.nix
@@ -0,0 +1,20 @@
+{ stdenv, fetchurl, unzip, cmake }:
+
+stdenv.mkDerivation {
+  name = "metis-5.1.0";
+
+  src = fetchurl {
+    url = "http://glaros.dtc.umn.edu/gkhome/fetch/sw/metis/metis-5.1.0.tar.gz";
+    sha256 = "1cjxgh41r8k6j029yxs8msp3z6lcnpm16g5pvckk35kc7zhfpykn";
+  };
+
+  cmakeFlags = [ "-DGKLIB_PATH=../GKlib" ];
+  buildInputs = [ unzip cmake ];
+
+  meta = {
+    description = "Serial graph partitioning and fill-reducing matrix ordering";
+    homepage = http://glaros.dtc.umn.edu/gkhome/metis/metis/overview;
+    license = stdenv.lib.licenses.asl20;
+    platforms = stdenv.lib.platforms.all;
+  };
+}
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 ec4422ce895..00000000000
--- 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 c476dac955a..00000000000
--- 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 e779957a6fb..a4bf1efbb73 100644
--- a/pkgs/development/libraries/science/math/openblas/default.nix
+++ b/pkgs/development/libraries/science/math/openblas/default.nix
@@ -1,21 +1,24 @@
-{ stdenv, fetchurl, gfortran, perl, liblapack, config }:
+{ 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";
@@ -29,23 +32,31 @@ stdenv.mkDerivation rec {
 
   preBuild = "cp ${liblapack.src} lapack-${liblapack.meta.version}.tgz";
 
-  nativeBuildInputs = [gfortran perl];
+  nativeBuildInputs = optionals stdenv.isDarwin [coreutils] ++ [gfortran perl];
 
   makeFlags =
     (if local then localFlags else genericFlags)
     ++
+    optionals stdenv.isDarwin ["MACOSX_DEPLOYMENT_TARGET=10.9"]
+    ++
     [
       "FC=gfortran"
-      "CC=gcc"
+      # 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)"''
-      "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;
     homepage = "https://github.com/xianyi/OpenBLAS";
-    platforms = with platforms; linux;
+    platforms = with platforms; unix;
     maintainers = with maintainers; [ ttuegel ];
   };
 }
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 b0f7715f755..00000000000
--- 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 <ttuegel@gmail.com>
-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 ef861f68091..00000000000
--- 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 <ttuegel@gmail.com>
-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 db0b1c45655..00000000000
--- 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 <ttuegel@gmail.com>
-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 4d27701b135..16174a80212 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 157a20d7b5a..00000000000
--- 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 add4ca9a08f..f30db472b0d 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 5b735eb7d3c..00000000000
--- 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 \