From f3dc4d9ec32dba8f9694305f00e2e706f66d8085 Mon Sep 17 00:00:00 2001 From: Josef Kemetmueller Date: Thu, 28 Apr 2016 20:43:21 +0200 Subject: [PATCH 1/2] superlu: init at 5.2.1 --- ...lib-as-dependency-for-the-unit-tests.patch | 7 ++++ .../science/math/superlu/default.nix | 36 +++++++++++++++++++ .../math/superlu/find-openblas-library.patch | 11 ++++++ pkgs/top-level/all-packages.nix | 2 ++ 4 files changed, 56 insertions(+) create mode 100644 pkgs/development/libraries/science/math/superlu/add-superlu-lib-as-dependency-for-the-unit-tests.patch create mode 100644 pkgs/development/libraries/science/math/superlu/default.nix create mode 100644 pkgs/development/libraries/science/math/superlu/find-openblas-library.patch diff --git a/pkgs/development/libraries/science/math/superlu/add-superlu-lib-as-dependency-for-the-unit-tests.patch b/pkgs/development/libraries/science/math/superlu/add-superlu-lib-as-dependency-for-the-unit-tests.patch new file mode 100644 index 00000000000..29d86238af0 --- /dev/null +++ b/pkgs/development/libraries/science/math/superlu/add-superlu-lib-as-dependency-for-the-unit-tests.patch @@ -0,0 +1,7 @@ +--- a/TESTING/MATGEN/CMakeLists.txt ++++ b/TESTING/MATGEN/CMakeLists.txt +@@ -97,3 +97,4 @@ if(enable_complex16) + endif() + + add_library(matgen ${sources}) ++target_link_libraries(matgen superlu) diff --git a/pkgs/development/libraries/science/math/superlu/default.nix b/pkgs/development/libraries/science/math/superlu/default.nix new file mode 100644 index 00000000000..9938a3096a0 --- /dev/null +++ b/pkgs/development/libraries/science/math/superlu/default.nix @@ -0,0 +1,36 @@ +{ stdenv, fetchurl, cmake, + gfortran, openblasCompat}: + +stdenv.mkDerivation rec { + version = "5.2.1"; + name = "superlu-${version}"; + + src = fetchurl { + url = "http://crd-legacy.lbl.gov/~xiaoye/SuperLU/superlu_${version}.tar.gz"; + sha256 = "0qzlb7cd608q62kyppd0a8c65l03vrwqql6gsm465rky23b6dyr8"; + }; + + buildInputs = [ cmake gfortran ]; + + propagatedBuildInputs = [ openblasCompat ]; + + cmakeFlags = [ + "-DBUILD_SHARED_LIBS=true" + "-DUSE_XSDK_DEFAULTS=true" + ]; + + patches = [ + ./find-openblas-library.patch + ./add-superlu-lib-as-dependency-for-the-unit-tests.patch + ]; + + doCheck = true; + checkTarget = "test"; + + meta = { + homepage = http://crd-legacy.lbl.gov/~xiaoye/SuperLU/; + license = http://crd-legacy.lbl.gov/~xiaoye/SuperLU/License.txt; + description = "A library for the solution of large, sparse, nonsymmetric systems of linear equations"; + platforms = stdenv.lib.platforms.unix; + }; +} diff --git a/pkgs/development/libraries/science/math/superlu/find-openblas-library.patch b/pkgs/development/libraries/science/math/superlu/find-openblas-library.patch new file mode 100644 index 00000000000..ce7bc6974c9 --- /dev/null +++ b/pkgs/development/libraries/science/math/superlu/find-openblas-library.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -75,6 +75,8 @@ set(CMAKE_C_FLAGS_RELEASE "-O3" CACHE STRING "") + ###################################################################### + # + #--------------------- BLAS --------------------- ++find_package(OpenBLAS) ++set(TPL_BLAS_LIBRARIES ${OpenBLAS_LIBRARIES}) + if(NOT enable_blaslib) + if (TPL_BLAS_LIBRARIES) + set(BLAS_FOUND TRUE) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c723433bf51..aa5988722e6 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16382,6 +16382,8 @@ in suitesparse_4_4 = callPackage ../development/libraries/science/math/suitesparse {}; suitesparse = suitesparse_4_4; + superlu = callPackage ../development/libraries/science/math/superlu {}; + ipopt = callPackage ../development/libraries/science/math/ipopt { openblas = openblasCompat; }; gmsh = callPackage ../applications/science/math/gmsh { }; From 93dfdf0a0c5aea8ca7391941097566609060fa9a Mon Sep 17 00:00:00 2001 From: Josef Kemetmueller Date: Mon, 18 Jul 2016 21:55:26 +0200 Subject: [PATCH 2/2] armadillo: correct dependencies - Remove unused dependencies atlas/blas - Add hdf5/superlu dependency (As superlu needs openblasCompat, we also use it here.) - Add support for darwin - Make use of OpenBLAS-LAPACK in armadillo OpenBLAS (confusingly) contains LAPACK already by default, so we simply use OpenBLAS when searching for LAPACK. The better solution would be for armadillo to use cmake built in FindBLAS/FindLAPACK which both would find OpenBLAS. --- .../libraries/armadillo/default.nix | 25 +++++++++++-------- .../armadillo/use-OpenBLAS-as-LAPACK.patch | 14 +++++++++++ .../armadillo/use-unix-config-on-OS-X.patch | 11 ++++++++ 3 files changed, 39 insertions(+), 11 deletions(-) create mode 100644 pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch create mode 100644 pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch diff --git a/pkgs/development/libraries/armadillo/default.nix b/pkgs/development/libraries/armadillo/default.nix index 8d904efe0d6..937275b6528 100644 --- a/pkgs/development/libraries/armadillo/default.nix +++ b/pkgs/development/libraries/armadillo/default.nix @@ -1,23 +1,26 @@ -{stdenv, fetchurl, cmake, pkgconfig, atlas, blas, openblas}: +{ stdenv, fetchurl, cmake, openblasCompat, superlu, hdf5 }: stdenv.mkDerivation rec { - version = "7.200.1b"; + version = "7.200.2"; name = "armadillo-${version}"; - + src = fetchurl { - url = "http://sourceforge.net/projects/arma/files/armadillo-${version}.tar.xz"; - sha256 = "00s8xrywc4aipipq1zpd6q9gzqmsiv8cwd25zvb1csrpninmidvc"; + url = "mirror://sourceforge/arma/armadillo-${version}.tar.xz"; + sha256 = "1yvx75caks477jqwx5gspi6946jialddk00wdvg6dnh5wdi2xasm"; }; - unpackCmd = [ "tar -xf ${src}" ]; - - nativeBuildInputs = [ cmake atlas blas openblas ]; + buildInputs = [ cmake openblasCompat superlu hdf5 ]; + + cmakeFlags = [ "-DDETECT_HDF5=ON" ]; + + patches = [ ./use-unix-config-on-OS-X.patch + ./use-OpenBLAS-as-LAPACK.patch ]; meta = with stdenv.lib; { description = "C++ linear algebra library"; - homepage = "http://arma.sourceforge.net" ; + homepage = http://arma.sourceforge.net; license = licenses.mpl20; - platforms = stdenv.lib.platforms.linux ; - maintainers = [ stdenv.lib.maintainers.juliendehos ]; + platforms = platforms.unix; + maintainers = [ maintainers.juliendehos ]; }; } diff --git a/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch b/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch new file mode 100644 index 00000000000..e4c77d2cc2e --- /dev/null +++ b/pkgs/development/libraries/armadillo/use-OpenBLAS-as-LAPACK.patch @@ -0,0 +1,14 @@ +diff --git a/cmake_aux/Modules/ARMA_FindLAPACK.cmake b/cmake_aux/Modules/ARMA_FindLAPACK.cmake +index 5395afb..a203c93 100644 +--- a/cmake_aux/Modules/ARMA_FindLAPACK.cmake ++++ b/cmake_aux/Modules/ARMA_FindLAPACK.cmake +@@ -5,7 +5,7 @@ + # also defined, but not for general use are + # LAPACK_LIBRARY, where to find the LAPACK library. + +-SET(LAPACK_NAMES ${LAPACK_NAMES} lapack) ++SET(LAPACK_NAMES ${LAPACK_NAMES} openblas) + FIND_LIBRARY(LAPACK_LIBRARY + NAMES ${LAPACK_NAMES} + PATHS /usr/lib64/atlas /usr/lib/atlas /usr/lib64 /usr/lib /usr/local/lib64 /usr/local/lib + diff --git a/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch b/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch new file mode 100644 index 00000000000..b6fdddcaf2d --- /dev/null +++ b/pkgs/development/libraries/armadillo/use-unix-config-on-OS-X.patch @@ -0,0 +1,11 @@ +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -84,7 +84,7 @@ message(STATUS "DETECT_HDF5 = ${DETECT_HDF5}" ) + ## + ## Find LAPACK and BLAS libraries, or their optimised versions + ## +- ++set(APPLE false) + if(APPLE) + + set(ARMA_OS macos)