about summary refs log tree commit diff
path: root/nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix')
-rw-r--r--nixpkgs/pkgs/development/libraries/science/math/mkl/default.nix96
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=";
   };
 })