From d5e8851f6f931d733a4c397b11e69a43dd49af9e Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Fri, 28 Apr 2023 22:21:57 +0300 Subject: [PATCH 1/3] mkl: darwin: 2019.3 -> 2023.1.0 --- .../libraries/science/math/mkl/default.nix | 69 +++++++------------ 1 file changed, 24 insertions(+), 45 deletions(-) diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix index d6bc1050c5c5..a3399a8a7314 100644 --- a/pkgs/development/libraries/science/math/mkl/default.nix +++ b/pkgs/development/libraries/science/math/mkl/default.nix @@ -4,7 +4,7 @@ , stdenvNoCC , fetchurl , rpmextract -, undmg +, _7zz , darwin , validatePkgConfig , enableStatic ? stdenv.hostPlatform.isStatic @@ -19,17 +19,15 @@ 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 "2023.0.0"; - rel = if stdenvNoCC.isDarwin then "199" else "25398"; + mklVersion = if stdenvNoCC.isDarwin then "2023.1.0" else "2023.0.0"; + rel = if stdenvNoCC.isDarwin then "43558" else "25398"; # Intel openmp uses its own versioning. - openmpVersion = if stdenvNoCC.isDarwin then "19.0.3" else "2023.0.0"; + openmpVersion = if stdenvNoCC.isDarwin then "2023.1.0" else "2023.0.0"; openmpRel = "25370"; # Thread Building Blocks release. - tbbVersion = if stdenvNoCC.isDarwin then "2019.3" else "2021.8.0"; + tbbVersion = if stdenvNoCC.isDarwin then "2021.9.0" else "2021.8.0"; tbbRel = "25334"; shlibExt = stdenvNoCC.hostPlatform.extensions.sharedLibrary; @@ -70,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} @@ -89,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=/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 \ @@ -133,9 +112,9 @@ in stdenvNoCC.mkDerivation ({ # Dynamic libraries mkdir -p $out/lib - cp -a opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so* $out/lib - cp -a opt/intel/oneapi/compiler/${mklVersion}/linux/compiler/lib/intel64_lin/*.so* $out/lib - cp -a opt/intel/oneapi/tbb/${tbbVersion}/lib/intel64/gcc4.8/*.so* $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/ @@ -144,10 +123,10 @@ in stdenvNoCC.mkDerivation ({ 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 opt/intel/oneapi/mkl/${mklVersion}/lib/${lib.optionalString stdenvNoCC.isLinux "intel64"}/*.a install -Dm0644 -t $out/lib/pkgconfig opt/intel/oneapi/mkl/${mklVersion}/tools/pkgconfig/*.pc '' else '' - cp opt/intel/oneapi/mkl/${mklVersion}/lib/intel64/*.so* $out/lib + 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 @@ -170,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 @@ -201,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="; }; }) From 0b863fe2dfb277b3995e53822e471fe54318329c Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Fri, 28 Apr 2023 23:53:24 +0300 Subject: [PATCH 2/3] mkl: linux: 2023.0.0 -> 2023.1.0 --- .../libraries/science/math/mkl/default.nix | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pkgs/development/libraries/science/math/mkl/default.nix b/pkgs/development/libraries/science/math/mkl/default.nix index a3399a8a7314..890605444999 100644 --- a/pkgs/development/libraries/science/math/mkl/default.nix +++ b/pkgs/development/libraries/science/math/mkl/default.nix @@ -19,47 +19,47 @@ let # https://registrationcenter.intel.com/en/products/ version = "${mklVersion}.${rel}"; - mklVersion = if stdenvNoCC.isDarwin then "2023.1.0" else "2023.0.0"; - rel = if stdenvNoCC.isDarwin then "43558" else "25398"; + mklVersion = "2023.1.0"; + rel = if stdenvNoCC.isDarwin then "43558" else "46342"; # Intel openmp uses its own versioning. - openmpVersion = if stdenvNoCC.isDarwin then "2023.1.0" else "2023.0.0"; - openmpRel = "25370"; + openmpVersion = "2023.1.0"; + openmpRel = "46305"; # Thread Building Blocks release. - tbbVersion = if stdenvNoCC.isDarwin then "2021.9.0" else "2021.8.0"; - tbbRel = "25334"; + 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-fiL5TDmQHB+OQb1ERcoDQFpUutpsPe+AqIbMoa85nEk="; + 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-AFayUxybi48SgR2mX6mxkNECconIXm1/TWelvE4aqX0="; + 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-riyIO2xWuvTSzfXgB+K6NSKqWLRmxKSnGZaH5nYTYPk="; + 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-2IK0t47FaPNp7Oq9LJ5ZdLmlFFjQluWrh+nhvi8MCd8="; + 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-grzVFWqt3Vpwb5K3Bur+sJz8pdKxZ4ISJXF5YAPrwmk="; + hash = "sha256-1SlkI01DxFvwGPBJ73phs86ka0SmCrniwiXQ9DJwIXw="; }; oneapi-tbb = fetchurl { url = "https://yum.repos.intel.com/oneapi/intel-oneapi-tbb-${tbbVersion}-${tbbVersion}-${tbbRel}.x86_64.rpm"; - hash = "sha256-8hIoRfV36XVElKCqP9UmCkjLCs3l0ZKCHxg+yxNIHc0="; + hash = "sha256-wIktdf1p1SS1KrnUlc8LPkm0r9dhZE6cQNr4ZKTWI6A="; }; in stdenvNoCC.mkDerivation ({ From 23b63e1fef9495a8c7cc0ba77593573911af17d3 Mon Sep 17 00:00:00 2001 From: Weijia Wang <9713184+wegank@users.noreply.github.com> Date: Sat, 29 Apr 2023 00:10:19 +0300 Subject: [PATCH 3/3] febio: fix build --- pkgs/development/libraries/febio/default.nix | 8 +++++++- pkgs/development/libraries/febio/fix-cmake.patch | 4 ++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/pkgs/development/libraries/febio/default.nix b/pkgs/development/libraries/febio/default.nix index 4d01bf52bf73..d0c54b8b157d 100644 --- a/pkgs/development/libraries/febio/default.nix +++ b/pkgs/development/libraries/febio/default.nix @@ -1,5 +1,6 @@ { lib, stdenv, fetchFromGitHub, cmake, boost, eigen, libxml2, mpi, python3 , mklSupport ? true, mkl +, substituteAll }: stdenv.mkDerivation rec { @@ -14,13 +15,18 @@ stdenv.mkDerivation rec { }; patches = [ - ./fix-cmake.patch # cannot find mkl libraries without this + (substituteAll { + src = ./fix-cmake.patch; # cannot find mkl libraries without this + so = stdenv.hostPlatform.extensions.sharedLibrary; + }) ]; cmakeFlags = lib.optional mklSupport "-DUSE_MKL=On" ++ lib.optional mklSupport "-DMKLROOT=${mkl}" ; + env.CXXFLAGS = lib.optionalString stdenv.isLinux "-include cstring"; + installPhase = '' runHook preInstall diff --git a/pkgs/development/libraries/febio/fix-cmake.patch b/pkgs/development/libraries/febio/fix-cmake.patch index 5af10a0b3962..456179ca8364 100644 --- a/pkgs/development/libraries/febio/fix-cmake.patch +++ b/pkgs/development/libraries/febio/fix-cmake.patch @@ -5,7 +5,7 @@ PATHS ${${libDir}} NO_DEFAULT_PATH) else() - find_library(TEMP NAMES lib${libName}.a lib${ARGV3}.a lib${ARGV4}.a lib${ARGV5}.a lib${ARGV6}.a -+ find_library(TEMP NAMES lib${libName}.a lib${ARGV3}.a lib${ARGV4}.a lib${ARGV5}.a lib${ARGV6}.a lib${libName}.so lib${ARGV3}.so lib${ARGV4}.so lib${ARGV5}.so lib${ARGV6}.so ++ find_library(TEMP NAMES lib${libName}.a lib${ARGV3}.a lib${ARGV4}.a lib${ARGV5}.a lib${ARGV6}.a lib${libName}@so@ lib${ARGV3}@so@ lib${ARGV4}@so@ lib${ARGV5}@so@ lib${ARGV6}@so@ PATHS ${${libDir}} NO_DEFAULT_PATH) endif() @@ -19,7 +19,7 @@ index 2d644005f..7261ba923 100644 find_library(MKL_OMP_LIB - NAMES iomp5 iomp5md libiomp5md.lib - PATHS ${MKLROOT}/../lib ${MKLROOT}/../compiler/lib -+ NAMES libiomp5.so libiomp5 iomp5 iomp5md libiomp5md.lib ++ NAMES libiomp5@so@ libiomp5 iomp5 iomp5md libiomp5md.lib + PATHS ${MKLROOT}/lib ${MKLROOT}/../lib ${MKLROOT}/../compiler/lib PATH_SUFFIXES "intel64" "intel32" NO_DEFAULT_PATH