From 1f0467005dd43c3c0f57c87da1c298aed7ea8b46 Mon Sep 17 00:00:00 2001 From: Will Dietz Date: Tue, 15 Jan 2019 09:36:07 -0600 Subject: [PATCH] openblas: 0.3.4 -> 0.3.5, rework a bit (#53972) * openblas: simplify a bit, fix doCheck so tests are enabled non-cross. * doCheck should be 'true' in (at least) the non-cross case, this looks like an inverted check that's largely benign * doCheck will be set to 'false' in the cross case anyway, makeDerivation does this IIRC * targetPrefix can be used without checking, probably by design Derivation hash does change but no "real" functionality change intended. * openblas: nix types for config attrs (hash-preserving) * openblas: more nix-ification, merge in cross attrs, prefer to always set (but set appropriately for cross and non-cross cases both) * I'm not sure what NO_BINARY_MODE does, this change now sets explicitly false in the non-cross scenario (previously unset unless cross). * Drop musl NO_AFFINITY case, will be removed in upgrade shortly * openblas: 0.3.4 -> 0.3.5 --- .../science/math/openblas/default.nix | 74 ++++++++----------- 1 file changed, 32 insertions(+), 42 deletions(-) diff --git a/pkgs/development/libraries/science/math/openblas/default.nix b/pkgs/development/libraries/science/math/openblas/default.nix index e4c05896125e..3d516fb5d9dd 100644 --- a/pkgs/development/libraries/science/math/openblas/default.nix +++ b/pkgs/development/libraries/science/math/openblas/default.nix @@ -14,46 +14,46 @@ let # To add support for a new platform, add an element to this set. configs = { armv6l-linux = { - BINARY = "32"; + BINARY = 32; TARGET = "ARMV6"; - DYNAMIC_ARCH = "0"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = false; + USE_OPENMP = true; }; armv7l-linux = { - BINARY = "32"; + BINARY = 32; TARGET = "ARMV7"; - DYNAMIC_ARCH = "0"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = false; + USE_OPENMP = true; }; aarch64-linux = { - BINARY = "64"; + BINARY = 64; TARGET = "ARMV8"; - DYNAMIC_ARCH = "1"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; i686-linux = { - BINARY = "32"; + BINARY = 32; TARGET = "P2"; - DYNAMIC_ARCH = "1"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; x86_64-darwin = { - BINARY = "64"; + BINARY = 64; TARGET = "ATHLON"; - DYNAMIC_ARCH = "1"; - USE_OPENMP = "0"; + DYNAMIC_ARCH = true; + USE_OPENMP = false; MACOSX_DEPLOYMENT_TARGET = "10.7"; }; x86_64-linux = { - BINARY = "64"; + BINARY = 64; TARGET = "ATHLON"; - DYNAMIC_ARCH = "1"; - USE_OPENMP = "1"; + DYNAMIC_ARCH = true; + USE_OPENMP = true; }; }; in @@ -72,25 +72,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. @@ -115,20 +106,19 @@ stdenv.mkDerivation rec { coreutils ]; - makeFlags = - [ - "FC=${optionalString (stdenv.hostPlatform != stdenv.buildPlatform) stdenv.cc.targetPrefix}gfortran" - "CC=${optionalString (stdenv.hostPlatform != stdenv.buildPlatform) stdenv.cc.targetPrefix}cc" - ''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" - ++ stdenv.lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "NO_BINARY_MODE=1" "HOSTCC=cc" "CROSS=1" ] - ++ mapAttrsToList (var: val: var + "=" + val) config; + 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 = stdenv.hostPlatform != stdenv.buildPlatform; + doCheck = true; checkTarget = "tests"; postInstall = ''