diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2019-02-10 14:20:49 +0100 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2019-02-10 14:20:49 +0100 |
commit | c40f2114992f7387013a6113ebfd99ae63ec4f91 (patch) | |
tree | 3d3a6f7427fb44f33e30e300a0da2da3e58f7065 /pkgs/development/libraries/science | |
parent | b8d7c0cab5e5e5ea8002ce4ad38f336df12841fe (diff) | |
parent | 64edccb463432a937f00943db22a8cd36245ec27 (diff) | |
download | nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar.gz nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar.bz2 nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar.lz nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar.xz nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.tar.zst nixlib-c40f2114992f7387013a6113ebfd99ae63ec4f91.zip |
Merge branch 'staging-next'
It's not completely without regressions, but ATM it seems to bring more upsides than downsides and the iteration is too long already.
Diffstat (limited to 'pkgs/development/libraries/science')
-rw-r--r-- | pkgs/development/libraries/science/math/openblas/default.nix | 94 |
1 files changed, 42 insertions, 52 deletions
diff --git a/pkgs/development/libraries/science/math/openblas/default.nix b/pkgs/development/libraries/science/math/openblas/default.nix index 8bba26efd35f..55fc3f750df3 100644 --- a/pkgs/development/libraries/science/math/openblas/default.nix +++ b/pkgs/development/libraries/science/math/openblas/default.nix @@ -3,8 +3,8 @@ # pointer width, but some expect to use 32-bit integers always # (for compatibility with reference BLAS). , blas64 ? null - -# Select a specifc optimization target (other than the default) +, buildPackages +# Select a specific optimization target (other than the default) # See https://github.com/xianyi/OpenBLAS/blob/develop/TargetList.txt , target ? null }: @@ -19,54 +19,46 @@ let # To add support for a new platform, add an element to this set. configs = { armv6l-linux = { - BINARY = "32"; + BINARY = 32; TARGET = setTarget "ARMV6"; - DYNAMIC_ARCH = "0"; - CC = "gcc"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = false; + USE_OPENMP = true; }; armv7l-linux = { - BINARY = "32"; + BINARY = 32; TARGET = setTarget "ARMV7"; - DYNAMIC_ARCH = "0"; - CC = "gcc"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = false; + USE_OPENMP = true; }; aarch64-linux = { - BINARY = "64"; + BINARY = 64; TARGET = setTarget "ARMV8"; - DYNAMIC_ARCH = "1"; - CC = "gcc"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; i686-linux = { - BINARY = "32"; + BINARY = 32; TARGET = setTarget "P2"; - DYNAMIC_ARCH = "1"; - CC = "gcc"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; x86_64-darwin = { - BINARY = "64"; + BINARY = 64; TARGET = setTarget "ATHLON"; - DYNAMIC_ARCH = "1"; - # Note that clang is available through the stdenv on OSX and - # thus is not an explicit dependency. - CC = "clang"; - USE_OPENMP = "0"; + DYNAMIC_ARCH = true; + USE_OPENMP = false; MACOSX_DEPLOYMENT_TARGET = "10.7"; }; x86_64-linux = { - BINARY = "64"; + BINARY = 64; TARGET = setTarget "ATHLON"; - DYNAMIC_ARCH = "1"; - CC = "gcc"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; }; in @@ -85,25 +77,16 @@ let in stdenv.mkDerivation rec { name = "openblas-${version}"; - version = "0.3.4"; + version = "0.3.5"; src = fetchFromGitHub { owner = "xianyi"; repo = "OpenBLAS"; rev = "v${version}"; - sha256 = "1jdq4msfyg13pdmwwfqpixf4fshss68qzls820lmn0i6y7h4aix3"; + sha256 = "0hwfplr6ciqjvfqkya5vz92z2rx8bhdg5mkh923z246ylhs6d94k"; }; inherit blas64; - patches = [ - # Fixes build on x86_64-darwin. See: - # https://github.com/xianyi/OpenBLAS/issues/1926 - (fetchpatch { - url = https://github.com/xianyi/OpenBLAS/commit/701ea88347461e4c5d896765438dc870281b3834.patch; - sha256 = "18rcfgkjsijl9d2510jn961wqvz7zdlz2fgy1yjmax29kvv8fqd9"; - }) - ]; - # Some hardening features are disabled due to sporadic failures in # OpenBLAS-based programs. The problem may not be with OpenBLAS itself, but # with how these flags interact with hardening measures used downstream. @@ -119,19 +102,26 @@ stdenv.mkDerivation rec { "relro" "bindnow" ]; - nativeBuildInputs = - [gfortran perl which] - ++ optionals stdenv.isDarwin [coreutils]; - - makeFlags = - [ - "FC=gfortran" - ''PREFIX="''$(out)"'' - "NUM_THREADS=64" - "INTERFACE64=${if blas64 then "1" else "0"}" - "NO_STATIC=1" - ] ++ stdenv.lib.optional (stdenv.hostPlatform.libc == "musl") "NO_AFFINITY=1" - ++ mapAttrsToList (var: val: var + "=" + val) config; + nativeBuildInputs = [ + perl + which + buildPackages.gfortran + buildPackages.stdenv.cc + ] ++ optionals stdenv.isDarwin [ + coreutils + ]; + + makeFlags = mapAttrsToList (var: val: "${var}=${toString val}") (config // { + FC = "${stdenv.cc.targetPrefix}gfortran"; + CC = "${stdenv.cc.targetPrefix}cc"; + PREFIX = placeholder "out"; + NUM_THREADS = 64; + INTERFACE64 = blas64; + NO_STATIC = true; + CROSS = stdenv.hostPlatform != stdenv.buildPlatform; + HOSTCC = "${buildPackages.stdenv.cc.targetPrefix}cc"; + NO_BINARY_MODE = stdenv.hostPlatform != stdenv.buildPlatform; + }); doCheck = true; checkTarget = "tests"; |