Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)

Merge pull request #8042 from adnelson/liblapack_atlas_dependency_optional

Liblapack atlas dependency optional

+53 -14
+23 -6
pkgs/development/libraries/science/math/liblapack/3.5.0.nix
··· 1 - { stdenv, fetchurl, gfortran, atlas, cmake, python, shared ? false }: 1 + { 2 + stdenv, 3 + fetchurl, 4 + gfortran, 5 + cmake, 6 + python, 7 + atlas ? null, 8 + shared ? false 9 + }: 2 10 let 3 - atlasMaybeShared = atlas.override { inherit shared; }; 11 + atlasMaybeShared = if atlas != null then atlas.override { inherit shared; } 12 + else null; 4 13 usedLibExtension = if shared then ".so" else ".a"; 14 + inherit (stdenv.lib) optional optionals concatStringsSep; 15 + inherit (builtins) hasAttr attrNames; 16 + version = "3.5.0"; 5 17 in 18 + 6 19 stdenv.mkDerivation rec { 7 - version = "3.5.0"; 8 20 name = "liblapack-${version}"; 9 21 src = fetchurl { 10 22 url = "http://www.netlib.org/lapack/lapack-${version}.tgz"; ··· 17 29 18 30 cmakeFlags = [ 19 31 "-DUSE_OPTIMIZED_BLAS=ON" 20 - "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}" 21 - "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}" 22 32 "-DCMAKE_Fortran_FLAGS=-fPIC" 23 33 ] 24 - ++ (stdenv.lib.optional shared "-DBUILD_SHARED_LIBS=ON") 34 + ++ (optionals (atlas != null) [ 35 + "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}" 36 + "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}" 37 + ]) 38 + ++ (optional shared "-DBUILD_SHARED_LIBS=ON") 39 + # If we're on darwin, CMake will automatically detect impure paths. This switch 40 + # prevents that. 41 + ++ (optional stdenv.isDarwin "-DCMAKE_OSX_SYSROOT:PATH=''") 25 42 ; 26 43 27 44 doCheck = ! shared;
+18 -5
pkgs/development/libraries/science/math/liblapack/default.nix
··· 1 - { stdenv, fetchurl, gfortran, atlas, cmake, python, shared ? false }: 1 + { 2 + stdenv, 3 + fetchurl, 4 + gfortran, 5 + cmake, 6 + python, 7 + atlas ? null, 8 + shared ? false 9 + }: 2 10 let 3 - atlasMaybeShared = atlas.override { inherit shared; }; 11 + atlasMaybeShared = if atlas != null then atlas.override { inherit shared; } 12 + else null; 4 13 usedLibExtension = if shared then ".so" else ".a"; 14 + inherit (stdenv.lib) optional optionals concatStringsSep; 15 + inherit (builtins) hasAttr attrNames; 5 16 version = "3.4.1"; 6 - inherit (stdenv.lib) optional; 7 17 in 18 + 8 19 stdenv.mkDerivation rec { 9 20 name = "liblapack-${version}"; 10 21 src = fetchurl { ··· 18 29 19 30 cmakeFlags = [ 20 31 "-DUSE_OPTIMIZED_BLAS=ON" 21 - "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}" 22 - "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}" 23 32 "-DCMAKE_Fortran_FLAGS=-fPIC" 24 33 ] 34 + ++ (optionals (atlas != null) [ 35 + "-DBLAS_ATLAS_f77blas_LIBRARY=${atlasMaybeShared}/lib/libf77blas${usedLibExtension}" 36 + "-DBLAS_ATLAS_atlas_LIBRARY=${atlasMaybeShared}/lib/libatlas${usedLibExtension}" 37 + ]) 25 38 ++ (optional shared "-DBUILD_SHARED_LIBS=ON") 26 39 # If we're on darwin, CMake will automatically detect impure paths. This switch 27 40 # prevents that.
+12 -3
pkgs/top-level/all-packages.nix
··· 13851 13851 # great feature, but it's of limited use with pre-built binaries 13852 13852 # coming from a central build farm. 13853 13853 tolerateCpuTimingInaccuracy = true; 13854 - liblapack = liblapack_3_5_0; 13854 + liblapack = liblapack_3_5_0WithoutAtlas; 13855 13855 withLapack = false; 13856 13856 }; 13857 13857 ··· 13867 13867 13868 13868 jags = callPackage ../applications/science/math/jags { }; 13869 13869 13870 - liblapack = callPackage ../development/libraries/science/math/liblapack { }; 13871 - liblapack_3_5_0 = callPackage ../development/libraries/science/math/liblapack/3.5.0.nix { }; 13870 + 13871 + # We have essentially 4 permutations of liblapack: version 3.4.1 or 3.5.0, 13872 + # and with or without atlas as a dependency. The default `liblapack` is 3.4.1 13873 + # with atlas. Atlas, when built with liblapack as a dependency, uses 3.5.0 13874 + # without atlas. Etc. 13875 + liblapackWithAtlas = callPackage ../development/libraries/science/math/liblapack {}; 13876 + liblapackWithoutAtlas = liblapackWithAtlas.override { atlas = null; }; 13877 + liblapack_3_5_0WithAtlas = callPackage ../development/libraries/science/math/liblapack/3.5.0.nix {}; 13878 + liblapack_3_5_0WithoutAtlas = liblapack_3_5_0WithAtlas.override { atlas = null; }; 13879 + liblapack = liblapackWithAtlas; 13880 + liblapack_3_5_0 = liblapack_3_5_0WithAtlas; 13872 13881 13873 13882 liblbfgs = callPackage ../development/libraries/science/math/liblbfgs { }; 13874 13883