79 lines
1.8 KiB
Nix
79 lines
1.8 KiB
Nix
{ stdenv
|
|
, requireFile
|
|
, rpmextract
|
|
, libfabric
|
|
, patchelf
|
|
, enableDebug ? false
|
|
}:
|
|
|
|
stdenv.mkDerivation rec {
|
|
name = "intel-mpi-${version}";
|
|
version = "2019.7.217";
|
|
|
|
lib_variant = (if enableDebug then "debug" else "release");
|
|
|
|
src = requireFile {
|
|
name = "l_mpi_2019.7.217.tgz";
|
|
sha256 = "01wwmiqff5lad7cdi8i57bs3kiphpjfv52sxll1w0jpq4c03nf4h";
|
|
message = ''
|
|
The package with Intel MPI cannot be redistributed freely, so you must do it
|
|
manually. Go to:
|
|
|
|
https://software.intel.com/content/www/us/en/develop/tools/mpi-library.html
|
|
|
|
And register in order to download Intel MPI (is free of charge). Then you will
|
|
be allowed to download it. Copy the url and use:
|
|
|
|
nix-prefetch-url http://registrationcenter-download.intel.com/...../l_mpi_2019.7.217.tgz
|
|
|
|
To add it to the store. Then try again building this derivation.
|
|
'';
|
|
};
|
|
|
|
buildInputs = [
|
|
rpmextract
|
|
libfabric
|
|
patchelf
|
|
];
|
|
|
|
postUnpack = ''
|
|
pushd $sourceRoot
|
|
rpmextract rpm/intel-mpi-*.rpm
|
|
popd
|
|
'';
|
|
|
|
patches = [
|
|
./mpicc.patch
|
|
./mpicxx.patch
|
|
];
|
|
|
|
postPatch = ''
|
|
for i in bin/mpi* ; do
|
|
sed -i "s:I_MPI_SUBSTITUTE_INSTALLDIR:$out:g" $i
|
|
done
|
|
'';
|
|
|
|
dontBuild = true;
|
|
|
|
installPhase = ''
|
|
cd opt/intel/compilers_and_libraries_2020.1.217/linux/mpi/intel64
|
|
mkdir -p $out
|
|
mv etc $out
|
|
mv bin $out
|
|
mv include $out
|
|
mkdir $out/lib
|
|
cp -a lib/lib* $out/lib
|
|
cp -a lib/${lib_variant}_mt/lib* $out/lib
|
|
'';
|
|
|
|
preFixup = ''
|
|
find $out/bin -type f -executable -exec \
|
|
patchelf \
|
|
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
|
'{}' \;
|
|
|
|
find $out/lib -name '*.so' -exec \
|
|
patchelf --set-rpath "$out/lib:${stdenv.cc}/lib:${stdenv.glibc}/lib:${libfabric}/lib" '{}' \;
|
|
'';
|
|
}
|