commit:     2f5e92ccad73395c0aae63cbad530c64e4d7eb9a
Author:     Mo Zhou <cdluminate <AT> gmail <DOT> com>
AuthorDate: Tue Jul  9 12:08:35 2019 +0000
Commit:     Benda XU <heroxbd <AT> gentoo <DOT> org>
CommitDate: Tue Jul  9 15:44:15 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=2f5e92cc

sci-libs/mkl-rt: Intel MKL runtime libraries with eselect-ldso mechanism.

Closes: https://bugs.gentoo.org/672466
Closes: https://github.com/gentoo/gentoo/pull/12405

Signed-off-by: Mo Zhou <cdluminate <AT> gmail.com>
Signed-off-by: Benda Xu <heroxbd <AT> gentoo.org>

 sci-libs/mkl-rt/Manifest                 |  1 +
 sci-libs/mkl-rt/metadata.xml             | 25 ++++++++++
 sci-libs/mkl-rt/mkl-rt-2019.4.243.ebuild | 81 ++++++++++++++++++++++++++++++++
 3 files changed, 107 insertions(+)

diff --git a/sci-libs/mkl-rt/Manifest b/sci-libs/mkl-rt/Manifest
new file mode 100644
index 00000000000..ee38f0cec31
--- /dev/null
+++ b/sci-libs/mkl-rt/Manifest
@@ -0,0 +1 @@
+DIST mkl-rt-2019.4.243.tar.bz2 213996111 BLAKE2B 
04c04cd521d73b9c51341f60e69f41e3093403dcace370f2379db2cbceadcd3d64f6c06b25f8ffcbec31edbf0f0a46a9e454450e7f282cf91436093e770ea207
 SHA512 
a1f33806de2e1437cd3c1de088cbf117a5a3c41cf5f0003f680385d51c793d745229ec8fbd6587f03acfd25b7973912fdffbc0cf1f2360063edf2f4b0df0aa9d

diff --git a/sci-libs/mkl-rt/metadata.xml b/sci-libs/mkl-rt/metadata.xml
new file mode 100644
index 00000000000..9798851ed06
--- /dev/null
+++ b/sci-libs/mkl-rt/metadata.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
+<pkgmetadata>
+
+  <upstream>
+    <doc>https://software.intel.com/en-us/mkl</doc>
+  </upstream>
+
+  <maintainer type="person">
+    <name>Mo Zhou</name>
+    <email>lu...@debian.org</email>
+  </maintainer>
+
+  <longdescription>
+    Intel® Math Kernel Library (Intel® MKL) optimizes code with minimal
+    effort for future generations of Intel® processors. It is compatible
+    with your choice of compilers, languages, operating systems, and
+    linking and threading models.
+  </longdescription>
+
+  <use>
+    <flag name="eselect-ldso">Enable runtime library switching by eselect and 
ld.so.</flag>
+  </use>
+
+</pkgmetadata>

diff --git a/sci-libs/mkl-rt/mkl-rt-2019.4.243.ebuild 
b/sci-libs/mkl-rt/mkl-rt-2019.4.243.ebuild
new file mode 100644
index 00000000000..5d2b0f31b25
--- /dev/null
+++ b/sci-libs/mkl-rt/mkl-rt-2019.4.243.ebuild
@@ -0,0 +1,81 @@
+# Copyright 2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+inherit eutils
+
+DESCRIPTION="Intel Math Kernel Library (Runtime)"
+HOMEPAGE="https://software.intel.com/en-us/mkl";
+SRC_URI="https://repo.continuum.io/pkgs/main/linux-64/mkl-2019.4-243.tar.bz2 
-> ${P}.tar.bz2"
+
+LICENSE="ISSL" # https://software.intel.com/en-us/mkl/license-faq
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="eselect-ldso"
+
+# MKL uses Intel/LLVM OpenMP by default.
+# One can change the threadding layer to "gnu" or "tbb" through the 
MKL_THREADING_LAYER env var.
+RDEPEND="
+eselect-ldso? ( !app-eselect/eselect-cblas
+       >=app-eselect/eselect-blas-0.2 )
+sys-libs/libomp"
+
+DEPEND=""
+
+S=${WORKDIR}
+
+src_install () {
+       insinto  /usr/$(get_libdir)/
+       doins lib/*.so
+
+       if use eselect-ldso; then
+               dodir /usr/$(get_libdir)/blas/mkl-rt
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/blas/mkl-rt/libblas.so
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/blas/mkl-rt/libblas.so.3
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/blas/mkl-rt/libcblas.so
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/blas/mkl-rt/libcblas.so.3
+               dosym ../../libomp.so    
usr/$(get_libdir)/blas/mkl-rt/libiomp5.so
+               dodir /usr/$(get_libdir)/lapack/mkl-rt
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/lapack/mkl-rt/liblapack.so
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/lapack/mkl-rt/liblapack.so.3
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/lapack/mkl-rt/liblapacke.so
+               dosym ../../libmkl_rt.so 
usr/$(get_libdir)/lapack/mkl-rt/liblapacke.so.3
+               dosym ../../libomp.so    
usr/$(get_libdir)/lapack/mkl-rt/libiomp5.so
+       fi
+}
+
+pkg_postinst () {
+       use eselect-ldso || return
+       local libdir=$(get_libdir) me="mkl-rt"
+
+       # check blas
+       eselect blas add ${libdir} "${EROOT}"/usr/${libdir}/blas/${me} ${me}
+       local current_blas=$(eselect blas show ${libdir} | cut -d' ' -f2)
+       if [[ ${current_blas} == "${me}" || -z ${current_blas} ]]; then
+               eselect blas set ${libdir} ${me}
+               elog "Current eselect: BLAS/CBLAS ($libdir) -> 
[${current_blas}]."
+       else
+               elog "Current eselect: BLAS/CBLAS ($libdir) -> 
[${current_blas}]."
+               elog "To use blas [${me}] implementation, you have to issue (as 
root):"
+               elog "\t eselect blas set ${libdir} ${me}"
+       fi
+
+       # check lapack
+       eselect lapack add ${libdir} "${EROOT}"/usr/${libdir}/lapack/${me} ${me}
+       local current_lapack=$(eselect lapack show ${libdir} | cut -d' ' -f2)
+       if [[ ${current_lapack} == "${me}" || -z ${current_lapack} ]]; then
+               eselect lapack set ${libdir} ${me}
+               elog "Current eselect: LAPACK ($libdir) -> [${current_blas}]."
+       else
+               elog "Current eselect: LAPACK ($libdir) -> [${current_blas}]."
+               elog "To use lapack [${me}] implementation, you have to issue 
(as root):"
+               elog "\t eselect lapack set ${libdir} ${me}"
+       fi
+}
+
+pkg_postrm () {
+       if use eselect-ldso; then
+               eselect blas validate
+               eselect lapack validate
+       fi
+}

Reply via email to