diff options
author | Aisha Tammy <gentoo@aisha.cc> | 2020-11-05 13:47:11 +0000 |
---|---|---|
committer | Benda Xu <heroxbd@gentoo.org> | 2020-11-09 15:38:13 +0800 |
commit | 56846e03ed7c84387775b9ef6b99f8fdf65add10 (patch) | |
tree | b243a35f3fdfe97d55cee9b268480240592dec51 /sci-libs/mkl | |
parent | x11-misc/shutter: stabilize 0.94.3_p20200621 on amd64 (diff) | |
download | gentoo-56846e03ed7c84387775b9ef6b99f8fdf65add10.tar.gz gentoo-56846e03ed7c84387775b9ef6b99f8fdf65add10.tar.bz2 gentoo-56846e03ed7c84387775b9ef6b99f8fdf65add10.zip |
sci-libs/mkl: version bump to 2020.4.304
Use eselect-ldso mechanism.
Respect Prefix.
Closes: https://bugs.gentoo.org/587338
Closes: https://bugs.gentoo.org/592662
Closes: https://bugs.gentoo.org/747304
Closes: https://bugs.gentoo.org/260810
Closes: https://bugs.gentoo.org/715548
Closes: https://bugs.gentoo.org/719976
Reported-by: Juergen Rose, François Bissey, Florian D., Martin Mokrejš
Reported-by: Michel Lang, juantxorena@gmail.com, Chris Larson, jorge
Package-Manager: Portage-3.0.8, Repoman-3.0.1
Signed-off-by: Aisha Tammy <gentoo@aisha.cc>
Signed-off-by: Benda Xu <heroxbd@gentoo.org>
Diffstat (limited to 'sci-libs/mkl')
-rw-r--r-- | sci-libs/mkl/Manifest | 1 | ||||
-rw-r--r-- | sci-libs/mkl/mkl-2020.4.304.ebuild | 230 |
2 files changed, 231 insertions, 0 deletions
diff --git a/sci-libs/mkl/Manifest b/sci-libs/mkl/Manifest index 015a339f3b95..78d062bccf51 100644 --- a/sci-libs/mkl/Manifest +++ b/sci-libs/mkl/Manifest @@ -1 +1,2 @@ DIST l_mkl_p_10.0.5.025.tgz 230389719 BLAKE2B 622dd0076c8e6d747f170685b6a378db95aa2453d15a53c93ef863729bb8dc76409d7bf72f8bab8ef9a07d8efe1e448cb9e7fc8e6f0c0b2cbbf0a0f6944e2a86 SHA512 621c3bfdecb57313e375424e391c0630a29efd70196e3e4bfc5b4ddd03aa45fda4761523652d875f2e60d466a0010c06659306b11f20966fba4943c308fa6f84 +DIST mkl-2020.4.304.tar.gz 549319314 BLAKE2B 9ffdb0dc87c9fba1f003961f09cabef7376bd3d10e98085900c863383f0eb1e026f0f804390b2edf4e29d5b0b685af7b74092a7cb5cc871ca656462cec9487e4 SHA512 9c4ff7710484a1c0dd3e6ba7401eb6cb599f771651006b6a570c45b9abf1f43e8e400940d859a656c6892aa81e634c4d74eefe88e8287fdbb19a513f332326b7 diff --git a/sci-libs/mkl/mkl-2020.4.304.ebuild b/sci-libs/mkl/mkl-2020.4.304.ebuild new file mode 100644 index 000000000000..ed552ffeb603 --- /dev/null +++ b/sci-libs/mkl/mkl-2020.4.304.ebuild @@ -0,0 +1,230 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +MULTILIB_COMPAT=( abi_x86_{32,64} ) +inherit multilib-build + +MAGIC=16917 # from registration center +MY_P=${P/-/_} # mkl_2020.4.304 +MY_PV=$(ver_rs 2 '-') # 2020.4-304 + +DESCRIPTION="Intel Math Kernel Library" +HOMEPAGE="https://software.intel.com/en-us/intel-mkl" +SRC_URI="http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/${MAGIC}/l_${MY_P}.tgz -> ${P}.tar.gz" +S="${WORKDIR}"/l_${MY_P} + +LICENSE="ISSL" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="static-libs" +RESTRICT="strip" + +# 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=" + app-eselect/eselect-blas + app-eselect/eselect-lapack + sys-libs/libomp[${MULTILIB_USEDEP}] +" + +QA_PREBUILT="*" +QA_TEXTRELS="*" +QA_SONAME="*" + +# first unpack all rpms +# find folders containing header like, static and dynamic lib files +# these are the only folders we care about +# find "${S}"/rpm -type f \( -name "*.a" -o -name "*.so" -o -wholename "*mkl/include*" \) \ +# | tr '/' ' ' | awk '{ print $2 }' | sort | uniq + +# ignore all conda-* rpms +# ignore all empty rpms +# information about rest: +# +# mkl-core-ps-32bit-2020.3-279-2020.3-279.x86_64.rpm | some prebuilt benchmark executables +# psxe-common-2020.3-111-2020.3-111.noarch.rpm +# comp-l-all-vars-19.1.2-279-19.1.2-279.noarch.rpm +# comp-nomcu-vars-19.1.2-279-19.1.2-279.noarch.rpm +# mkl-cluster-c-2020.3-279-2020.3-279.noarch.rpm +# mkl-cluster-f-2020.3-279-2020.3-279.noarch.rpm +# mkl-doc-2020-2020.3-279.noarch.rpm +# mkl-common-ps-2020.3-279-2020.3-279.noarch.rpm | only contains benchmarks +# compxe-pset-2020.3-111-2020.3-111.noarch.rpm | only contains benchmarks +# mkl-doc-ps-2020-2020.3-279.noarch.rpm +# mkl-common-2020.3-279-2020.3-279.noarch.rpm | setting up environment vars (might be needed for parallel studio) +# mkl-installer-license-2020.3-279-2020.3-279.noarch.rpm | already have license +# mkl-psxe-2020.3-111-2020.3-111.noarch.rpm | useless files +# mkl-common-c-ps-2020.3-279-2020.3-279.noarch.rpm | contained in common-c + +INTEL_DIST_X86_RPMS=( + mkl-core-32bit + mkl-core-rt-32bit + mkl-f95-32bit + mkl-gnu-32bit + mkl-gnu-f-32bit + mkl-gnu-f-rt-32bit + mkl-gnu-rt-32bit + mkl-tbb-32bit + mkl-tbb-rt + intel-openmp-32bit-19.1.3-304-19.1.3-304.x86_64.rpm +) +INTEL_DIST_AMD64_RPMS=( + mkl-cluster + mkl-cluster-rt + mkl-core + mkl-core-ps + mkl-core-rt + mkl-f95 + mkl-gnu + mkl-gnu-f + mkl-gnu-rt + mkl-gnu-f-rt + mkl-pgi + mkl-pgi-rt + mkl-tbb + mkl-tbb-rt + intel-openmp-19.1.3-304-19.1.3-304.x86_64.rpm +) +INTEL_DIST_DAT_RPMS=( + mkl-common-c + mkl-common-f + mkl-f95-common +) + +rpm_dirname() { + local rpm="${1}" suffix="x86_64" + if [[ $# -eq 2 ]]; then + suffix="$2" + fi + if [[ ! ${rpm} =~ "rpm" ]] ; then + rpm="intel-${rpm}-${MY_PV}-${MY_PV}.${suffix}" + fi + printf '%s\n' "${rpm%%.rpm}" +} + +rpm_unpack() { + local rpm="$1" suffix="x86_64" + if [[ $# -eq 2 ]]; then + suffix="$2" + fi + rpm="$(rpm_dirname $rpm $suffix)" + elog "Unpacking - ${rpm}.rpm" + rpmunpack "${rpm}.rpm" || die +} + +src_unpack() { + default + cd "${S}"/rpm + local rpm + for rpm in ${INTEL_DIST_DAT_RPMS[@]}; do + rpm_unpack ${rpm} noarch + done + if use abi_x86_64 ; then + for rpm in ${INTEL_DIST_AMD64_RPMS[@]}; do + rpm_unpack ${rpm} + done + fi + if use abi_x86_32 ; then + for rpm in ${INTEL_DIST_X86_RPMS[@]}; do + rpm_unpack ${rpm} + done + fi +} + +multilib_src_install() { + cd "${S}"/rpm + elog "current variant - ${MULTIBUILD_VARIANT}" + local rpm rpm_list libdir=$(get_libdir) + if [[ ${MULTIBUILD_VARIANT} =~ 'amd64' ]] ; then + rpm_list="${INTEL_DIST_AMD64_RPMS[@]}" + else + rpm_list="${INTEL_DIST_X86_RPMS[@]}" + fi + for rpm in ${rpm_list} ; do + rpm=$(rpm_dirname ${rpm}) + elog "installing libs from - ${rpm}" + local libso liba + for libso in $(find "${S}"/rpm/${rpm} -name "*.so") ; do + dolib.so "${libso}" + done + use static-libs && \ + for liba in $(find "${S}"/rpm/${rpm} -name "*.a") ; do + dolib.a "${liba}" + done + done + + dodir /usr/$(get_libdir)/blas/mkl + dosym ../../libmkl_rt.so usr/$(get_libdir)/blas/mkl/libblas.so + dosym ../../libmkl_rt.so usr/$(get_libdir)/blas/mkl/libblas.so.3 + dosym ../../libmkl_rt.so usr/$(get_libdir)/blas/mkl/libcblas.so + dosym ../../libmkl_rt.so usr/$(get_libdir)/blas/mkl/libcblas.so.3 + dodir /usr/$(get_libdir)/lapack/mkl + dosym ../../libmkl_rt.so usr/$(get_libdir)/lapack/mkl/liblapack.so + dosym ../../libmkl_rt.so usr/$(get_libdir)/lapack/mkl/liblapack.so.3 + dosym ../../libmkl_rt.so usr/$(get_libdir)/lapack/mkl/liblapacke.so + dosym ../../libmkl_rt.so usr/$(get_libdir)/lapack/mkl/liblapacke.so.3 + + # for some reason pkgconfig files are only for amd64 + [[ ${MULTIBUILD_VARIANT} =~ 'amd64' ]] || return + local pc_files=( "${FILESDIR}"/*.pc ) + insinto /usr/$(get_libdir)/pkgconfig + for pc in "${pc_files[@]}" ; do + doins "${pc}" + sed -e "s:@PREFIX@:${EPREFIX}/usr:" \ + -i "${ED}"/usr/$(get_libdir)/pkgconfig/${pc##*/} || die + done +} + +src_install() { + # install bunch of header like files + dodir /usr/include/mkl + for idir in $(find "${S}"/rpm -type d -wholename "*mkl/include"); do + cp -a "${idir}"/. "${ED}"/usr/include/mkl || die + done + + multilib_foreach_abi multilib_src_install +} + +library-provider_pkg_postinst() { + local libdir=$(get_libdir) me="mkl" + + # 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_postinst() { + multilib_foreach_abi library-provider_pkg_postinst +} + +library-provider_pkg_postrm() { + eselect blas validate + eselect lapack validate +} + +pkg_postrm() { + multilib_foreach_abi library-provider_pkg_postrm +} |