diff options
author | 2023-12-08 15:58:23 +0100 | |
---|---|---|
committer | 2024-01-10 12:32:37 +0000 | |
commit | 0e9205edb9922309ecd568b7085fd59726c7d2ca (patch) | |
tree | 28266cd2eda219d2d1b9dc1c6f41aaae9a741289 /media-libs/opencv | |
parent | sci-astronomy/stellarium: Keyword 23.4 riscv, #921695 (diff) | |
download | gentoo-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')
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>&<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=">media-libs/opencv-4.8.1-r1">Enable xfeatures2d in contrib</flag> + <flag name="contribxfeatures2d" restrict="<=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=">=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=">=media-libs/opencv-4.4.0" name="lto">Build using Link Time Optimizations (LTO)</flag> - <flag restrict=">=media-libs/opencv-4.1.2" name="opencvapps">Enable compilation with opencvapps</flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="gflags">Use Google's C++ argument parsing library</flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="glog">Use Google's C++ loggin library</flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="contribxfeatures2d">Enables xfeatures2d and autodownload of samples in contrib</flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="contribcvv">CVV module requires Qt5</flag> - <flag restrict=">=media-libs/opencv-3.3.0" name="contribdnn">DNN module contrib requires tiny dnn</flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="contribhdf">HDF module requires <pkg>sci-libs/hdf5</pkg></flag> - <flag restrict=">=media-libs/opencv-3.1.0" name="contribsfm">SFM module requires eigen, gflags, and glog</flag> - <flag restrict=">=media-libs/opencv-4.4.0" name="contribfreetype">Enable Drawing UTF-8 strings with freetype/harfbuzz</flag> - <flag restrict=">=media-libs/opencv-4.4.0" name="contribovis">Enable Ogre vision module support</flag> - <flag restrict=">=media-libs/opencv-3.4.0" name="dnnsamples">Download dnn caffeemodel samples</flag> - <flag restrict=">=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 +} |