summary refs log tree commit diff
diff options
context:
space:
mode:
authorDoron Behar <doron.behar@gmail.com>2020-09-23 00:20:47 +0300
committerDoron Behar <doron.behar@gmail.com>2020-09-23 02:56:51 +0300
commit81093774683e63f82c63f05784cd39bc4d3f53ab (patch)
tree13c6615740916a6c84a522031df4a3072cf11d37
parent9c3f7ad85bf9f823a11d69c41c188135b2ebe7a8 (diff)
downloadnixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar.gz
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar.bz2
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar.lz
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar.xz
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.tar.zst
nixpkgs-81093774683e63f82c63f05784cd39bc4d3f53ab.zip
qrupdate: refactor & assert compatible blas && lapack
Use `pname` and `version`. Use my preferred indentation style. Use
makeFlagsArray in preBuild instead of overriding configurePhase, per:
https://github.com/jtojnar/nixpkgs-hammering/blob/master/explanations/explicit-phases.md

Assert that lapack and blas are compatible regarding 64 bit indexing, do
it near evaluation of preBuild, per jtojnar's explanation:
https://github.com/NixOS/nixpkgs/pull/94892#discussion_r471110250

Use gpl3Plus, as gpl3 is unclear and deprecated.
-rw-r--r--pkgs/development/libraries/qrupdate/default.nix41
1 files changed, 25 insertions, 16 deletions
diff --git a/pkgs/development/libraries/qrupdate/default.nix b/pkgs/development/libraries/qrupdate/default.nix
index 99fe1289eae..90d4cb45ce2 100644
--- a/pkgs/development/libraries/qrupdate/default.nix
+++ b/pkgs/development/libraries/qrupdate/default.nix
@@ -5,24 +5,33 @@
 , lapack
 , which
 }:
-stdenv.mkDerivation {
-  name = "qrupdate-1.1.2";
+
+stdenv.mkDerivation rec {
+  pname = "qrupdate";
+  version = "1.1.2";
   src = fetchurl {
-    url = "mirror://sourceforge/qrupdate/qrupdate-1.1.2.tar.gz";
+    url = "mirror://sourceforge/qrupdate/${pname}-${version}.tar.gz";
     sha256 = "024f601685phcm1pg8lhif3lpy5j9j0k6n0r46743g4fvh8wg8g2";
   };
 
-  configurePhase =
-    ''
-      export PREFIX=$out
-      sed -i -e 's,^BLAS=.*,BLAS=-L${blas}/lib -lblas,' \
-          -e 's,^LAPACK=.*,LAPACK=-L${lapack}/lib -llapack,' \
-          Makeconf
-    ''
-    + stdenv.lib.optionalString blas.isILP64
-    ''
-      sed -i Makeconf -e '/^FFLAGS=.*/ s/$/-fdefault-integer-8/'
-    '';
+  preBuild =
+    # Check that blas and lapack are compatible
+    assert (blas.isILP64 == lapack.isILP64);
+  # We don't have structuredAttrs yet implemented, and we need to use space
+  # seprated values in makeFlags, so only this works.
+  ''
+    makeFlagsArray+=(
+      "LAPACK=-L${lapack}/lib -llapack"
+      "BLAS=-L${blas}/lib -lblas"
+      "PREFIX=${placeholder "out"}"
+      ${stdenv.lib.optionalString blas.isILP64
+      # Use their FFLAGS along with `-fdefault-integer-8`. If another
+      # application intends to use arpack, it should add this to it's FFLAGS as
+      # well. Otherwise (e.g): https://savannah.gnu.org/bugs/?50339
+      "FFLAGS=-fimplicit-none -O3 -funroll-loops -fdefault-integer-8"
+      }
+    )
+  '';
 
   doCheck = true;
 
@@ -32,14 +41,14 @@ stdenv.mkDerivation {
 
   installTargets = stdenv.lib.optionals stdenv.isDarwin [ "install-staticlib" "install-shlib" ];
 
-  buildInputs = [ gfortran blas lapack ];
+  buildInputs = [ gfortran ];
 
   nativeBuildInputs = [ which ];
 
   meta = with stdenv.lib; {
     description = "Library for fast updating of qr and cholesky decompositions";
     homepage = "https://sourceforge.net/projects/qrupdate/";
-    license = licenses.gpl3;
+    license = licenses.gpl3Plus;
     maintainers = with maintainers; [ doronbehar ];
     platforms = platforms.unix;
   };