diff options
author | Andreas Sturmlechner <asturm@gentoo.org> | 2024-02-04 11:39:56 +0100 |
---|---|---|
committer | Andreas Sturmlechner <asturm@gentoo.org> | 2024-02-04 13:44:32 +0100 |
commit | 5c080f8d73d1351815fa52e13155c6a12093693f (patch) | |
tree | f5edce5c9aaa79054bd8b5ad5304ea245e932034 /media-libs | |
parent | dev-ruby/kramdown-parser-gfm: Keyword 1.1.0-r1 ppc64, #923754 (diff) | |
download | gentoo-5c080f8d73d1351815fa52e13155c6a12093693f.tar.gz gentoo-5c080f8d73d1351815fa52e13155c6a12093693f.tar.bz2 gentoo-5c080f8d73d1351815fa52e13155c6a12093693f.zip |
media-libs/opencv: Fix build with >=dev-libs/protobuf-22
Urgent fix since someone decided to bump dev-libs/protobuf-22.5 ...
Closes: https://bugs.gentoo.org/909087
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'media-libs')
-rw-r--r-- | media-libs/opencv/files/opencv-4.8.1-protobuf-22.patch | 190 | ||||
-rw-r--r-- | media-libs/opencv/opencv-4.8.1-r1.ebuild | 4 |
2 files changed, 193 insertions, 1 deletions
diff --git a/media-libs/opencv/files/opencv-4.8.1-protobuf-22.patch b/media-libs/opencv/files/opencv-4.8.1-protobuf-22.patch new file mode 100644 index 000000000000..1e8a369777a5 --- /dev/null +++ b/media-libs/opencv/files/opencv-4.8.1-protobuf-22.patch @@ -0,0 +1,190 @@ +From 6f3dde396f6eed53afcd5cc882402e18ff7c1ca8 Mon Sep 17 00:00:00 2001 +From: Kumataro <Kumataro@users.noreply.github.com> +Date: Sat, 7 Oct 2023 10:11:25 +0900 +Subject: [PATCH] 3rdparty: supporting protobuf v22 and later + +subsumes: + +- dnn: disable some tests for external protobuf +- use GREATER instead of GREATER_EQUAL and remove new blank line at EOF +- fix for BUILD_TESTS=OFF +- Use Config mode in CMake. + +(cleaning up review noise) + +--- + cmake/OpenCVFindProtobuf.cmake | 35 +++++++++++++++++++++++++++----- + modules/dnn/CMakeLists.txt | 6 ++++++ + modules/dnn/test/test_layers.cpp | 24 ++++++++++++++++++---- + 3 files changed, 56 insertions(+), 9 deletions(-) + +diff --git a/cmake/OpenCVFindProtobuf.cmake b/cmake/OpenCVFindProtobuf.cmake +index 8835347..5b1e175 100644 +--- a/cmake/OpenCVFindProtobuf.cmake ++++ b/cmake/OpenCVFindProtobuf.cmake +@@ -30,8 +30,14 @@ if(BUILD_PROTOBUF) + set(Protobuf_LIBRARIES "libprotobuf") + set(HAVE_PROTOBUF TRUE) + else() ++ # we still need this for command PROTOBUF_GENERATE_CPP. ++ set(protobuf_MODULE_COMPATIBLE ON) ++ + unset(Protobuf_VERSION CACHE) +- find_package(Protobuf QUIET) ++ find_package(Protobuf QUIET CONFIG) ++ if(NOT Protobuf_FOUND) ++ find_package(Protobuf QUIET) ++ endif() + + # Backwards compatibility + # Define camel case versions of input variables +@@ -67,6 +73,20 @@ else() + endif() + endif() + ++# See https://github.com/opencv/opencv/issues/24369 ++# In Protocol Buffers v22.0 and later drops C++11 support and depends abseil-cpp. ++# Details: https://protobuf.dev/news/2022-08-03/ ++# And if std::text_view is in abseil-cpp requests C++17 and later. ++ ++if(HAVE_PROTOBUF) ++ if(NOT (Protobuf_VERSION VERSION_LESS 22)) ++ if((CMAKE_CXX_STANDARD EQUAL 98) OR (CMAKE_CXX_STANDARD LESS 17)) ++ message(STATUS "CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} is too old to support protobuf(${Protobuf_VERSION}) and/or abseil-cpp. Use C++17 or later. Turning HAVE_PROTOBUF off") ++ set(HAVE_PROTOBUF FALSE) ++ endif() ++ endif() ++endif() ++ + if(HAVE_PROTOBUF AND PROTOBUF_UPDATE_FILES AND NOT COMMAND PROTOBUF_GENERATE_CPP) + message(FATAL_ERROR "Can't configure protobuf dependency (BUILD_PROTOBUF=${BUILD_PROTOBUF} PROTOBUF_UPDATE_FILES=${PROTOBUF_UPDATE_FILES})") + endif() +@@ -74,15 +94,20 @@ endif() + if(HAVE_PROTOBUF) + list(APPEND CUSTOM_STATUS protobuf) + if(NOT BUILD_PROTOBUF) ++ unset( __location) + if(TARGET "${Protobuf_LIBRARIES}") + get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION_RELEASE) + if(NOT __location) + get_target_property(__location "${Protobuf_LIBRARIES}" IMPORTED_LOCATION) + endif() +- elseif(Protobuf_LIBRARY) +- set(__location "${Protobuf_LIBRARY}") +- else() +- set(__location "${Protobuf_LIBRARIES}") ++ endif() ++ ++ if(NOT __location) ++ if(Protobuf_LIBRARY) ++ set(__location "${Protobuf_LIBRARY}") ++ else() ++ set(__location "${Protobuf_LIBRARIES}") ++ endif() + endif() + endif() + list(APPEND CUSTOM_STATUS_protobuf " Protobuf:" +diff --git a/modules/dnn/CMakeLists.txt b/modules/dnn/CMakeLists.txt +index 804b78e..9fcc460 100644 +--- a/modules/dnn/CMakeLists.txt ++++ b/modules/dnn/CMakeLists.txt +@@ -245,6 +245,12 @@ ocv_create_module(${libs} ${dnn_runtime_libs}) + ocv_add_samples() + ocv_add_accuracy_tests(${dnn_runtime_libs}) + ++if(NOT BUILD_PROTOBUF) ++ if(TARGET opencv_test_dnn) ++ ocv_target_compile_definitions(opencv_test_dnn PRIVATE "OPENCV_DNN_EXTERNAL_PROTOBUF=1") ++ endif() ++endif() ++ + set(perf_path "${CMAKE_CURRENT_LIST_DIR}/perf") + file(GLOB_RECURSE perf_srcs "${perf_path}/*.cpp") + file(GLOB_RECURSE perf_hdrs "${perf_path}/*.hpp" "${perf_path}/*.h") +diff --git a/modules/dnn/test/test_layers.cpp b/modules/dnn/test/test_layers.cpp +index 763d94b..6cb6d54 100644 +--- a/modules/dnn/test/test_layers.cpp ++++ b/modules/dnn/test/test_layers.cpp +@@ -756,11 +756,15 @@ TEST_F(Layer_RNN_Test, get_set_test) + + TEST_P(Test_Caffe_layers, Accum) + { ++#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF ++ throw SkipTestException("Requires patched protobuf"); ++#else + if (backend == DNN_BACKEND_OPENCV && target != DNN_TARGET_CPU) + applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); + + testLayerUsingCaffeModels("accum", false, false, 0.0, 0.0, 2); + testLayerUsingCaffeModels("accum_ref", false, false, 0.0, 0.0, 2); ++#endif + } + + TEST_P(Test_Caffe_layers, FlowWarp) +@@ -780,27 +784,39 @@ TEST_P(Test_Caffe_layers, ChannelNorm) + + TEST_P(Test_Caffe_layers, DataAugmentation) + { ++#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF ++ throw SkipTestException("Requires patched protobuf"); ++#else + if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) + applyTestTag(CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); + testLayerUsingCaffeModels("data_augmentation", true, false); + testLayerUsingCaffeModels("data_augmentation_2x1", true, false); + testLayerUsingCaffeModels("data_augmentation_8x6", true, false); ++#endif + } + + TEST_P(Test_Caffe_layers, Resample) + { ++#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF ++ throw SkipTestException("Requires patched protobuf"); ++#else + if (backend != DNN_BACKEND_OPENCV) + applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); + testLayerUsingCaffeModels("nearest_2inps", false, false, 0.0, 0.0, 2); + testLayerUsingCaffeModels("nearest", false, false); ++#endif + } + + TEST_P(Test_Caffe_layers, Correlation) + { ++#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF ++ throw SkipTestException("Requires patched protobuf"); ++#else + if (backend == DNN_BACKEND_OPENCV && target == DNN_TARGET_OPENCL_FP16) + applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_NGRAPH, CV_TEST_TAG_DNN_SKIP_IE_NN_BUILDER, + CV_TEST_TAG_DNN_SKIP_OPENCL, CV_TEST_TAG_DNN_SKIP_OPENCL_FP16); + testLayerUsingCaffeModels("correlation", false, false, 0.0, 0.0, 2); ++#endif + } + + TEST_P(Test_Caffe_layers, Convolution2Inputs) +@@ -1641,12 +1657,11 @@ private: + int outWidth, outHeight, zoomFactor; + }; + +-#ifndef OPENCV_DNN_EXTERNAL_PROTOBUF + TEST_P(Test_Caffe_layers, Interp) +-#else +-TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (available in OpenCV source tree only) +-#endif + { ++#ifdef OPENCV_DNN_EXTERNAL_PROTOBUF ++ throw SkipTestException("Requires patched protobuf"); ++#else + #if defined(INF_ENGINE_RELEASE) && INF_ENGINE_VER_MAJOR_EQ(2021030000) + if (backend == DNN_BACKEND_INFERENCE_ENGINE_NGRAPH && target == DNN_TARGET_MYRIAD) + applyTestTag(CV_TEST_TAG_DNN_SKIP_IE_MYRIAD, CV_TEST_TAG_DNN_SKIP_IE_NGRAPH); // exception +@@ -1670,6 +1685,7 @@ TEST_P(Test_Caffe_layers, DISABLED_Interp) // requires patched protobuf (availa + + // Test an implemented layer. + testLayerUsingCaffeModels("layer_interp", false, false); ++#endif + } + + INSTANTIATE_TEST_CASE_P(/*nothing*/, Test_Caffe_layers, dnnBackendsAndTargets()); +-- +2.43.0 + diff --git a/media-libs/opencv/opencv-4.8.1-r1.ebuild b/media-libs/opencv/opencv-4.8.1-r1.ebuild index 9d7ece8e5c85..d183c6f8d97a 100644 --- a/media-libs/opencv/opencv-4.8.1-r1.ebuild +++ b/media-libs/opencv/opencv-4.8.1-r1.ebuild @@ -117,7 +117,7 @@ REQUIRED_USE=" RDEPEND=" app-arch/bzip2[${MULTILIB_USEDEP}] - <dev-libs/protobuf-23:=[${MULTILIB_USEDEP}] + dev-libs/protobuf:=[${MULTILIB_USEDEP}] sys-libs/zlib[${MULTILIB_USEDEP}] cuda? ( dev-util/nvidia-cuda-toolkit:0= ) cudnn? ( dev-libs/cudnn:= ) @@ -214,6 +214,8 @@ PATCHES=( "${FILESDIR}/${PN}-4.8.1-libpng16.patch" "${FILESDIR}/${PN}-4.8.1-ade-0.1.2a.tar.gz.patch" + "${FILESDIR}/${PN}-4.8.1-protobuf-22.patch" # bug 909087, in 4.9.0 + # TODO applied in src_prepare # "${FILESDIR}/${PN}_contrib-${PV}-rgbd.patch" # "${FILESDIR}/${PN}_contrib-4.8.1-NVIDIAOpticalFlowSDK-2.0.tar.gz.patch" |