summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Zander <negril.nx+gentoo@gmail.com>2023-12-08 15:58:23 +0100
committerSam James <sam@gentoo.org>2024-01-10 12:32:37 +0000
commit0e9205edb9922309ecd568b7085fd59726c7d2ca (patch)
tree28266cd2eda219d2d1b9dc1c6f41aaae9a741289 /media-libs/opencv
parentsci-astronomy/stellarium: Keyword 23.4 riscv, #921695 (diff)
downloadgentoo-0e9205edb9922309ecd568b7085fd59726c7d2ca.tar.gz
gentoo-0e9205edb9922309ecd568b7085fd59726c7d2ca.tar.bz2
gentoo-0e9205edb9922309ecd568b7085fd59726c7d2ca.zip
media-libs/opencv: add 4.8.1-r1
Closes: https://bugs.gentoo.org/702258 Closes: https://bugs.gentoo.org/830294 Closes: https://bugs.gentoo.org/883375 Closes: https://bugs.gentoo.org/913740 Closes: https://bugs.gentoo.org/914922 Closes: https://bugs.gentoo.org/917121 Signed-off-by: Paul Zander <negril.nx+gentoo@gmail.com> Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'media-libs/opencv')
-rw-r--r--media-libs/opencv/Manifest7
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-ade-0.1.2a.tar.gz.patch18
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-drop-python2-detection.patch23
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-eliminate-lto-compiler-warnings.patch36
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-libpng16.patch58
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-opencv_test.patch18
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-python3_12-support.patch25
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-use-system-flatbuffers.patch36
-rw-r--r--media-libs/opencv/files/opencv-4.8.1-use-system-opencl.patch25
-rw-r--r--media-libs/opencv/files/opencv_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch20
-rw-r--r--media-libs/opencv/files/opencv_contrib-4.8.1-rgbd.patch15
-rw-r--r--media-libs/opencv/metadata.xml34
-rw-r--r--media-libs/opencv/opencv-4.8.1-r1.ebuild644
13 files changed, 945 insertions, 14 deletions
diff --git a/media-libs/opencv/Manifest b/media-libs/opencv/Manifest
index 4c83059fb2d5..293a8806aa85 100644
--- a/media-libs/opencv/Manifest
+++ b/media-libs/opencv/Manifest
@@ -1,3 +1,5 @@
+DIST NVIDIAOpticalFlowSDK-edb50da3cf849840d680249aa6dbef248ebce2ca.tar.gz 8771 BLAKE2B f579960448bdaf57fbefd5e88002d8f6f4dbb828429b0f3a0112916c03039d4e4de65263eb8464a4d62924c1b77f0a61c2d93b7307657439bfbf7d59785f1533 SHA512 85dfdc52260f54f62c980508f4b6ab384e44200bd1c13761c4947f9a898c08f0faed2d734a85a4ba7a46f8788ed58ee89f12f61cee97881b69ba626bbd04f655
+DIST ade-0.1.2a.tar.gz 116737 BLAKE2B 9ac2af2f21aab8cb5d599e0b653bb6126642588e508f55e5fbfe5ce9607267f25e5187fd31ed69349064551c06e15b2ba548319708ed5f70e7761470775cc6e0 SHA512 d3ed210ff25f4c05393b0039cb4a73a6ceb8b42ba3d776e0469da2362899d3f76564cc6a06965b7de91f38517e1cd4ff4b18c00185d2b1a0af5a34ecf0d9dd44
DIST opencv-3.4.0-face_landmark_model.tar.gz 63299830 BLAKE2B 58f08cd8c030ee1c8b66e76a561fd625e112face427d001185f8d7c0eaace55adbd8474663021841a1382bfe393a210e64c51223441713cdb9156fac866a845c SHA512 2cd29ce42c08b2966db3ef4a2bc217ab3d07051819757ec6de8f3deea29e28f60abab39f101dba03f766f17018598e411bd687a7eaab0c681c113e10a2de2b23
DIST opencv-3.4.0-res10_300x300-caffeemodel.tar.gz 10036604 BLAKE2B 2a2de48fc420f13e7be146ac88f311901c5b4e409c30e466152e33cae1f8afd87dcb6d758af447c268d90bd67989c8798cd80cab172b10499a6ad5224509dbdf SHA512 96fee9f447d5739bc01a5cab37c453cf7237457dfb5d2bf93ac37f8e5aa557ac222316f449cd58e37e856abe4d8e9d4a7820daaba32f0b22cbcde8e340287d4b
DIST opencv-4.4.0_extdep.tar.gz 65334871 BLAKE2B 89fa0083da428e986bb4287295bdbff626d0f84866377413649c1d7ca77338288141f22d2a3c0b64d6d0fc1db98f918c8b33a665274cee4c4aefb44359e4333d SHA512 7b758099ce4abef151051e3e9e1e45b73e4054669d3aa53051e4d4c5f43d9373c9bda5ecbce51f6b024562cb566bd1117505af29ab5f3c36a493f185111a3b4e
@@ -5,4 +7,9 @@ DIST opencv-4.8.0.tar.gz 91992565 BLAKE2B eede5479acdcef7dfb49d260b696ed14e85a27
DIST opencv-4.8.0_contrib.tar.gz 59201076 BLAKE2B e30c4f17e1e89c8b0821bbf8ea44b6b4ce505ad2761222a8b119c5aee5ae4ef50e06a73f41fee3b2fa60b71c736989904f6d1fb31a16abfe39e605e2d32d851b SHA512 81cc41cfe1ea03e60b0657edeaa76a90926e5e79a9f93a482e17bc9edbf1b5ce36b13d108fd8fb097f2fb3d6381fbeb102811f44bfc761c2de7f69bf3c5298a1
DIST opencv-4.8.1.tar.gz 92006711 BLAKE2B 54728a37e3e8a528bd8d2e6df5963a996820a51160d05ac72b350234ce5372f99c037af96e13c55de1452e517fffb478c2335b9e1cbc07a36c78f99351eabd58 SHA512 b98d89b8e7b8ae8138bce00c5226816b761b53fbeb8f28ca516e08c5d130f216f9388a81785cd6684034530f768e097cbe12f19a9361f362b7d2048bfc427a65
DIST opencv-4.8.1_contrib.tar.gz 59200293 BLAKE2B 8cf3ee60cb38a9fa2649013b9b4704022abe5cc65c331078dc7ea87028bc99df8b0de12f835905f5bb5c00a811f256754cac018ca8e02739ac5c6fe36aa4346d SHA512 e3df49e6a1411f55eebbc02f4534ddefabff961b4f63c69b21fe06ff3df894773a8643ab0cb123b83c2bdc8fa02698b332d3c243e8546c894e6c6c8ecaa65500
+DIST opencv_3rdparty-34e4206aef44d50e6bbcd0ab06354b52e7466d26.tar.gz 397901 BLAKE2B 9adbe14ee3a2c90b890be694aa80d65b67e23a23f47ccabee4564e31eb9857d717b5a751df32004cfa5d6a53a9e1d8ea8d8943b705a0eaea5ca741169e2222f6 SHA512 8a92555aed2ac8752818586ab9762dd96ec128c5465cb87e402f15b15d16f7d371b3de045ef7295526e9ef99ec817766bb685a21d24dba29c650cf44e384a4e3
+DIST opencv_3rdparty-8afa57abc8229d611c4937165d20e2a2d9fc5a12.tar.gz 63301261 BLAKE2B 923dc944edfda4c292d42207290bee414bfe21998f6ffe341ea3b38b6f2f581f3a243653e2c1fd3fa86084068ad6e7acd5ca73ab43094aa15f124d379833a5d8 SHA512 68cce870da0846cbd12a093ec7896b510e34590dad2b91699be1df5d4f72d343f9789d54c45c1b801784f7e57e0e80b19ba65dd99855225da99b4193dae97aaa
+DIST opencv_3rdparty-a8b69ccc738421293254aec5ddb38bd523503252.tar.gz 920403 BLAKE2B 5f834e8ccef9d88d0650f8ae5d215a2d07d0a356aaad4de1622068e0b2a7def88fccc84bc4397f0182732e836fcd6e363ae25a2cdeaa4d458a7d8ef9afc81da5 SHA512 5611b9db40477759213ab35320570c198f1f224f92ca801ca3accd1f7620faf3d44f306e44abefd10be118acee9b56da643ca82abaa7c4d2102fe92e5b298a6e
+DIST opencv_3rdparty-b2bfc75f6aea5b1f834ff0f0b865a7c18ff1459f.tar.gz 10036903 BLAKE2B c13559569808db24105049e2081bc466c0e8b6dab58bcc69001e49ff82e03ec4701e25648b5e542b7df2c8e522abfbd82c9825e66c37d6a673847b41bf6effae SHA512 3fc44f12802aa1dad0b12372d53242ae2134a2d74ca0b6d8e4639551623426106781a41d77ebfce79ac625a49aec26b0d7425e0d31f09bab6a15e3d43caef8bc
+DIST opencv_3rdparty-fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d.tar.gz 1470898 BLAKE2B f1794cc8f8684501f670db3d720c02f35c57ebe91f276cc21dea1f1c1426740d03569143fec74380e941703b5086db5f013ca913fb296eda99559115fd53ca30 SHA512 07118b9d688bf0ff34a6e4ca1548006124d80d11e7b48f08c9e1910b64249b1dad0ace460f50adda0ecb69b90871fc59cc25f451570c63f7c6d6ba2b92d8801c
DIST vgg_boostdesc-3.2.0.tar.gz 1867770 BLAKE2B 1fa5b58e73b6fa56ecf8d19af22298f729942ee1369082e173445d09d3de767bf844bad3d2b462efc1199c392f37c88ba49a9996ba8bfd84b4abeba7de94db63 SHA512 4a046aedd639c8eb4b295b0f499e756deb66210ca083f0124c75531e540663367cb58f6d175f66c4713324177036cd89a8869bdab2de8d1736dafc7f00ef9f44
diff --git a/media-libs/opencv/files/opencv-4.8.1-ade-0.1.2a.tar.gz.patch b/media-libs/opencv/files/opencv-4.8.1-ade-0.1.2a.tar.gz.patch
new file mode 100644
index 000000000000..056553695ee2
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-ade-0.1.2a.tar.gz.patch
@@ -0,0 +1,18 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Use tar.gz instead of zip to make CI happy.
+
+diff --git a/modules/gapi/cmake/DownloadADE.cmake b/modules/gapi/cmake/DownloadADE.cmake
+index e22c4f1..fb0c10a 100644
+--- a/modules/gapi/cmake/DownloadADE.cmake
++++ b/modules/gapi/cmake/DownloadADE.cmake
+@@ -1,7 +1,7 @@
+ set(ade_src_dir "${OpenCV_BINARY_DIR}/3rdparty/ade")
+-set(ade_filename "v0.1.2a.zip")
++set(ade_filename "v0.1.2a.tar.gz")
+ set(ade_subdir "ade-0.1.2a")
+-set(ade_md5 "fa4b3e25167319cb0fa9432ef8281945")
++set(ade_md5 "89fd5f32c2796d3fecf62273c4aa7c4d")
+ ocv_download(FILENAME ${ade_filename}
+ HASH ${ade_md5}
+ URL
diff --git a/media-libs/opencv/files/opencv-4.8.1-drop-python2-detection.patch b/media-libs/opencv/files/opencv-4.8.1-drop-python2-detection.patch
new file mode 100644
index 000000000000..5a3a89f665b4
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-drop-python2-detection.patch
@@ -0,0 +1,23 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Python2 is long gone. So don't try finding it.
+
+diff --git a/cmake/OpenCVDetectPython.cmake b/cmake/OpenCVDetectPython.cmake
+index 599b2eb..345e3ef 100644
+--- a/cmake/OpenCVDetectPython.cmake
++++ b/cmake/OpenCVDetectPython.cmake
+@@ -268,14 +268,6 @@ if(OPENCV_PYTHON_SKIP_DETECTION)
+ return()
+ endif()
+
+-find_python("" "${MIN_VER_PYTHON2}" PYTHON2_LIBRARY PYTHON2_INCLUDE_DIR
+- PYTHON2INTERP_FOUND PYTHON2_EXECUTABLE PYTHON2_VERSION_STRING
+- PYTHON2_VERSION_MAJOR PYTHON2_VERSION_MINOR PYTHON2LIBS_FOUND
+- PYTHON2LIBS_VERSION_STRING PYTHON2_LIBRARIES PYTHON2_LIBRARY
+- PYTHON2_DEBUG_LIBRARIES PYTHON2_LIBRARY_DEBUG PYTHON2_INCLUDE_PATH
+- PYTHON2_INCLUDE_DIR PYTHON2_INCLUDE_DIR2 PYTHON2_PACKAGES_PATH
+- PYTHON2_NUMPY_INCLUDE_DIRS PYTHON2_NUMPY_VERSION)
+-
+ option(OPENCV_PYTHON3_VERSION "Python3 version" "")
+ find_python("${OPENCV_PYTHON3_VERSION}" "${MIN_VER_PYTHON3}" PYTHON3_LIBRARY PYTHON3_INCLUDE_DIR
+ PYTHON3INTERP_FOUND PYTHON3_EXECUTABLE PYTHON3_VERSION_STRING
diff --git a/media-libs/opencv/files/opencv-4.8.1-eliminate-lto-compiler-warnings.patch b/media-libs/opencv/files/opencv-4.8.1-eliminate-lto-compiler-warnings.patch
new file mode 100644
index 000000000000..7d6a5456a63f
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-eliminate-lto-compiler-warnings.patch
@@ -0,0 +1,36 @@
+https://github.com/opencv/opencv/pull/23991
+
+From 4ee0f212cc19f7e77483d34d4cf8378945e3da31 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=E4=B8=8D=E9=B1=BC=E5=84=BF?=
+ <36976072+buyuer@users.noreply.github.com>
+Date: Fri, 14 Jul 2023 08:45:14 +0000
+Subject: [PATCH] Eliminating compilation warnings when using lto in gcc12 and
+ later versions
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+use -flto=auto when use gcc12 or later
+
+Signed-off-by: 不鱼儿 <36976072+buyuer@users.noreply.github.com>
+---
+ cmake/OpenCVCompilerOptions.cmake | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/OpenCVCompilerOptions.cmake b/cmake/OpenCVCompilerOptions.cmake
+index d4600943fb0d..8bd86681303e 100644
+--- a/cmake/OpenCVCompilerOptions.cmake
++++ b/cmake/OpenCVCompilerOptions.cmake
+@@ -261,7 +261,11 @@ if(CV_GCC OR CV_CLANG)
+ endif()
+
+ if(ENABLE_LTO)
+- add_extra_compiler_option(-flto)
++ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 12)
++ add_extra_compiler_option(-flto=auto)
++ else()
++ add_extra_compiler_option(-flto)
++ endif()
+ endif()
+ if(ENABLE_THIN_LTO)
+ add_extra_compiler_option(-flto=thin)
diff --git a/media-libs/opencv/files/opencv-4.8.1-libpng16.patch b/media-libs/opencv/files/opencv-4.8.1-libpng16.patch
new file mode 100644
index 000000000000..a5b2aedb063a
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-libpng16.patch
@@ -0,0 +1,58 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Gentoo installs libpng as libpng16, so adjust the detection.
+
+diff --git a/cmake/OpenCVFindLibsGrfmt.cmake b/cmake/OpenCVFindLibsGrfmt.cmake
+index 46b5108..0ff88ea 100644
+--- a/cmake/OpenCVFindLibsGrfmt.cmake
++++ b/cmake/OpenCVFindLibsGrfmt.cmake
+@@ -245,9 +245,9 @@ if(NOT HAVE_SPNG AND WITH_PNG)
+ include(FindPNG)
+ if(PNG_FOUND)
+ include(CheckIncludeFile)
+- check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" HAVE_LIBPNG_PNG_H)
+- if(HAVE_LIBPNG_PNG_H)
+- ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/libpng/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
++ check_include_file("${PNG_PNG_INCLUDE_DIR}/libpng16/png.h" HAVE_LIBPNG16_PNG_H)
++ if(HAVE_LIBPNG16_PNG_H)
++ ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/libpng16/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
+ else()
+ ocv_parse_header("${PNG_PNG_INCLUDE_DIR}/png.h" PNG_VERSION_LINES PNG_LIBPNG_VER_MAJOR PNG_LIBPNG_VER_MINOR PNG_LIBPNG_VER_RELEASE)
+ endif()
+@@ -255,7 +255,7 @@ if(NOT HAVE_SPNG AND WITH_PNG)
+ endif()
+
+ if(NOT PNG_FOUND)
+- ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_LIBPNG_PNG_H PNG_DEFINITIONS)
++ ocv_clear_vars(PNG_LIBRARY PNG_LIBRARIES PNG_INCLUDE_DIR PNG_PNG_INCLUDE_DIR HAVE_LIBPNG16_PNG_H PNG_DEFINITIONS)
+
+ set(PNG_LIBRARY libpng CACHE INTERNAL "")
+ set(PNG_LIBRARIES ${PNG_LIBRARY})
+diff --git a/cmake/templates/cvconfig.h.in b/cmake/templates/cvconfig.h.in
+index d6c7875..005e9b3 100644
+--- a/cmake/templates/cvconfig.h.in
++++ b/cmake/templates/cvconfig.h.in
+@@ -79,7 +79,7 @@
+ #cmakedefine HAVE_JPEG
+
+ /* libpng/png.h needs to be included */
+-#cmakedefine HAVE_LIBPNG_PNG_H
++#cmakedefine HAVE_LIBPNG16_PNG_H
+
+ /* GDCM DICOM codec */
+ #cmakedefine HAVE_GDCM
+diff --git a/modules/imgcodecs/src/grfmt_png.cpp b/modules/imgcodecs/src/grfmt_png.cpp
+index 388a3fc..4dde181 100644
+--- a/modules/imgcodecs/src/grfmt_png.cpp
++++ b/modules/imgcodecs/src/grfmt_png.cpp
+@@ -58,8 +58,8 @@
+ # define _FILE_OFFSET_BITS 0
+ #endif
+
+-#ifdef HAVE_LIBPNG_PNG_H
+-#include <libpng/png.h>
++#ifdef HAVE_LIBPNG16_PNG_H
++#include <libpng16/png.h>
+ #else
+ #include <png.h>
+ #endif
diff --git a/media-libs/opencv/files/opencv-4.8.1-opencv_test.patch b/media-libs/opencv/files/opencv-4.8.1-opencv_test.patch
new file mode 100644
index 000000000000..2bdc2d830570
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-opencv_test.patch
@@ -0,0 +1,18 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+We don't package quirc, so the misplaced #ifdef breaks compilation.
+
+diff --git a/modules/objdetect/test/test_qrcode.cpp b/modules/objdetect/test/test_qrcode.cpp
+index 5e6ec6f..6dc14cc 100644
+--- a/modules/objdetect/test/test_qrcode.cpp
++++ b/modules/objdetect/test/test_qrcode.cpp
+@@ -374,8 +374,8 @@ TEST_P(Objdetect_QRCode_Multi, regression)
+ qrcode = QRCodeDetectorAruco();
+ }
+ std::vector<Point> corners;
+-#ifdef HAVE_QUIRC
+ std::vector<cv::String> decoded_info;
++#ifdef HAVE_QUIRC
+ std::vector<Mat> straight_barcode;
+ EXPECT_TRUE(qrcode.detectAndDecodeMulti(src, decoded_info, corners, straight_barcode));
+ ASSERT_FALSE(corners.empty());
diff --git a/media-libs/opencv/files/opencv-4.8.1-python3_12-support.patch b/media-libs/opencv/files/opencv-4.8.1-python3_12-support.patch
new file mode 100644
index 000000000000..7eae8a180ce6
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-python3_12-support.patch
@@ -0,0 +1,25 @@
+https://github.com/opencv/opencv/pull/23991
+
+From 00ca8f455e6a5588d905e3a0b268f18ee3fda5dd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?S=C3=A9rgio=20M=2E=20Basto?= <sergio@serjux.com>
+Date: Sun, 1 Oct 2023 16:12:25 +0100
+Subject: [PATCH] `numpy.distutils` is removed in numpy 1.26 on Python 3.12.
+
+so we don't use numpy.distutils to get includes dirs of python-numpy
+---
+ cmake/OpenCVDetectPython.cmake | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/cmake/OpenCVDetectPython.cmake b/cmake/OpenCVDetectPython.cmake
+index 88a434185622..d4098ce8e60d 100644
+--- a/cmake/OpenCVDetectPython.cmake
++++ b/cmake/OpenCVDetectPython.cmake
+@@ -216,7 +216,7 @@ if(NOT ${found})
+ message(STATUS " PYTHON3_NUMPY_INCLUDE_DIRS")
+ else()
+ # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy
+- execute_process(COMMAND "${_executable}" -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print(os.pathsep.join(numpy.distutils.misc_util.get_numpy_include_dirs()))"
++ execute_process(COMMAND "${_executable}" -c "import numpy; print(numpy.get_include())"
+ RESULT_VARIABLE _numpy_process
+ OUTPUT_VARIABLE _numpy_include_dirs
+ OUTPUT_STRIP_TRAILING_WHITESPACE)
diff --git a/media-libs/opencv/files/opencv-4.8.1-use-system-flatbuffers.patch b/media-libs/opencv/files/opencv-4.8.1-use-system-flatbuffers.patch
new file mode 100644
index 000000000000..11c42aea0e6d
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-use-system-flatbuffers.patch
@@ -0,0 +1,36 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Find the system flatbuffers and allow for newer revisions.
+
+diff --git a/cmake/OpenCVDetectFlatbuffers.cmake b/cmake/OpenCVDetectFlatbuffers.cmake
+index 537b738..dbfa532 100644
+--- a/cmake/OpenCVDetectFlatbuffers.cmake
++++ b/cmake/OpenCVDetectFlatbuffers.cmake
+@@ -1,12 +1,6 @@
+ if(WITH_FLATBUFFERS)
+- set(HAVE_FLATBUFFERS 1)
+- set(flatbuffers_VERSION "23.5.9")
+- ocv_install_3rdparty_licenses(flatbuffers "${OpenCV_SOURCE_DIR}/3rdparty/flatbuffers/LICENSE.txt")
+- ocv_add_external_target(flatbuffers "${OpenCV_SOURCE_DIR}/3rdparty/flatbuffers/include" "" "HAVE_FLATBUFFERS=1")
+- set(CUSTOM_STATUS_flatbuffers " Flatbuffers:" "builtin/3rdparty (${flatbuffers_VERSION})")
+-endif()
+-
+-if(WITH_FLATBUFFERS OR HAVE_FLATBUFFERS)
++ find_package(flatbuffers REQUIRED)
++ set(HAVE_FLATBUFFERS "${flatbuffers_FOUND}")
+ list(APPEND CUSTOM_STATUS flatbuffers)
+
+ if(HAVE_FLATBUFFERS)
+diff --git a/modules/dnn/misc/tflite/schema_generated.h b/modules/dnn/misc/tflite/schema_generated.h
+index 44162ee..1c3c35a 100644
+--- a/modules/dnn/misc/tflite/schema_generated.h
++++ b/modules/dnn/misc/tflite/schema_generated.h
+@@ -10,7 +10,7 @@
+ // generated, otherwise it may not be compatible.
+ static_assert(FLATBUFFERS_VERSION_MAJOR == 23 &&
+ FLATBUFFERS_VERSION_MINOR == 5 &&
+- FLATBUFFERS_VERSION_REVISION == 9,
++ FLATBUFFERS_VERSION_REVISION >= 9,
+ "Non-compatible flatbuffers version included");
+
+ namespace opencv_tflite {
diff --git a/media-libs/opencv/files/opencv-4.8.1-use-system-opencl.patch b/media-libs/opencv/files/opencv-4.8.1-use-system-opencl.patch
new file mode 100644
index 000000000000..f4efd06897df
--- /dev/null
+++ b/media-libs/opencv/files/opencv-4.8.1-use-system-opencl.patch
@@ -0,0 +1,25 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Find the system opencl and inject the include dir.
+
+diff --git a/cmake/OpenCVDetectOpenCL.cmake b/cmake/OpenCVDetectOpenCL.cmake
+index 100fb0e..ab30bf9 100644
+--- a/cmake/OpenCVDetectOpenCL.cmake
++++ b/cmake/OpenCVDetectOpenCL.cmake
+@@ -1,3 +1,8 @@
++find_package(OpenCLHeaders REQUIRED)
++if(NOT TARGET OpenCL::Headers)
++ message(FATAL_ERROR "OpenCL::Headers not found")
++endif()
++
+ set(OPENCL_FOUND ON CACHE BOOL "OpenCL library is found")
+ if(APPLE)
+ set(OPENCL_LIBRARY "-framework OpenCL" CACHE STRING "OpenCL library")
+@@ -5,6 +10,7 @@ if(APPLE)
+ else()
+ set(OPENCL_LIBRARY "" CACHE STRING "OpenCL library")
+ set(OPENCL_INCLUDE_DIR "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/1.2" CACHE PATH "OpenCL include directory")
++ get_target_property(OPENCL_INCLUDE_DIR OpenCL::Headers INTERFACE_INCLUDE_DIRECTORIES)
+ endif()
+ mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
+
diff --git a/media-libs/opencv/files/opencv_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch b/media-libs/opencv/files/opencv_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch
new file mode 100644
index 000000000000..fe66258b15f2
--- /dev/null
+++ b/media-libs/opencv/files/opencv_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch
@@ -0,0 +1,20 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Use tar.gz instead of zip to make CI happy.
+
+diff --git a/modules/cudaoptflow/CMakeLists.txt b/modules/cudaoptflow/CMakeLists.txt
+index b295abc..1e916e5 100644
+--- a/modules/cudaoptflow/CMakeLists.txt
++++ b/modules/cudaoptflow/CMakeLists.txt
+@@ -10,9 +10,9 @@ ocv_define_module(cudaoptflow opencv_video opencv_optflow opencv_cudaarithm open
+
+ if(NOT CUDA_VERSION VERSION_LESS "10.0")
+ set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT "edb50da3cf849840d680249aa6dbef248ebce2ca")
+- set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5 "a73cd48b18dcc0cc8933b30796074191")
++ set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5 "5626b1d1c335fbcbf893fcb27e1230be")
+ set(NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH "${OpenCV_BINARY_DIR}/3rdparty/NVIDIAOpticalFlowSDK_2_0_Headers")
+- ocv_download(FILENAME "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}.zip"
++ ocv_download(FILENAME "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_COMMIT}.tar.gz"
+ HASH ${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_MD5}
+ URL "https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/"
+ DESTINATION_DIR "${NVIDIA_OPTICAL_FLOW_2_0_HEADERS_PATH}"
diff --git a/media-libs/opencv/files/opencv_contrib-4.8.1-rgbd.patch b/media-libs/opencv/files/opencv_contrib-4.8.1-rgbd.patch
new file mode 100644
index 000000000000..0e1f12d6df46
--- /dev/null
+++ b/media-libs/opencv/files/opencv_contrib-4.8.1-rgbd.patch
@@ -0,0 +1,15 @@
+From: Paul Zander <negril.nx+gentoo@gmail.com>
+
+Fixes compilation when using GLVND.
+
+diff --git a/modules/rgbd/CMakeLists.txt b/modules/rgbd/CMakeLists.txt
+index 79e1562..eaebc3a 100644
+--- a/modules/rgbd/CMakeLists.txt
++++ b/modules/rgbd/CMakeLists.txt
+@@ -7,5 +7,5 @@ if(NOT HAVE_EIGEN)
+ endif()
+
+ if(HAVE_OPENGL)
+- ocv_target_link_libraries(${the_module} PRIVATE "${OPENGL_LIBRARIES}")
++ ocv_target_link_libraries(${the_module} PRIVATE "${OPENGL_LIBRARIES}" GL)
+ endif()
diff --git a/media-libs/opencv/metadata.xml b/media-libs/opencv/metadata.xml
index 67f63c03fd9d..80f1912bd4fd 100644
--- a/media-libs/opencv/metadata.xml
+++ b/media-libs/opencv/metadata.xml
@@ -16,32 +16,38 @@
</longdescription>
<use>
<flag name="contrib">Install user contributed scripts from opencv_contrib (Experimental!)</flag>
+ <flag name="contribcvv">Enable CVV in contrib (requires Qt5)</flag>
+ <flag name="contribdnn">Enable DNN module contrib (requires tinydnn)</flag>
+ <flag name="contribfreetype">Enable Drawing UTF-8 strings with <pkg>media-libs/freetype</pkg>&amp;<pkg>media-libs/harfbuzz</pkg></flag>
+ <flag name="contribhdf">Enable HDF module (requires <pkg>sci-libs/hdf5</pkg>)</flag>
+ <flag name="contribovis">Enable OGRE vision module support (<pkg>dev-games/ogre</pkg>)</flag>
+ <flag name="contribsfm">Enable SFM module (requires USE="eigen gflags glog")</flag>
+ <flag name="contribxfeatures2d" restrict="&gt;media-libs/opencv-4.8.1-r1">Enable xfeatures2d in contrib</flag>
+ <flag name="contribxfeatures2d" restrict="&lt;=media-libs/opencv-4.8.1">Enables xfeatures2d and autodownload of samples in contrib</flag>
<flag name="cuda">Enable NVIDIA Cuda computations support (Experimental!)</flag>
- <flag restrict="&gt;=media-libs/opencv-4.1.2" name="download">Enable download during cmake configure</flag>
+ <flag name="cudnn">Enable support for nVidia cuDNN library</flag>
+ <flag name="dnnsamples">Enable dnn caffeemodel samples</flag>
+ <flag name="download">Enable download during cmake configure</flag>
<flag name="eigen">Enable usage of <pkg>dev-cpp/eigen</pkg> for computations</flag>
<flag name="features2d">Enable features2d module</flag>
<flag name="gdal">Enable support for <pkg>sci-libs/gdal</pkg> library</flag>
+ <flag name="gflags">Use Google's C++ argument parsing library (<pkg>dev-cpp/gflags</pkg>)</flag>
+ <flag name="glog">Use Google's C++ logging library (<pkg>dev-cpp/glog</pkg>)</flag>
<flag name="gtk3">Enable <pkg>x11-libs/gtk+</pkg>:3 support</flag>
- <flag restrict="&gt;=media-libs/opencv-4.4.0" name="lto">Build using Link Time Optimizations (LTO)</flag>
- <flag restrict="&gt;=media-libs/opencv-4.1.2" name="opencvapps">Enable compilation with opencvapps</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="gflags">Use Google's C++ argument parsing library</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="glog">Use Google's C++ loggin library</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="contribxfeatures2d">Enables xfeatures2d and autodownload of samples in contrib</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="contribcvv">CVV module requires Qt5</flag>
- <flag restrict="&gt;=media-libs/opencv-3.3.0" name="contribdnn">DNN module contrib requires tiny dnn</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="contribhdf">HDF module requires <pkg>sci-libs/hdf5</pkg></flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="contribsfm">SFM module requires eigen, gflags, and glog</flag>
- <flag restrict="&gt;=media-libs/opencv-4.4.0" name="contribfreetype">Enable Drawing UTF-8 strings with freetype/harfbuzz</flag>
- <flag restrict="&gt;=media-libs/opencv-4.4.0" name="contribovis">Enable Ogre vision module support</flag>
- <flag restrict="&gt;=media-libs/opencv-3.4.0" name="dnnsamples">Download dnn caffeemodel samples</flag>
- <flag restrict="&gt;=media-libs/opencv-3.1.0" name="tesseract">Use Google's OCR Engine</flag>
+ <flag name="lto">Build using Link Time Optimizations (LTO)</flag>
+ <flag name="non-free">Enable non-free components</flag>
+ <flag name="opencvapps">Enable compilation with opencvapps</flag>
+ <flag name="tbb">Enable multithreading with the Intel Threads Building Block (<pkg>dev-cpp/tbb</pkg>)</flag>
+ <flag name="tesseract">Use Google's OCR Engine</flag>
<flag name="testprograms">Build and install programs for testing OpenCV (performance)</flag>
+ <flag name="video_cards_intel">Enable Video Acceleration API for hardware decoding for Intel cards</flag>
<flag name="vtk">Build new 3D visualization module viz based on <pkg>sci-libs/vtk</pkg></flag>
</use>
<upstream>
<remote-id type="cpe">cpe:/a:opencv:opencv</remote-id>
<remote-id type="github">opencv/opencv</remote-id>
<remote-id type="github">opencv/opencv_contrib</remote-id>
+ <remote-id type="github">opencv/opencv_3rdparty</remote-id>
<remote-id type="sourceforge">opencvlibrary</remote-id>
</upstream>
</pkgmetadata>
diff --git a/media-libs/opencv/opencv-4.8.1-r1.ebuild b/media-libs/opencv/opencv-4.8.1-r1.ebuild
new file mode 100644
index 000000000000..2ac1b3b9fcc5
--- /dev/null
+++ b/media-libs/opencv/opencv-4.8.1-r1.ebuild
@@ -0,0 +1,644 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{10..12} )
+inherit cuda java-pkg-opt-2 java-ant-2 cmake-multilib python-r1 toolchain-funcs
+
+DESCRIPTION="A collection of algorithms and sample code for various computer vision problems"
+HOMEPAGE="https://opencv.org"
+
+ADE_PV="0.1.2a" # branch master
+QRCODE_COMMIT="a8b69ccc738421293254aec5ddb38bd523503252" # branch wechat_qrcode_20210119
+DNN_SAMPLES_FACE_DETECTOR_COMMIT="b2bfc75f6aea5b1f834ff0f0b865a7c18ff1459f" # branch dnn_samples_face_detector_20170830
+XFEATURES2D_BOOSTDESC_COMMIT="34e4206aef44d50e6bbcd0ab06354b52e7466d26" # branch contrib_xfeatures2d_boostdesc_20161012
+XFEATURES2D_VGG_COMMIT="fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d" # branch contrib_xfeatures2d_vgg_20160317
+FACE_ALIGNMENT_COMMIT="8afa57abc8229d611c4937165d20e2a2d9fc5a12" # branch contrib_face_alignment_20170818
+NVIDIA_OPTICAL_FLOW_COMMIT="edb50da3cf849840d680249aa6dbef248ebce2ca" # branch nvof_2_0_bsd
+
+SRC_URI="https://github.com/${PN}/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/opencv/ade/archive/v${ADE_PV}.tar.gz -> ade-${ADE_PV}.tar.gz
+ contrib? (
+ https://github.com/${PN}/${PN}_contrib/archive/${PV}.tar.gz -> ${P}_contrib.tar.gz
+ dnnsamples? (
+ https://github.com/${PN}/${PN}_3rdparty/archive/${QRCODE_COMMIT}.tar.gz -> ${PN}_3rdparty-${QRCODE_COMMIT}.tar.gz
+ https://github.com/${PN}/${PN}_3rdparty/archive/${DNN_SAMPLES_FACE_DETECTOR_COMMIT}.tar.gz
+ -> ${PN}_3rdparty-${DNN_SAMPLES_FACE_DETECTOR_COMMIT}.tar.gz
+ )
+ contribxfeatures2d? (
+ https://github.com/${PN}/${PN}_3rdparty/archive/${XFEATURES2D_BOOSTDESC_COMMIT}.tar.gz
+ -> ${PN}_3rdparty-${XFEATURES2D_BOOSTDESC_COMMIT}.tar.gz
+ https://github.com/${PN}/${PN}_3rdparty/archive/${XFEATURES2D_VGG_COMMIT}.tar.gz
+ -> ${PN}_3rdparty-${XFEATURES2D_VGG_COMMIT}.tar.gz
+ )
+ contribdnn? (
+ https://github.com/${PN}/${PN}_3rdparty/archive/${FACE_ALIGNMENT_COMMIT}.tar.gz
+ -> ${PN}_3rdparty-${FACE_ALIGNMENT_COMMIT}.tar.gz
+ )
+ cuda? (
+ https://github.com/NVIDIA/NVIDIAOpticalFlowSDK/archive/${NVIDIA_OPTICAL_FLOW_COMMIT}.tar.gz
+ -> NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_COMMIT}.tar.gz
+ )
+ )
+"
+
+LICENSE="Apache-2.0"
+SLOT="0/${PV}" # subslot = libopencv* soname version
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~x86"
+IUSE="contrib contribcvv contribdnn contribfreetype contribhdf contribovis contribsfm contribxfeatures2d cuda cudnn debug dnnsamples +eigen examples +features2d ffmpeg gdal gflags glog gphoto2 gstreamer gtk3 ieee1394 jpeg jpeg2k lapack non-free opencl openexr opengl openmp opencvapps png +python qt5 qt6 tesseract testprograms tbb tiff vaapi v4l vtk webp xine video_cards_intel"
+
+# The following lines are shamelessly stolen from ffmpeg-9999.ebuild with modifications
+ARM_CPU_FEATURES=(
+ cpu_flags_arm_neon:NEON
+ cpu_flags_arm_vfpv3:VFPV3
+)
+PPC_CPU_FEATURES=(
+ cpu_flags_ppc_vsx:VSX
+ cpu_flags_ppc_vsx3:VSX3
+)
+X86_CPU_FEATURES_RAW=(
+ sse:SSE
+ sse2:SSE2
+ sse3:SSE3
+ ssse3:SSSE3
+ sse4_1:SSE4_1
+ popcnt:POPCNT
+ sse4_2:SSE4_2
+ f16c:FP16
+ fma3:FMA3
+ avx:AVX
+ avx2:AVX2
+ avx512f:AVX_512F
+)
+X86_CPU_FEATURES=( ${X86_CPU_FEATURES_RAW[@]/#/cpu_flags_x86_} )
+CPU_FEATURES_MAP=(
+ ${ARM_CPU_FEATURES[@]}
+ ${PPC_CPU_FEATURES[@]}
+ ${X86_CPU_FEATURES[@]}
+)
+IUSE="${IUSE} ${CPU_FEATURES_MAP[@]%:*}"
+
+# OpenGL needs gtk or Qt installed to activate, otherwise build system
+# will silently disable it without the user knowing, which defeats the
+# purpose of the opengl use flag.
+# cuda needs contrib, bug #701712
+REQUIRED_USE="
+ cpu_flags_x86_avx2? ( cpu_flags_x86_f16c )
+ cpu_flags_x86_f16c? ( cpu_flags_x86_avx )
+ cuda? (
+ contrib
+ tesseract? ( opencl )
+ )
+ cudnn? ( cuda )
+ dnnsamples? ( examples )
+ gflags? ( contrib )
+ glog? ( contrib )
+ contribcvv? ( contrib || ( qt5 qt6 ) )
+ contribdnn? ( contrib )
+ contribfreetype? ( contrib )
+ contribhdf? ( contrib )
+ contribovis? ( contrib )
+ contribsfm? ( contrib eigen gflags glog )
+ contribxfeatures2d? ( contrib )
+ java? ( python )
+ opengl? ( || ( qt5 qt6 ) )
+ python? ( ${PYTHON_REQUIRED_USE} )
+ tesseract? ( contrib )
+ ?? ( gtk3 || ( qt5 qt6 ) )
+ ?? ( cuda gdal )
+ ?? ( cuda openexr )
+ ?? ( cuda tbb )
+"
+
+# The following logic is intrinsic in the build system, but we do not enforce
+# it on the useflags since this just blocks emerging pointlessly:
+# openmp? ( !tbb )
+
+RDEPEND="
+ app-arch/bzip2[${MULTILIB_USEDEP}]
+ <dev-libs/protobuf-23:=[${MULTILIB_USEDEP}]
+ sys-libs/zlib[${MULTILIB_USEDEP}]
+ cuda? ( dev-util/nvidia-cuda-toolkit:0= )
+ cudnn? ( dev-libs/cudnn:= )
+ contribdnn? ( dev-libs/flatbuffers:= )
+ contribhdf? ( sci-libs/hdf5:= )
+ contribfreetype? (
+ media-libs/freetype:2[${MULTILIB_USEDEP}]
+ media-libs/harfbuzz:=[${MULTILIB_USEDEP}]
+ )
+ contribovis? ( >=dev-games/ogre-1.12:= )
+ ffmpeg? ( media-video/ffmpeg:0=[${MULTILIB_USEDEP}] )
+ gdal? ( sci-libs/gdal:= )
+ gflags? ( dev-cpp/gflags:=[${MULTILIB_USEDEP}] )
+ glog? ( dev-cpp/glog:=[${MULTILIB_USEDEP}] )
+ gphoto2? ( media-libs/libgphoto2:=[${MULTILIB_USEDEP}] )
+ gstreamer? (
+ media-libs/gstreamer:1.0[${MULTILIB_USEDEP}]
+ media-libs/gst-plugins-base:1.0[${MULTILIB_USEDEP}]
+ )
+ gtk3? (
+ dev-libs/glib:2[${MULTILIB_USEDEP}]
+ x11-libs/gtk+:3[${MULTILIB_USEDEP}]
+ )
+ ieee1394? (
+ media-libs/libdc1394:=[${MULTILIB_USEDEP}]
+ sys-libs/libraw1394[${MULTILIB_USEDEP}]
+ )
+ java? ( >=virtual/jre-1.8:* )
+ jpeg? ( media-libs/libjpeg-turbo:=[${MULTILIB_USEDEP}] )
+ jpeg2k? ( media-libs/openjpeg:2=[${MULTILIB_USEDEP}] )
+ lapack? (
+ virtual/cblas
+ >=virtual/lapack-3.10
+ virtual/lapacke
+ )
+ opencl? (
+ virtual/opencl[${MULTILIB_USEDEP}]
+ dev-util/opencl-headers
+ )
+ openexr? (
+ dev-libs/imath:=
+ media-libs/openexr:=
+ )
+ opengl? (
+ virtual/opengl[${MULTILIB_USEDEP}]
+ virtual/glu[${MULTILIB_USEDEP}]
+ )
+ png? ( media-libs/libpng:0=[${MULTILIB_USEDEP}] )
+ python? (
+ ${PYTHON_DEPS}
+ dev-python/numpy[${PYTHON_USEDEP}]
+ )
+ qt5? (
+ dev-qt/qtgui:5
+ dev-qt/qtwidgets:5
+ dev-qt/qttest:5
+ dev-qt/qtconcurrent:5
+ opengl? ( dev-qt/qtopengl:5 )
+ )
+ !qt5? (
+ qt6? (
+ dev-qt/qtbase:6[gui,widgets,concurrent,opengl?]
+ )
+ )
+ tesseract? ( app-text/tesseract[opencl=,${MULTILIB_USEDEP}] )
+ tbb? ( dev-cpp/tbb:=[${MULTILIB_USEDEP}] )
+ tiff? ( media-libs/tiff:=[${MULTILIB_USEDEP}] )
+ v4l? ( >=media-libs/libv4l-0.8.3[${MULTILIB_USEDEP}] )
+ vaapi? ( media-libs/libva[${MULTILIB_USEDEP}] )
+ vtk? ( sci-libs/vtk:=[rendering,cuda=] )
+ webp? ( media-libs/libwebp:=[${MULTILIB_USEDEP}] )
+ xine? ( media-libs/xine-lib )"
+DEPEND="${RDEPEND}
+ eigen? ( >=dev-cpp/eigen-3.3.8-r1:3 )
+ java? ( >=virtual/jdk-1.8:* )"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-3.4.0-disable-download.patch"
+ "${FILESDIR}/${PN}-3.4.1-cuda-add-relaxed-constexpr.patch"
+ "${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.8.0-arm64-fp16.patch"
+ "${FILESDIR}/${PN}-4.8.0-fix-cuda-12.2.0.patch"
+
+ "${FILESDIR}/${PN}-4.8.1-use-system-flatbuffers.patch"
+ "${FILESDIR}/${PN}-4.8.1-eliminate-lto-compiler-warnings.patch"
+ "${FILESDIR}/${PN}-4.8.1-python3_12-support.patch"
+
+ "${FILESDIR}/${PN}-4.8.1-use-system-opencl.patch"
+ "${FILESDIR}/${PN}-4.8.1-opencv_test.patch"
+ "${FILESDIR}/${PN}-4.8.1-drop-python2-detection.patch"
+ "${FILESDIR}/${PN}-4.8.1-libpng16.patch"
+ "${FILESDIR}/${PN}-4.8.1-ade-0.1.2a.tar.gz.patch"
+
+ # TODO applied in src_prepare
+ # "${FILESDIR}/${PN}_contrib-${PV}-rgbd.patch"
+ # "${FILESDIR}/${PN}_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch"
+)
+
+pkg_pretend() {
+ if use cuda && [[ -z "${CUDA_GENERATION}" ]] && [[ -z "${CUDA_ARCH_BIN}" ]]; then
+ einfo "The target CUDA architecture can be set via one of:"
+ einfo " - CUDA_GENERATION set to one of Maxwell, Pascal, Volta, Turing, Ampere, Lovelace, Hopper, Auto"
+ einfo " - CUDA_ARCH_BIN, (and optionally CUDA_ARCH_PTX) in the form of x.y tuples."
+ einfo " You can specify multiple tuple separated by \";\"."
+ einfo ""
+ einfo "The CUDA architecture tuple for your device can be found at https://developer.nvidia.com/cuda-gpus."
+ fi
+
+ if [[ ${MERGE_TYPE} == "buildonly" ]] && [[ -n "${CUDA_GENERATION}" || -n "${CUDA_ARCH_BIN}" ]]; then
+ local info_message="When building a binary package it's recommended to unset CUDA_GENERATION and CUDA_ARCH_BIN"
+ einfo "$info_message so all available architectures are build."
+ fi
+
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+}
+
+pkg_setup() {
+ [[ ${MERGE_TYPE} != binary ]] && use openmp && tc-check-openmp
+ use java && java-pkg-opt-2_pkg_setup
+}
+
+src_unpack() {
+ unpack $(echo "${A}" | tr ' ' '\n' | grep -vP "(ade-0.1.2|NVIDIAOpticalFlowSDK)")
+}
+
+src_prepare() {
+ if use cuda; then
+ export CUDA_VERBOSE="$(usex debug "true" "false")"
+ cuda_src_prepare
+ fi
+
+ cmake_src_prepare
+
+ # remove bundled stuff
+ rm -r 3rdparty || die "Removing 3rd party components failed"
+ sed -e '/add_subdirectory(.*3rdparty.*)/ d' \
+ -i CMakeLists.txt cmake/*cmake || die
+
+ if use contrib; then
+ cd "${WORKDIR}/${PN}_contrib-${PV}" || die
+ eapply "${FILESDIR}/${PN}_contrib-${PV}-rgbd.patch"
+ eapply "${FILESDIR}/${PN}_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch"
+ cd "${S}" || die
+
+ ! use contribcvv && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/cvv" || die; }
+ # ! use contribdnn && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/dnn" || die; }
+ ! use contribfreetype && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/freetype" || die; }
+ ! use contribhdf && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/hdf" || die; }
+ ! use contribovis && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/ovis" || die; }
+ ! use contribsfm && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/sfm" || die; }
+ ! use contribxfeatures2d && { rm -R "${WORKDIR}/${PN}_contrib-${PV}/modules/xfeatures2d" || die; }
+ fi
+
+ mkdir -p "${S}/.cache/ade" || die
+ cp \
+ "${DISTDIR}/ade-${ADE_PV}.tar.gz" \
+ "${S}/.cache/ade/$(md5sum "${DISTDIR}/ade-${ADE_PV}.tar.gz" | cut -f 1 -d " ")-v${ADE_PV}.tar.gz" || die
+
+ if use dnnsamples; then
+ mkdir -p "${S}/.cache/wechat_qrcode" || die
+ for file in "detect.caffemodel" "detect.prototxt" "sr.prototxt" "sr.caffemodel"; do
+ mv \
+ "${WORKDIR}/${PN}_3rdparty-${QRCODE_COMMIT}/${file}" \
+ "${S}/.cache/wechat_qrcode/$( \
+ md5sum "${WORKDIR}/${PN}_3rdparty-${QRCODE_COMMIT}/${file}" | cut -f 1 -d " " \
+ )-${file}" || die
+ done
+
+ mv \
+ "${WORKDIR}/${PN}_3rdparty-${DNN_SAMPLES_FACE_DETECTOR_COMMIT}/res10_300x300_ssd_iter_140000.caffemodel" \
+ "${S}/samples/dnn/" || die
+ fi
+
+ if use contribxfeatures2d; then
+ cp \
+ "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_BOOSTDESC_COMMIT}/"*.i \
+ "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die
+ mkdir -p "${S}/.cache/xfeatures2d/boostdesc" || die
+ for file in "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_BOOSTDESC_COMMIT}/"*.i; do
+ mv \
+ "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_BOOSTDESC_COMMIT}/$(basename "${file}")" \
+ "${S}/.cache/xfeatures2d/boostdesc/$( \
+ md5sum "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_BOOSTDESC_COMMIT}/$(basename "${file}")" | cut -f 1 -d " " \
+ )-$(basename "${file}")" || die
+ done
+
+ cp \
+ "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_VGG_COMMIT}/"*.i \
+ "${WORKDIR}/${PN}_contrib-${PV}"/modules/xfeatures2d/src/ || die
+ mkdir -p "${S}/.cache/xfeatures2d/vgg" || die
+ for file in "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_VGG_COMMIT}/"*.i; do
+ mv \
+ "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_VGG_COMMIT}/$(basename "${file}")" \
+ "${S}/.cache/xfeatures2d/vgg/$( \
+ md5sum "${WORKDIR}/${PN}_3rdparty-${XFEATURES2D_VGG_COMMIT}/$(basename "${file}")" | cut -f 1 -d " " \
+ )-$(basename "${file}")" || die
+ done
+ fi
+
+ if use contribdnn; then
+ mkdir -p "${S}/.cache/data" || die
+ for file in "face_landmark_model.dat"; do
+ mv \
+ "${WORKDIR}/${PN}_3rdparty-${FACE_ALIGNMENT_COMMIT}/${file}" \
+ "${S}/.cache/data/$( \
+ md5sum "${WORKDIR}/${PN}_3rdparty-${FACE_ALIGNMENT_COMMIT}/${file}" | cut -f 1 -d " " \
+ )-${file}" || die
+ done
+ fi
+
+ if use cuda; then
+ mkdir -p "${S}/.cache/nvidia_optical_flow"
+ cp \
+ "${DISTDIR}/NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_COMMIT}.tar.gz" \
+ "${S}/.cache/nvidia_optical_flow/$( \
+ md5sum "${DISTDIR}/NVIDIAOpticalFlowSDK-${NVIDIA_OPTICAL_FLOW_COMMIT}.tar.gz" | cut -f 1 -d " " \
+ )-${NVIDIA_OPTICAL_FLOW_COMMIT}.tar.gz" || die
+ fi
+
+ if use java; then
+ java-pkg-opt-2_src_prepare
+
+ # this really belongs in src_prepare() too
+ JAVA_ANT_ENCODING="iso-8859-1"
+ # set encoding so even this cmake build will pick it up.
+ export ANT_OPTS+=" -Dfile.encoding=iso-8859-1"
+ fi
+}
+
+multilib_src_configure() {
+ # please dont sort here, order is the same as in CMakeLists.txt
+ local mycmakeargs=(
+ -DMIN_VER_CMAKE=3.26
+
+ -DCMAKE_POLICY_DEFAULT_CMP0146="OLD" # FindCUDA
+ -DCMAKE_POLICY_DEFAULT_CMP0148="OLD" # FindPythonInterp
+
+ # for protobuf
+ -DCMAKE_CXX_STANDARD=14
+
+ # Optional 3rd party components
+ # ===================================================
+ -DENABLE_DOWNLOAD=yes
+ -DOPENCV_ENABLE_NONFREE=$(usex non-free)
+ -DWITH_QUIRC=OFF # Do not have dependencies
+ -DWITH_FLATBUFFERS=$(usex contribdnn)
+ -DWITH_1394=$(usex ieee1394)
+ # -DWITH_AVFOUNDATION=OFF # IOS
+ -DWITH_VTK=$(multilib_native_usex vtk)
+ -DWITH_EIGEN=$(usex eigen)
+ -DWITH_VFW=OFF # Video windows support
+ -DWITH_FFMPEG=$(usex ffmpeg)
+ -DWITH_GSTREAMER=$(usex gstreamer)
+ -DWITH_GSTREAMER_0_10=OFF # Don't want this
+ -DWITH_GTK=$(usex gtk3)
+ -DWITH_GTK_2_X=OFF # only want gtk3 nowadays
+ -DWITH_IPP=OFF
+ # Jasper was removed from tree because of security problems.
+ # Upstream were/are making progress. We use openjpeg instead.
+ # bug 734284
+ -DWITH_JASPER=OFF
+ -DWITH_JPEG=$(usex jpeg)
+ -DWITH_OPENJPEG=$(usex jpeg2k)
+ -DWITH_WEBP=$(usex webp)
+ -DWITH_OPENEXR=$(multilib_native_usex openexr)
+ -DWITH_OPENGL=$(usex opengl)
+ -DOpenGL_GL_PREFERENCE="GLVND"
+ -DWITH_OPENVX=OFF
+ -DWITH_OPENNI=OFF # Not packaged
+ -DWITH_OPENNI2=OFF # Not packaged
+ -DWITH_PNG=$(usex png)
+ -DWITH_GDCM=OFF
+ -DWITH_PVAPI=OFF
+ -DWITH_GIGEAPI=OFF
+ -DWITH_ARAVIS=OFF
+ -DWITH_WIN32UI=OFF # Windows only
+ # -DWITH_QUICKTIME=OFF
+ # -DWITH_QTKIT=OFF
+ -DWITH_TBB=$(usex tbb)
+ -DWITH_OPENMP=$(usex !tbb $(usex openmp))
+ -DWITH_CSTRIPES=OFF
+ -DWITH_PTHREADS_PF=ON
+ -DWITH_TIFF=$(usex tiff)
+ -DWITH_UNICAP=OFF # Not packaged
+ -DWITH_V4L=$(usex v4l)
+ -DWITH_LIBV4L=$(usex v4l)
+ # -DWITH_DSHOW=ON # direct show supp
+ -DWITH_MSMF=OFF
+ -DWITH_XIMEA=OFF # Windows only
+ -DWITH_XINE=$(multilib_native_usex xine)
+ -DWITH_CLP=OFF
+ -DWITH_OPENCL=$(usex opencl)
+ -DWITH_OPENCL_SVM=OFF
+ -DWITH_OPENCLAMDFFT=$(usex opencl)
+ -DWITH_OPENCLAMDBLAS=$(usex opencl)
+ -DWITH_DIRECTX=OFF
+ -DWITH_INTELPERC=OFF
+ -DWITH_IPP_A=OFF
+ -DWITH_MATLAB=OFF
+ -DWITH_VA=$(usex vaapi)
+ -DWITH_VA_INTEL=$(usex vaapi $(usex video_cards_intel))
+ -DWITH_GDAL=$(multilib_native_usex gdal)
+ -DWITH_GPHOTO2=$(usex gphoto2)
+ -DWITH_LAPACK=$(multilib_native_usex lapack)
+ -DWITH_ITT=OFF # 3dparty libs itt_notify
+ # ===================================================
+ # CUDA build components: nvidia-cuda-toolkit
+ # ===================================================
+ -DWITH_CUDA=$(multilib_native_usex cuda)
+ -DWITH_CUBLAS=$(multilib_native_usex cuda)
+ -DWITH_CUFFT=$(multilib_native_usex cuda)
+ -DWITH_CUDNN=$(multilib_native_usex cudnn)
+ -DWITH_NVCUVID="no"
+ -DCUDA_NPP_LIBRARY_ROOT_DIR=$(usex cuda "${EPREFIX}/opt/cuda" "")
+ # ===================================================
+ # OpenCV build components
+ # ===================================================
+ -DBUILD_SHARED_LIBS=ON
+ -DBUILD_JAVA=$(multilib_native_usex java) # Ant needed, no compile flag
+ -DBUILD_ANDROID_EXAMPLES=OFF
+ -DBUILD_opencv_apps=$(usex opencvapps ON OFF)
+ -DBUILD_DOCS=OFF # Doesn't install anyways.
+ -DBUILD_EXAMPLES=$(multilib_native_usex examples)
+ -DBUILD_PERF_TESTS=OFF
+ -DBUILD_TESTS=$(multilib_native_usex testprograms)
+ -DBUILD_WITH_DEBUG_INFO=$(usex debug)
+ -DOPENCV_ENABLE_MEMORY_SANITIZER=$(usex debug)
+ # -DBUILD_WITH_STATIC_CRT=OFF
+ -DBUILD_WITH_DYNAMIC_IPP=OFF
+ -DBUILD_FAT_JAVA_LIB=OFF
+ # -DBUILD_ANDROID_SERVICE=OFF
+ -DBUILD_CUDA_STUBS=$(multilib_native_usex cuda)
+ -DOPENCV_EXTRA_MODULES_PATH=$(usex contrib "${WORKDIR}/${PN}_contrib-${PV}/modules" "")
+ # ===================================================
+ # OpenCV installation options
+ # ===================================================
+ -DINSTALL_CREATE_DISTRIB=OFF
+ -DINSTALL_C_EXAMPLES=$(multilib_native_usex examples)
+ -DINSTALL_TESTS=$(multilib_native_usex testprograms)
+ -DINSTALL_PYTHON_EXAMPLES=$(multilib_native_usex examples)
+ # -DINSTALL_ANDROID_EXAMPLES=OFF
+ -DINSTALL_TO_MANGLED_PATHS=OFF
+ -DOPENCV_GENERATE_PKGCONFIG=ON
+ # opencv uses both ${CMAKE_INSTALL_LIBDIR} and ${LIB_SUFFIX}
+ # to set its destination libdir
+ -DLIB_SUFFIX=
+ # ===================================================
+ # OpenCV build options
+ # ===================================================
+ -DENABLE_CCACHE=OFF
+ # bug 733796, but PCH is a risky game in CMake anyway
+ -DENABLE_PRECOMPILED_HEADERS=OFF
+ -DENABLE_SOLUTION_FOLDERS=OFF
+ -DENABLE_PROFILING=OFF
+ -DENABLE_COVERAGE=OFF
+
+ -DHAVE_opencv_java=$(multilib_native_usex java YES NO)
+ -DENABLE_NOISY_WARNINGS=OFF
+ -DOPENCV_WARNINGS_ARE_ERRORS=OFF
+ -DENABLE_IMPL_COLLECTION=OFF
+ -DENABLE_INSTRUMENTATION=OFF
+ -DGENERATE_ABI_DESCRIPTOR=OFF
+ -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF
+ # -DENABLE_LTO=$(usex lto)
+ # ===================================================
+ # things we want to be hard off or not yet figured out
+ # ===================================================
+ -DBUILD_PACKAGE=OFF
+ # ===================================================
+ # Not building protobuf but update files bug #631418
+ # ===================================================
+ -DWITH_PROTOBUF=ON
+ -DBUILD_PROTOBUF=OFF
+ -DPROTOBUF_UPDATE_FILES=ON
+ -DProtobuf_MODULE_COMPATIBLE=ON
+ # ===================================================
+ # things we want to be hard enabled not worth useflag
+ # ===================================================
+ -DCMAKE_SKIP_RPATH=ON
+ -DOPENCV_DOC_INSTALL_PATH=
+ -DBUILD_opencv_features2d=$(usex features2d ON OFF)
+ )
+
+ if use qt5; then
+ mycmakeargs+=(
+ -DWITH_QT=$(multilib_native_usex qt5 ON OFF)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON
+ )
+ elif use qt6; then
+ mycmakeargs+=(
+ -DWITH_QT=$(multilib_native_usex qt6 ON OFF)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5=ON
+ )
+ else
+ mycmakeargs+=(
+ -DWITH_QT=OFF
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt5=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_Qt6=ON
+ )
+ fi
+
+ # ==================================================
+ # cpu flags, should solve 633900
+ #===================================================
+ local CPU_BASELINE=""
+ for i in "${CPU_FEATURES_MAP[@]}" ; do
+ if [[ ${ABI} != x86 || ${i%:*} != "cpu_flags_x86_avx2" ]]; then # workaround for Bug 747163
+ use ${i%:*} && CPU_BASELINE="${CPU_BASELINE}${i#*:};"
+ fi
+ done
+
+ mycmakeargs+=(
+ -DOPENCV_CPU_OPT_IMPLIES_IGNORE=ON
+ -DCPU_BASELINE="${CPU_BASELINE}"
+ -DCPU_DISPATCH=
+ )
+
+ # ===================================================
+ # OpenCV Contrib Modules
+ # ===================================================
+ if use contrib; then
+ mycmakeargs+=(
+ -DBUILD_opencv_dnn=$(usex contribdnn ON OFF)
+ -DBUILD_opencv_xfeatures2d=$(usex contribxfeatures2d ON OFF)
+ -DBUILD_opencv_cvv=$(usex contribcvv ON OFF)
+ -DBUILD_opencv_hdf=$(multilib_native_usex contribhdf ON OFF)
+ -DBUILD_opencv_sfm=$(usex contribsfm ON OFF)
+ -DBUILD_opencv_freetype=$(usex contribfreetype ON OFF)
+ -DBUILD_opencv_ovis=$(usex contribovis ON OFF)
+ )
+
+ if multilib_is_native_abi; then
+ mycmakeargs+=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=$(usex !tesseract)
+ )
+ else
+ mycmakeargs+=(
+ -DCMAKE_DISABLE_FIND_PACKAGE_Tesseract=ON
+ )
+ fi
+ fi
+
+ # workaround for bug 413429
+ tc-export CC CXX
+
+ if use cuda; then
+ cuda_add_sandbox -w
+
+ if [[ -n "${CUDA_GENERATION}" ]]; then
+ mycmakeargs+=(
+ -DCUDA_GENERATION="${CUDA_GENERATION}"
+ )
+ fi
+
+ if [[ -n "${CUDA_ARCH_BIN}" ]]; then
+ mycmakeargs+=(
+ -DCUDA_ARCH_BIN="${CUDA_ARCH_BIN}"
+ )
+
+ if [[ -n "${CUDA_ARCH_PTX}" ]]; then
+ mycmakeargs+=(
+ -DCUDA_ARCH_PTX="${CUDA_ARCH_PTX}"
+ )
+ fi
+ fi
+
+ local NVCCFLAGS_OpenCV="${NVCCFLAGS// /\;}"
+ mycmakeargs+=(
+ -DOPENCV_CUDA_DETECTION_NVCC_FLAGS="-ccbin=$(cuda_gccdir)"
+ -DCUDA_NVCC_FLAGS="-forward-unknown-opts;${NVCCFLAGS_OpenCV//\"/}"
+ )
+
+ use vtk && mycmakeargs+=(
+ -DCMAKE_CUDA_FLAGS="-forward-unknown-opts ${NVCCFLAGS//\;/ }"
+ )
+ fi
+
+ if multilib_is_native_abi && use python; then
+ python_configure() {
+ # Set all python variables to load the correct Gentoo paths
+ local mycmakeargs=(
+ "${mycmakeargs[@]}"
+ # python_setup alters PATH and sets this as wrapper
+ # to the correct interpreter we are building for
+ -DPYTHON_DEFAULT_EXECUTABLE="${EPYTHON}"
+ -DINSTALL_PYTHON_EXAMPLES="$(usex examples)"
+ )
+ cmake_src_configure
+ use java && java-ant-2_src_configure
+ }
+
+ python_foreach_impl python_configure
+ else
+ mycmakeargs+=(
+ -DPYTHON_EXECUTABLE=OFF
+ -DINSTALL_PYTHON_EXAMPLES=OFF
+ -DBUILD_opencv_python2=OFF
+ -DBUILD_opencv_python3=OFF
+ )
+ cmake_src_configure
+ use java && java-ant-2_src_configure
+ fi
+
+}
+
+multilib_src_compile() {
+ if multilib_is_native_abi && use python; then
+ python_foreach_impl cmake_src_compile
+ else
+ cmake_src_compile
+ fi
+}
+
+multilib_src_install() {
+ if multilib_is_native_abi && use python; then
+ python_foreach_impl cmake_src_install
+ python_foreach_impl python_optimize
+ else
+ cmake_src_install
+ fi
+}