diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix | 96 |
1 files changed, 40 insertions, 56 deletions
diff --git a/nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix b/nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix index dc68abe38c36..585f4c3a14e3 100644 --- a/nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix +++ b/nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix @@ -4,7 +4,7 @@ , stdenvNoCC , fetchurl , rpmextract -, undmg +, _7zz , darwin , validatePkgConfig , enableStatic ? stdenv.hostPlatform.isStatic @@ -19,48 +19,47 @@ let # https://registrationcenter.intel.com/en/products/ version = "${mklVersion}.${rel}"; - # Darwin is pinned to 2019.3 because the DMG does not unpack; see here for details: - # https://github.com/matthewbauer/undmg/issues/4 - mklVersion = if stdenvNoCC.isDarwin then "2019.3" else "2021.1.1"; - rel = if stdenvNoCC.isDarwin then "199" else "52"; + mklVersion = "2023.1.0"; + rel = if stdenvNoCC.isDarwin then "43558" else "46342"; # Intel openmp uses its own versioning. - openmpVersion = if stdenvNoCC.isDarwin then "19.0.3" else "19.1.3"; - openmpRel = "189"; + openmpVersion = "2023.1.0"; + openmpRel = "46305"; # Thread Building Blocks release. - tbbRel = "119"; + tbbVersion = "2021.9.0"; + tbbRel = "43484"; shlibExt = stdenvNoCC.hostPlatform.extensions.sharedLibrary; oneapi-mkl = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-${mklVersion}-${mklVersion}-${rel}.x86_64.rpm"; - hash = "sha256-G2Y7iX3UN2YUJhxcMM2KmhONf0ls9owpGlOo8hHOfqA="; + hash = "sha256-BeI5zB0rrE6C21dezNc7/WSKmTWpjsZbpg0/y0Y87VQ="; }; oneapi-mkl-common = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-common-${mklVersion}-${mklVersion}-${rel}.noarch.rpm"; - hash = "sha256-HrMt2OcPIRxM8EL8SPjYTyuHJnC7RhPFUrvLhRH+7vc="; + hash = "sha256-NjIqTeFppwjXFlPYHPHfZa/bWBiHJru3atC4fIMXN0w="; }; oneapi-mkl-common-devel = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-common-devel-${mklVersion}-${mklVersion}-${rel}.noarch.rpm"; - hash = "sha256-XDE2WFJzEcpujFmO2AvqQdipZMvKB6/G+ksBe2sE438="; + hash = "sha256-GX19dlvBWRgwSOCmWcEOrnbmp4S2j0448fWpx+iPVWw="; }; oneapi-mkl-devel = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-mkl-devel-${mklVersion}-${mklVersion}-${rel}.x86_64.rpm"; - hash = "sha256-GhUJZ0Vr/ZXp10maie29/5ryU7zzX3F++wRCuuFcE0s="; + hash = "sha256-F4XxtSPAjNaShEL/l44jJK+JdOOkYI19X/njRB6FkNw="; }; oneapi-openmp = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-openmp-${mklVersion}-${mklVersion}-${openmpRel}.x86_64.rpm"; - hash = "sha256-yP2c4aQAFNRffjLoIZgWXLcNXbiez8smsgu2wXitefU="; + hash = "sha256-1SlkI01DxFvwGPBJ73phs86ka0SmCrniwiXQ9DJwIXw="; }; oneapi-tbb = fetchurl { - url = "https://yum.repos.intel.com/oneapi/intel-oneapi-tbb-${mklVersion}-${mklVersion}-${tbbRel}.x86_64.rpm"; - hash = "sha256-K1BvhGoGVU2Zwy5vg2ZvJWBrSdh5uQwo0znt5039X0A="; + url = "https://yum.repos.intel.com/oneapi/intel-oneapi-tbb-${tbbVersion}-${tbbVersion}-${tbbRel}.x86_64.rpm"; + hash = "sha256-wIktdf1p1SS1KrnUlc8LPkm0r9dhZE6cQNr4ZKTWI6A="; }; in stdenvNoCC.mkDerivation ({ @@ -69,16 +68,22 @@ in stdenvNoCC.mkDerivation ({ dontUnpack = stdenvNoCC.isLinux; + unpackPhase = if stdenvNoCC.isDarwin then '' + 7zz x $src + '' else null; + nativeBuildInputs = [ validatePkgConfig ] ++ (if stdenvNoCC.isDarwin then - [ undmg darwin.cctools ] + [ _7zz darwin.cctools ] else [ rpmextract ]); buildPhase = if stdenvNoCC.isDarwin then '' - for f in Contents/Resources/pkg/*.tgz; do - tar xzvf $f + for f in bootstrapper.app/Contents/Resources/packages/*/cupPayload.cup; do + tar -xf $f done + mkdir -p opt/intel + mv _installdir opt/intel/oneapi '' else '' rpmextract ${oneapi-mkl} rpmextract ${oneapi-mkl-common} @@ -88,32 +93,7 @@ in stdenvNoCC.mkDerivation ({ rpmextract ${oneapi-tbb} ''; - installPhase = if stdenvNoCC.isDarwin then '' - for f in $(find . -name 'mkl*.pc') ; do - bn=$(basename $f) - substituteInPlace $f \ - --replace "prefix=<INSTALLDIR>/mkl" "prefix=$out" \ - --replace $\{MKLROOT} "$out" \ - --replace "lib/intel64_lin" "lib" \ - --replace "lib/intel64" "lib" - done - for f in $(find opt/intel -name 'mkl*iomp.pc') ; do - substituteInPlace $f \ - --replace "../compiler/lib" "lib" - done - - mkdir -p $out/lib - - cp -r compilers_and_libraries_${version}/mac/mkl/include $out/ - - cp -r compilers_and_libraries_${version}/licensing/mkl/en/license.txt $out/lib/ - cp -r compilers_and_libraries_${version}/mac/compiler/lib/* $out/lib/ - cp -r compilers_and_libraries_${version}/mac/mkl/lib/* $out/lib/ - cp -r compilers_and_libraries_${version}/mac/tbb/lib/* $out/lib/ - - mkdir -p $out/lib/pkgconfig - cp -r compilers_and_libraries_${version}/mac/mkl/bin/pkgconfig/* $out/lib/pkgconfig - '' else '' + installPhase = '' for f in $(find . -name 'mkl*.pc') ; do bn=$(basename $f) substituteInPlace $f \ @@ -128,22 +108,26 @@ in stdenvNoCC.mkDerivation ({ done # License - install -Dm0655 -t $out/share/doc/mkl opt/intel/oneapi/mkl/2021.1.1/licensing/en/license.txt + install -Dm0655 -t $out/share/doc/mkl opt/intel/oneapi/mkl/${mklVersion}/licensing/license.txt # Dynamic libraries - install -Dm0755 -t $out/lib opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so* - install -Dm0755 -t $out/lib opt/intel/oneapi/compiler/2021.1.1/linux/compiler/lib/intel64_lin/*.so* - install -Dm0755 -t $out/lib opt/intel/oneapi/tbb/2021.1.1/lib/intel64/gcc4.8/*.so* + mkdir -p $out/lib + cp -a opt/intel/oneapi/mkl/${mklVersion}/lib/${lib.optionalString stdenvNoCC.isLinux "intel64"}/*${shlibExt}* $out/lib + cp -a opt/intel/oneapi/compiler/${mklVersion}/${if stdenvNoCC.isDarwin then "mac" else "linux"}/compiler/lib/${lib.optionalString stdenvNoCC.isLinux "intel64_lin"}/*${shlibExt}* $out/lib + cp -a opt/intel/oneapi/tbb/${tbbVersion}/lib/${lib.optionalString stdenvNoCC.isLinux "intel64/gcc4.8"}/*${shlibExt}* $out/lib # Headers cp -r opt/intel/oneapi/mkl/${mklVersion}/include $out/ + + # CMake config + cp -r opt/intel/oneapi/mkl/${mklVersion}/lib/cmake $out/lib '' + (if enableStatic then '' - install -Dm0644 -t $out/lib opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.a - install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/2021.1.1/tools/pkgconfig/*.pc + install -Dm0644 -t $out/lib opt/intel/oneapi/mkl/${mklVersion}/lib/${lib.optionalString stdenvNoCC.isLinux "intel64"}/*.a + install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/${mklVersion}/lib/pkgconfig/*.pc '' else '' - cp opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so* $out/lib - install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/2021.1.1/tools/pkgconfig/*dynamic*.pc + cp opt/intel/oneapi/mkl/${mklVersion}/lib/${lib.optionalString stdenvNoCC.isLinux "intel64"}/*${shlibExt}* $out/lib + install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/${mklVersion}/lib/pkgconfig/*dynamic*.pc '') + '' # Setup symlinks for blas / lapack ln -s $out/lib/libmkl_rt${shlibExt} $out/lib/libblas${shlibExt} @@ -165,8 +149,8 @@ in stdenvNoCC.mkDerivation ({ install_name_tool -id $out/lib/$(basename $f) $f || true done install_name_tool -change @rpath/libiomp5.dylib $out/lib/libiomp5.dylib $out/lib/libmkl_intel_thread.dylib - install_name_tool -change @rpath/libtbb.dylib $out/lib/libtbb.dylib $out/lib/libmkl_tbb_thread.dylib - install_name_tool -change @rpath/libtbbmalloc.dylib $out/lib/libtbbmalloc.dylib $out/lib/libtbbmalloc_proxy.dylib + install_name_tool -change @rpath/libtbb.12.dylib $out/lib/libtbb.12.dylib $out/lib/libmkl_tbb_thread.dylib + install_name_tool -change @rpath/libtbbmalloc.2.dylib $out/lib/libtbbmalloc.2.dylib $out/lib/libtbbmalloc_proxy.dylib ''; # Per license agreement, do not modify the binary @@ -196,7 +180,7 @@ in stdenvNoCC.mkDerivation ({ }; } // lib.optionalAttrs stdenvNoCC.isDarwin { src = fetchurl { - url = "http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/15235/m_mkl_${version}.dmg"; - sha256 = "14b3ciz7995sqcd6jz7hc8g2x4zwvqxmgxgni46vrlb7n523l62f"; + url = "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/087a9190-9d96-4b8c-bd2f-79159572ed89/m_onemkl_p_${mklVersion}.${rel}_offline.dmg"; + hash = "sha256-bUaaJPSaLr60fw0DzDCjPvY/UucHlLbCSLyQxyiAi04="; }; }) |