commit:     fa2033778ab7dc6fb258b270565fa62a9bb0bb03
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Thu Dec  2 14:14:35 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Thu Dec  2 14:14:35 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fa203377

dev-python/numexpr: Attempt to fix building against mkl

Use pkg-config to get appropriate include directory and library list
from mkl.  Fix config key names.  Unfortunately, the package is still
broken:

  INTEL MKL ERROR: /usr/lib64/libmkl_vml_def.so: undefined symbol: 
mkl_lapack_dspevd.
  Intel MKL FATAL ERROR: cannot load libmkl_vml_def.so.

However, that seems to be a problem inside mkl itself.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/numexpr/numexpr-2.8.0.ebuild | 37 +++++++++++++++++++++++++++------
 1 file changed, 31 insertions(+), 6 deletions(-)

diff --git a/dev-python/numexpr/numexpr-2.8.0.ebuild 
b/dev-python/numexpr/numexpr-2.8.0.ebuild
index 0ed9199d12ec..2de92876f671 100644
--- a/dev-python/numexpr/numexpr-2.8.0.ebuild
+++ b/dev-python/numexpr/numexpr-2.8.0.ebuild
@@ -6,7 +6,7 @@ EAPI=8
 PYTHON_COMPAT=( python3_{8..10} )
 PYTHON_REQ_USE="threads(+)"
 
-inherit distutils-r1
+inherit distutils-r1 toolchain-funcs
 
 DESCRIPTION="Fast numerical array expression evaluator for Python and NumPy"
 HOMEPAGE="https://github.com/pydata/numexpr";
@@ -22,18 +22,43 @@ DEPEND="
        mkl? ( sci-libs/mkl )
 "
 RDEPEND=${DEPEND}
+BDEPEND="
+       mkl? ( virtual/pkgconfig )
+"
 
 python_prepare_all() {
        # TODO: mkl can be used but it fails for me
        # only works with mkl in tree. newer mkl will use pkgconfig
        if use mkl; then
-               use amd64 && local ext="_lp64"
+               local suffix=
+               use amd64 && local suffix="-lp64"
+
+               local flags=(
+                       $($(tc-getPKG_CONFIG) --cflags --libs 
"mkl-dynamic${suffix}-iomp")
+               )
+               local f libdirs=() incdirs=() libs=()
+               for f in "${flags[@]}"; do
+                       case ${f} in
+                               -I*)
+                                       incdirs+=( "${f#-I}" )
+                                       ;;
+                               -L*)
+                                       libdirs+=( "${f#-L}" )
+                                       ;;
+                               -l*)
+                                       libs+=( "${f#-l}" )
+                                       ;;
+                               *)
+                                       die "Unexpected flag in pkg-config 
output: ${f}"
+                                       ;;
+                       esac
+               done
+
                cat > site.cfg <<- _EOF_ || die
                        [mkl]
-                       library_dirs = ${MKLROOT}/lib/em64t
-                       include_dirs = ${MKLROOT}/include
-                       mkl_libs = mkl_solver${ext}, mkl_intel${ext}, \
-                       mkl_intel_thread, mkl_core, iomp5
+                       library_dirs = $(IFS=:; echo "${libdirs[*]}")
+                       include_dirs = $(IFS=:; echo "${incdirs[*]}")
+                       libraries = $(IFS=:; echo "${libs[*]}")
                _EOF_
        fi
 

Reply via email to