commit:     0e9205edb9922309ecd568b7085fd59726c7d2ca
Author:     Paul Zander <negril.nx+gentoo <AT> gmail <DOT> com>
AuthorDate: Fri Dec  8 14:58:23 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Wed Jan 10 12:32:37 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=0e9205ed

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 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-libs/opencv/Manifest                         |   7 +
 .../files/opencv-4.8.1-ade-0.1.2a.tar.gz.patch     |  18 +
 .../opencv-4.8.1-drop-python2-detection.patch      |  23 +
 ...ncv-4.8.1-eliminate-lto-compiler-warnings.patch |  36 ++
 .../opencv/files/opencv-4.8.1-libpng16.patch       |  58 ++
 .../opencv/files/opencv-4.8.1-opencv_test.patch    |  18 +
 .../files/opencv-4.8.1-python3_12-support.patch    |  25 +
 .../opencv-4.8.1-use-system-flatbuffers.patch      |  36 ++
 .../files/opencv-4.8.1-use-system-opencl.patch     |  25 +
 ...rib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch |  20 +
 .../opencv/files/opencv_contrib-4.8.1-rgbd.patch   |  15 +
 media-libs/opencv/metadata.xml                     |  34 +-
 media-libs/opencv/opencv-4.8.1-r1.ebuild           | 644 +++++++++++++++++++++
 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 <[email protected]>
+
+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 <[email protected]>
+
+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?=
+ <[email protected]>
+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: 不鱼儿 <[email protected]>
+---
+ 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 <[email protected]>
+
+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 <[email protected]>
+
+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?= <[email protected]>
+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 <[email protected]>
+
+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 <[email protected]>
+
+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 <[email protected]>
+
+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 <[email protected]>
+
+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
+}


Reply via email to