From 93dfdf0a0c5aea8ca7391941097566609060fa9a Mon Sep 17 00:00:00 2001 From: Josef Kemetmueller Date: Mon, 18 Jul 2016 21:55:26 +0200 Subject: [PATCH] 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 8d904efe0d66..937275b6528a 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 000000000000..e4c77d2cc2e3 --- /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 000000000000..b6fdddcaf2da --- /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)