diff options
author | Sam James <sam@gentoo.org> | 2021-12-03 00:46:42 +0000 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2021-12-03 00:53:41 +0000 |
commit | c6f83216c443b41bcb26be6e8f139005310ce42b (patch) | |
tree | de1dc2f006047c733025428bd905702045388cfe /media-libs/opencv | |
parent | net-firewall/nfacct: add init script (diff) | |
download | gentoo-c6f83216c443b41bcb26be6e8f139005310ce42b.tar.gz gentoo-c6f83216c443b41bcb26be6e8f139005310ce42b.tar.bz2 gentoo-c6f83216c443b41bcb26be6e8f139005310ce42b.zip |
media-libs/opencv: add lapack patch
Closes: https://bugs.gentoo.org/800539
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-libs/opencv')
-rw-r--r-- | media-libs/opencv/files/opencv-4.5.2-lapack-3.10.patch | 123 | ||||
-rw-r--r-- | media-libs/opencv/opencv-4.5.2-r5.ebuild | 3 | ||||
-rw-r--r-- | media-libs/opencv/opencv-4.5.4.ebuild | 3 |
3 files changed, 127 insertions, 2 deletions
diff --git a/media-libs/opencv/files/opencv-4.5.2-lapack-3.10.patch b/media-libs/opencv/files/opencv-4.5.2-lapack-3.10.patch new file mode 100644 index 000000000000..31e2fc60d121 --- /dev/null +++ b/media-libs/opencv/files/opencv-4.5.2-lapack-3.10.patch @@ -0,0 +1,123 @@ +https://bugs.gentoo.org/800539 + +--- a/modules/core/src/hal_internal.cpp ++++ b/modules/core/src/hal_internal.cpp +@@ -163,9 +163,9 @@ + if(n == 1 && b_step == sizeof(fptype)) + { + if(typeid(fptype) == typeid(float)) +- sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus); ++ LAPACK_sposv_(L, &m, &n, (float*)a, &lda, (float*)b, &m, &lapackStatus); + else if(typeid(fptype) == typeid(double)) +- dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus); ++ LAPACK_dposv_(L, &m, &n, (double*)a, &lda, (double*)b, &m, &lapackStatus); + } + else + { +@@ -174,9 +174,9 @@ + transpose(b, ldb, tmpB, m, m, n); + + if(typeid(fptype) == typeid(float)) +- sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus); ++ LAPACK_sposv_(L, &m, &n, (float*)a, &lda, (float*)tmpB, &m, &lapackStatus); + else if(typeid(fptype) == typeid(double)) +- dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus); ++ LAPACK_dposv_(L, &m, &n, (double*)a, &lda, (double*)tmpB, &m, &lapackStatus); + + transpose(tmpB, m, b, ldb, n, m); + delete[] tmpB; +@@ -185,9 +185,9 @@ + else + { + if(typeid(fptype) == typeid(float)) +- spotrf_(L, &m, (float*)a, &lda, &lapackStatus); ++ LAPACK_spotrf_(L, &m, (float*)a, &lda, &lapackStatus); + else if(typeid(fptype) == typeid(double)) +- dpotrf_(L, &m, (double*)a, &lda, &lapackStatus); ++ LAPACK_dpotrf_(L, &m, (double*)a, &lda, &lapackStatus); + } + + if(lapackStatus == 0) *info = true; +@@ -227,17 +227,17 @@ + } + + if(typeid(fptype) == typeid(float)) +- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info); ++ LAPACK_sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)&work1, &lwork, iworkBuf, info); + else if(typeid(fptype) == typeid(double)) +- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info); ++ LAPACK_dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)&work1, &lwork, iworkBuf, info); + + lwork = (int)round(work1); //optimal buffer size + fptype* buffer = new fptype[lwork + 1]; + + if(typeid(fptype) == typeid(float)) +- sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info); ++ LAPACK_sgesdd_(mode, &m, &n, (float*)a, &lda, (float*)w, (float*)u, &ldu, (float*)vt, &ldv, (float*)buffer, &lwork, iworkBuf, info); + else if(typeid(fptype) == typeid(double)) +- dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info); ++ LAPACK_dgesdd_(mode, &m, &n, (double*)a, &lda, (double*)w, (double*)u, &ldu, (double*)vt, &ldv, (double*)buffer, &lwork, iworkBuf, info); + + if(!(flags & CV_HAL_SVD_NO_UV)) + transpose_square_inplace(vt, ldv, n); +@@ -288,18 +288,18 @@ + if (k == 1 && b_step == sizeof(fptype)) + { + if (typeid(fptype) == typeid(float)) +- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info); ++ LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)&work1, &lwork, info); + else if (typeid(fptype) == typeid(double)) +- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info); ++ LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)&work1, &lwork, info); + + lwork = cvRound(work1); //optimal buffer size + std::vector<fptype> workBufMemHolder(lwork + 1); + fptype* buffer = &workBufMemHolder.front(); + + if (typeid(fptype) == typeid(float)) +- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info); ++ LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)b, &m, (float*)buffer, &lwork, info); + else if (typeid(fptype) == typeid(double)) +- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info); ++ LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)b, &m, (double*)buffer, &lwork, info); + } + else + { +@@ -309,18 +309,18 @@ + transpose(b, ldb, tmpB, m, m, k); + + if (typeid(fptype) == typeid(float)) +- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info); ++ LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)&work1, &lwork, info); + else if (typeid(fptype) == typeid(double)) +- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info); ++ LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)&work1, &lwork, info); + + lwork = cvRound(work1); //optimal buffer size + std::vector<fptype> workBufMemHolder(lwork + 1); + fptype* buffer = &workBufMemHolder.front(); + + if (typeid(fptype) == typeid(float)) +- sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info); ++ LAPACK_sgels_(mode, &m, &n, &k, (float*)tmpA, &ldtmpA, (float*)tmpB, &m, (float*)buffer, &lwork, info); + else if (typeid(fptype) == typeid(double)) +- dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info); ++ LAPACK_dgels_(mode, &m, &n, &k, (double*)tmpA, &ldtmpA, (double*)tmpB, &m, (double*)buffer, &lwork, info); + + transpose(tmpB, m, b, ldb, k, m); + } +--- a/cmake/checks/lapack_check.cpp ++++ b/cmake/checks/lapack_check.cpp +@@ -2,9 +2,9 @@ + #include "opencv_lapack.h" + + static char* check_fn1 = (char*)sgesv_; +-static char* check_fn2 = (char*)sposv_; +-static char* check_fn3 = (char*)spotrf_; +-static char* check_fn4 = (char*)sgesdd_; ++static char* check_fn2 = (char*)LAPACK_sposv_; ++static char* check_fn3 = (char*)LAPACK_spotrf_; ++static char* check_fn4 = (char*)LAPACK_sgesdd_; + + int main(int argc, char* argv[]) + { diff --git a/media-libs/opencv/opencv-4.5.2-r5.ebuild b/media-libs/opencv/opencv-4.5.2-r5.ebuild index 773e61c6fb4a..12f8c7f34e77 100644 --- a/media-libs/opencv/opencv-4.5.2-r5.ebuild +++ b/media-libs/opencv/opencv-4.5.2-r5.ebuild @@ -118,7 +118,7 @@ RDEPEND=" jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] ) lapack? ( virtual/cblas - virtual/lapack + >=virtual/lapack-3.10 ) opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) openexr? ( <media-libs/openexr-3.0.0:0=[${MULTILIB_USEDEP}] ) @@ -283,6 +283,7 @@ PATCHES=( "${FILESDIR}"/${PN}-4.1.2-opencl-license.patch "${FILESDIR}"/${PN}-4.4.0-disable-native-cpuflag-detect.patch "${FILESDIR}"/${PN}-4.5.0-link-with-cblas-for-lapack.patch + "${FILESDIR}"/${PN}-4.5.2-lapack-3.10.patch ) pkg_pretend() { diff --git a/media-libs/opencv/opencv-4.5.4.ebuild b/media-libs/opencv/opencv-4.5.4.ebuild index c4bd53d72d71..ca4d84d5a815 100644 --- a/media-libs/opencv/opencv-4.5.4.ebuild +++ b/media-libs/opencv/opencv-4.5.4.ebuild @@ -118,7 +118,7 @@ RDEPEND=" jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] ) lapack? ( virtual/cblas - virtual/lapack + >=virtual/lapack-3.10 ) opencl? ( virtual/opencl[${MULTILIB_USEDEP}] ) openexr? ( <media-libs/openexr-3.0.0:0=[${MULTILIB_USEDEP}] ) @@ -283,6 +283,7 @@ PATCHES=( "${FILESDIR}"/${PN}-4.1.2-opencl-license.patch "${FILESDIR}"/${PN}-4.4.0-disable-native-cpuflag-detect.patch "${FILESDIR}"/${PN}-4.5.0-link-with-cblas-for-lapack.patch + "${FILESDIR}"/${PN}-4.5.2-lapack-3.10.patch ) pkg_pretend() { |