diff --git a/27536.patch b/27536.patch new file mode 100644 index 0000000..0b7a4ce --- /dev/null +++ b/27536.patch @@ -0,0 +1,57 @@ +From 353b4ddf52db48ba85d2efaa33310afa0eb73a72 Mon Sep 17 00:00:00 2001 +From: Kumataro +Date: Sun, 13 Jul 2025 08:11:06 +0900 +Subject: [PATCH 1/2] eigen: fix to get version from eigen master branch + +--- + cmake/OpenCVFindLibsPerf.cmake | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake +index dfc94597bbba..55a08f72d00d 100644 +--- a/cmake/OpenCVFindLibsPerf.cmake ++++ b/cmake/OpenCVFindLibsPerf.cmake +@@ -84,6 +84,12 @@ if(WITH_EIGEN AND NOT HAVE_EIGEN) + set(EIGEN_WORLD_VERSION ${EIGEN3_WORLD_VERSION}) + set(EIGEN_MAJOR_VERSION ${EIGEN3_MAJOR_VERSION}) + set(EIGEN_MINOR_VERSION ${EIGEN3_MINOR_VERSION}) ++ elseif(DEFINED Eigen3_VERSION_MAJOR) ++ # see https://github.com/opencv/opencv/issues/27530 ++ # Case sensitive is needed to support Eigen on Master branch at 13 July,2025. ++ set(EIGEN_WORLD_VERSION ${Eigen3_VERSION_MAJOR}) ++ set(EIGEN_MAJOR_VERSION ${Eigen3_VERSION_MINOR}) ++ set(EIGEN_MINOR_VERSION ${Eigen3_VERSION_PATCH}) + else() # Eigen config file + set(EIGEN_WORLD_VERSION ${EIGEN3_VERSION_MAJOR}) + set(EIGEN_MAJOR_VERSION ${EIGEN3_VERSION_MINOR}) + +From 94e909d4a6811bbd4774baae8722df79d057a2bc Mon Sep 17 00:00:00 2001 +From: Kumataro +Date: Mon, 14 Jul 2025 21:25:52 +0900 +Subject: [PATCH 2/2] add pointer to Eigen commit + +--- + cmake/OpenCVFindLibsPerf.cmake | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/cmake/OpenCVFindLibsPerf.cmake b/cmake/OpenCVFindLibsPerf.cmake +index 55a08f72d00d..861a39c47f9b 100644 +--- a/cmake/OpenCVFindLibsPerf.cmake ++++ b/cmake/OpenCVFindLibsPerf.cmake +@@ -84,13 +84,13 @@ if(WITH_EIGEN AND NOT HAVE_EIGEN) + set(EIGEN_WORLD_VERSION ${EIGEN3_WORLD_VERSION}) + set(EIGEN_MAJOR_VERSION ${EIGEN3_MAJOR_VERSION}) + set(EIGEN_MINOR_VERSION ${EIGEN3_MINOR_VERSION}) +- elseif(DEFINED Eigen3_VERSION_MAJOR) ++ elseif(DEFINED Eigen3_VERSION_MAJOR) # Recommended package config variables + # see https://github.com/opencv/opencv/issues/27530 +- # Case sensitive is needed to support Eigen on Master branch at 13 July,2025. + set(EIGEN_WORLD_VERSION ${Eigen3_VERSION_MAJOR}) + set(EIGEN_MAJOR_VERSION ${Eigen3_VERSION_MINOR}) + set(EIGEN_MINOR_VERSION ${Eigen3_VERSION_PATCH}) +- else() # Eigen config file ++ else() # Deprecated package config variables ++ # Removed on master at https://gitlab.com/libeigen/eigen/-/commit/f2984cd0778dd0a1d7e74216d826eaff2bc6bfab + set(EIGEN_WORLD_VERSION ${EIGEN3_VERSION_MAJOR}) + set(EIGEN_MAJOR_VERSION ${EIGEN3_VERSION_MINOR}) + set(EIGEN_MINOR_VERSION ${EIGEN3_VERSION_PATCH}) diff --git a/27691.patch b/27691.patch new file mode 100644 index 0000000..c08b882 --- /dev/null +++ b/27691.patch @@ -0,0 +1,43 @@ +From 90c444abd387ffa70b2e72a34922903a2f0f4f5a Mon Sep 17 00:00:00 2001 +From: Alexander Smorkalov +Date: Wed, 20 Aug 2025 10:53:51 +0300 +Subject: [PATCH] FFmpeg 8.0 support. + +--- + modules/videoio/src/cap_ffmpeg_impl.hpp | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/modules/videoio/src/cap_ffmpeg_impl.hpp b/modules/videoio/src/cap_ffmpeg_impl.hpp +index 489dbe565d3d..5780b4c11361 100644 +--- a/modules/videoio/src/cap_ffmpeg_impl.hpp ++++ b/modules/videoio/src/cap_ffmpeg_impl.hpp +@@ -685,7 +685,10 @@ void CvCapture_FFMPEG::close() + if( video_st ) + { + #ifdef CV_FFMPEG_CODECPAR ++// avcodec_close removed in FFmpeg release 8.0 ++# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100)) + avcodec_close( context ); ++# endif + #endif + video_st = NULL; + } +@@ -2005,7 +2008,18 @@ void CvCapture_FFMPEG::get_rotation_angle() + rotation_angle = 0; + #if LIBAVFORMAT_BUILD >= CALC_FFMPEG_VERSION(57, 68, 100) + const uint8_t *data = 0; ++ // av_stream_get_side_data removed in FFmpeg release 8.0 ++# if (LIBAVCODEC_BUILD < CALC_FFMPEG_VERSION(62, 11, 100)) + data = av_stream_get_side_data(video_st, AV_PKT_DATA_DISPLAYMATRIX, NULL); ++# else ++ AVPacketSideData* sd = video_st->codecpar->coded_side_data; ++ int nb_sd = video_st->codecpar->nb_coded_side_data; ++ if (sd && nb_sd > 0) ++ { ++ const AVPacketSideData* mtx = av_packet_side_data_get(sd, nb_sd, AV_PKT_DATA_DISPLAYMATRIX); ++ data = mtx->data; ++ } ++# endif + if (data) + { + rotation_angle = -cvRound(av_display_rotation_get((const int32_t*)data)); diff --git a/opencv.spec b/opencv.spec index c4d1dab..c197a96 100644 --- a/opencv.spec +++ b/opencv.spec @@ -9,7 +9,6 @@ %bcond_with linters %bcond_without ffmpeg %bcond_without gstreamer -%bcond_with eigen2 %bcond_without eigen3 %bcond_without opencl %ifarch x86_64 %{arm} @@ -23,9 +22,10 @@ %bcond_without xine # Atlas need (missing: Atlas_CLAPACK_INCLUDE_DIR Atlas_CBLAS_LIBRARY Atlas_BLAS_LIBRARY Atlas_LAPACK_LIBRARY) # LAPACK may use atlas or openblas since now it detect openblas, atlas is not used anyway, more info please -# check OpenCVFindLAPACK.cmake +# Now FlexiBLAS should be used instead: https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager %bcond_with atlas -%bcond_without openblas +%bcond_with openblas +%bcond_without flexiblas %bcond_without gdcm %if 0%{?rhel} >= 8 %bcond_with vtk @@ -69,13 +69,13 @@ %endif Name: opencv -Version: 4.11.0 +Version: 4.12.0 %global javaver %(foo=%{version}; echo ${foo//./}) %global majorver %(foo=%{version}; a=(${foo//./ }); echo ${a[0]} ) %global minorver %(foo=%{version}; a=(${foo//./ }); echo ${a[1]} ) %global padding %(digits=00; num=%{minorver}; echo ${digits:${#num}:${#digits}} ) %global abiver %(echo %{majorver}%{padding}%{minorver} ) -Release: 11%{?dist} +Release: 20%{?dist} Summary: Collection of algorithms for computer vision # This is normal three clause BSD. License: BSD-3-Clause AND Apache-2.0 AND ISC @@ -102,25 +102,13 @@ Source6: https://github.com/WeChatCV/opencv_3rdparty/archive/%{wechat_com Patch0: opencv-4.1.0-install_3rdparty_licenses.patch Patch3: opencv.python.patch -Patch4: https://github.com/opencv/opencv/pull/26750.patch -Patch5: https://github.com/opencv/opencv/pull/26786.patch -# backport all PNG patches from 4.11.0 to 45aa502549 - fixes issues -# including complete failure to read PNGs on s390x (big-endian) -# https://bugzilla.redhat.com/show_bug.cgi?id=2345306 -# https://github.com/opencv/opencv/issues/26913 -Patch6: 0001-Merge-pull-request-26739-from-vrabaud-png_leak.patch -Patch7: 0002-Fix-remaining-bugs-in-PNG-reader.patch -Patch8: 0003-Merge-pull-request-26782-from-vrabaud-png_leak.patch -Patch9: 0004-Move-the-checks-to-read_chunk.patch -Patch10: 0005-minor-improvement-for-better-code-readibility.patch -Patch11: 0006-Merge-pull-request-26835-from-sturkmen72-patch-4.patch -Patch12: 0007-fix-for-large-tEXt-chunk.patch -Patch13: 0008-Merge-pull-request-26854-from-vrabaud-png_leak.patch -Patch14: 0009-Merge-pull-request-26872-from-sturkmen72-ImageEncode.patch -Patch15: 0010-Merge-pull-request-26915-from-mshabunin-fix-png-be.patch # Fix build with Qt 6.9, by Atri Bhattacharya (thanks) # https://github.com/opencv/opencv/issues/27223#issuecomment-2797750952 Patch16: qt69.patch +# Fix build with FFmpeg 8 +Patch17: https://github.com/opencv/opencv/pull/27691.patch +# Fix detect Eigen3 > 3 +Patch18: https://github.com/opencv/opencv/pull/27536.patch BuildRequires: gcc-c++ @@ -133,7 +121,6 @@ BuildRequires: pkgconfig(cufft-%{?_cuda_version}) BuildRequires: pkgconfig(nppc-%{?_cuda_version}) %{?with_dnn_cuda:BuildRequires: libcudnn8-devel} } -%{?with_eigen2:BuildRequires: eigen2-devel} %{?with_eigen3:BuildRequires: eigen3-devel} BuildRequires: libtheora-devel BuildRequires: libvorbis-devel @@ -155,7 +142,7 @@ BuildRequires: OpenEXR-devel } %{?with_openni: BuildRequires: openni-devel -%if 0%{?fedora} +%if 0%{?fedora} && 0%{?fedora} < 44 BuildRequires: openni-primesense %endif } @@ -166,7 +153,6 @@ BuildRequires: zlib-devel BuildRequires: pkgconfig BuildRequires: python3-devel BuildRequires: python3-numpy -BuildRequires: python3-setuptools %{?with_linters: BuildRequires: pylint BuildRequires: python3-flake8 @@ -213,7 +199,6 @@ BuildRequires: harfbuzz-devel BuildRequires: vtk-java } } -%{?with_atlas:BuildRequires: atlas-devel} #ceres-solver-devel push eigen3-devel and tbb-devel %{?with_tbb: %{?with_eigen3: @@ -222,11 +207,9 @@ BuildRequires: vtk-java # BuildRequires: ceres-solver-devel } } -%{?with_openblas: -BuildRequires: openblas-devel -BuildRequires: blas-devel -BuildRequires: lapack-devel -} +%{?with_atlas:BuildRequires: atlas-devel} +%{?with_openblas:BuildRequires: openblas-devel} +%{?with_flexiblas:BuildRequires: flexiblas-devel} %{?with_gdcm:BuildRequires: gdcm-devel} %{?with_libmfx:BuildRequires: libvpl-devel} %{?with_clp:BuildRequires: coin-or-Clp-devel} @@ -236,7 +219,10 @@ BuildRequires: ant BuildRequires: java-devel } %{?with_vulkan:BuildRequires: vulkan-headers} -#BuildRequires: flatbuffers-devel +%ifnarch i686 +BuildRequires: flatbuffers-devel +BuildRequires: flatbuffers-compiler +%endif %if %{with tests} BuildRequires: xorg-x11-drv-dummy BuildRequires: mesa-dri-drivers @@ -303,7 +289,9 @@ This package contains the OpenCV %{moduledesc} module runtime.\ %opencv_module_subpkg -m video -d %{quote:Video Analysis} %opencv_module_subpkg -m videoio -d %{quote:Video I/O} # contrib/extra modules +%if %{with eigen3} %opencv_module_subpkg -m alphamat -d %{quote:Alpha Matting} +%endif %opencv_module_subpkg -m aruco -d %{quote:Aruco Markers} %opencv_module_subpkg -m bgsegm -d %{quote:Background Segmentation} %opencv_module_subpkg -m bioinspired -d %{quote:Biologically-inspired Vision Models} @@ -423,19 +411,9 @@ popd &>/dev/null %patch -P 0 -p1 -b .install_3rdparty_licenses %patch -P 3 -p1 -b .python_install_binary -%patch -P 4 -p1 -b .VSX_intrinsics -%patch -P 5 -p1 -b .GCC15 -%patch -P 6 -p1 -b .png1 -%patch -P 7 -p1 -b .png2 -%patch -P 8 -p1 -b .png3 -%patch -P 9 -p1 -b .png4 -%patch -P 10 -p1 -b .png5 -%patch -P 11 -p1 -b .png6 -%patch -P 12 -p1 -b .png7 -%patch -P 13 -p1 -b .png8 -%patch -P 14 -p1 -b .png9 -%patch -P 15 -p1 -b .png10 %patch -P 16 -p1 -b .qt69 +%patch -P 17 -p1 -b .ffmpeg8 +%patch -P 18 -p1 -b .eigen3 pushd %{name}_contrib-%{version} #patch1 -p1 -b .install_cvv @@ -458,14 +436,20 @@ mv opencv_3rdparty-%{wechat_commit}/sr.prototxt .cache/wechat_qrcode/69db99927a7 mkdir -p .cache/ade install -pm 0644 %{S:4} .cache/ade/ +%generate_buildrequires +cd modules/python/package +%pyproject_buildrequires + %build +# TODO: Please submit an issue to upstream (rhbz#2381337) +export CMAKE_POLICY_VERSION_MINIMUM=3.5 # enabled by default if libraries are presents at build time: # GTK, GSTREAMER, 1394, V4L, eigen3 # non available on Fedora: FFMPEG, XINE # disabling IPP because it is closed source library from intel %cmake \ -%if 0%{?fedora} > 38 +%if 0%{?fedora} > 38 || 0%{?rhel} > 10 -DCMAKE_CXX_STANDARD=17 \ %endif -DCV_TRACE=OFF \ @@ -484,6 +468,9 @@ install -pm 0644 %{S:4} .cache/ade/ -DWITH_CAROTENE=OFF \ %ifarch x86_64 %{ix86} -DCPU_BASELINE=SSE2 \ +%ifarch %{ix86} + -DCPU_DISPATCH=SSE4_2 \ +%endif %endif -DCMAKE_BUILD_TYPE=Release \ %{?with_java: -DBUILD_opencv_java=ON \ @@ -508,7 +495,6 @@ install -pm 0644 %{S:4} .cache/ade/ -DINSTALL_C_EXAMPLES=ON \ -DINSTALL_PYTHON_EXAMPLES=ON \ -DPYTHON3_EXECUTABLE=%{__python3} \ - -DPYTHON3_PACKAGES_PATH=%{python3_sitearch} \ -DOPENCV_GENERATE_SETUPVARS=OFF \ %{!?with_linters: \ -DENABLE_PYLINT=OFF \ @@ -524,7 +510,9 @@ install -pm 0644 %{S:4} .cache/ade/ -DOPENCV_CONFIG_INSTALL_PATH=%{_lib}/cmake/OpenCV \ -DOPENCV_GENERATE_PKGCONFIG=ON \ %{?with_extras_tests: -DOPENCV_TEST_DATA_PATH=opencv_extra-%{version}/testdata} \ + %{?without_eigen3: -DWITH_EIGEN=OFF} \ %{?with_gdcm: -DWITH_GDCM=ON } \ + -DWITH_IMGCODEC_GIF=ON \ %{?with_libmfx: -DWITH_MFX=ON -DWITH_GAPI_ONEVPL=ON} \ %{?with_clp: -DWITH_CLP=ON } \ %{?with_libva: -DWITH_VA=ON } \ @@ -533,11 +521,24 @@ install -pm 0644 %{S:4} .cache/ade/ %cmake_build +cd %{__cmake_builddir}/python_loader/ +%pyproject_wheel %install %cmake_install cd %{__cmake_builddir}/python_loader/ -%py3_install -- --install-lib %{python3_sitearch} +%pyproject_install +%pyproject_save_files cv2 +# Hack - move the binary +%ifnarch i686 +mkdir -p %{buildroot}/%{python3_sitearch}/cv2 +mv %{buildroot}/%{python3_sitelib}/cv2/cv2.cpython-*-linux-gnu.so \ + %{buildroot}/%{python3_sitearch}/cv2 +%endif +# Correct reference in config-x.yz, keep build one for testing +mkdir test_python +cp %{buildroot}/%{python3_sitelib}/cv2/config-*.py test_python +sed -i -e "s#/builddir[^']*#%{python3_sitearch}/cv2#g" %{buildroot}/%{python3_sitelib}/cv2/config-*.py rm -rf %{buildroot}%{_datadir}/OpenCV/licenses/ %if %{with java} @@ -552,6 +553,14 @@ ln -s -r %{buildroot}%{_jnidir}/opencv-%{javaver}.jar %{buildroot}%{_jnidir}/ope %check +export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/%{__cmake_builddir}/lib:$LD_LIBARY_PATH +# Due to complex import method, we need to point to builddir temporarily at least to have test working, undoing +# the fix above and then removing this again +cp %{buildroot}/%{python3_sitelib}/cv2/config-*.py . +cp %{__cmake_builddir}/python_loader/test_python/config-*.py %{buildroot}/%{python3_sitelib}/cv2/ +%pyproject_check_import -e cv2.config +cp config-*.py %{buildroot}/%{python3_sitelib}/cv2/ + #ifnarch ppc64 %if %{with tests} cp %{S:5} %{__cmake_builddir} @@ -562,7 +571,6 @@ ln -s -r %{buildroot}%{_jnidir}/opencv-%{javaver}.jar %{buildroot}%{_jnidir}/ope fi $Xorg -noreset +extension GLX +extension RANDR +extension RENDER -logfile ./xorg.log -config ./xorg.conf -configdir . :99 & export DISPLAY=:99 - export LD_LIBRARY_PATH=%{_builddir}/%{name}-%{version}/%{__cmake_builddir}/lib:$LD_LIBARY_PATH %ctest || : %endif #endif @@ -598,9 +606,14 @@ ln -s -r %{buildroot}%{_jnidir}/opencv-%{javaver}.jar %{buildroot}%{_jnidir}/ope %files doc %{_datadir}/opencv4/samples +# some files aren't properly listed +#files -n python3-opencv -f %%{pyproject_files} %files -n python3-opencv +%{python3_sitelib}/opencv*.dist-info +%{python3_sitelib}/cv2 +%ifnarch i686 %{python3_sitearch}/cv2 -%{python3_sitearch}/opencv-*.egg-info +%endif %if %{with java} %files java @@ -612,6 +625,33 @@ ln -s -r %{buildroot}%{_jnidir}/opencv-%{javaver}.jar %{buildroot}%{_jnidir}/ope %changelog +* Sun Nov 23 2025 Sandro Mani - 4.11.0-20 +- Rebuild (gdal) + +* Tue Nov 11 2025 Cristian Le - 4.11.0-19 +- Allow to build with CMake 4.0 (rhbz#2381337) + +* Wed Nov 05 2025 Dominik Mierzejewski - 4.11.0-18 +- Rebuilt for FFmpeg 8 + +* Wed Oct 29 2025 Federico Pellegrin - 4.11.0-17 +- Fix importing of Python module (#2406800) + +* Mon Oct 20 2025 Nicolas Chauvet - 4.11.0-16 +- Fix build with i686 + +* Mon Oct 20 2025 Iñaki Úcar - 4.11.0-15 +- https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager + +* Fri Oct 17 2025 Dominik Mierzejewski - 4.11.0-14 +- Fix build with FFmpeg 8 + +* Thu Oct 16 2025 Nicolas Chauvet - 4.11.0-13 +- Use pyprojectize - thanks Miro ! + +* Tue Sep 30 2025 Nicolas Chauvet - 4.11.0-12 +- Drop retired openni-primesense in fedora >= 44 + * Fri Sep 19 2025 Python Maint - 4.11.0-11 - Rebuilt for Python 3.14.0rc3 bytecode diff --git a/sources b/sources index d27f031..696874a 100644 --- a/sources +++ b/sources @@ -1,5 +1,5 @@ -SHA512 (opencv-clean-4.11.0.tar.gz) = 276f83a3cc3c7cecb626e3867655415198c204b1e8199b1aff2f8ee2d7995f53e9e1f44589d1ae77fb494b6ab064a1e1c5127f998137a562514767e62e4c6497 +SHA512 (opencv-clean-4.12.0.tar.gz) = 7bcbe3629dda78e63cd737568ed94ef3f63dd7b11196247ffd03f93fed5ae9a96483d9fae25385dfd6f30c8c2e11677fd9f5c26b2f7a1bd88ca303b06a98b87d +SHA512 (opencv_contrib-clean-4.12.0.tar.gz) = e279bd46d2b4a3e4d8c98401e2abdd873ee15b63d14d16b7c9980f84fee02c08491cab4d8cd6b4e493d0892e254e56dd759235f3606332a1b264a41be3c8f9d8 SHA512 (wechat-20230712.git3487ef7.tar.gz) = bc4f220465de41df8af0cb35312c1db155976d05f13a60e43c1798b161d8f56388e34a59108fb3e27e8c97b53acfd198256d9ae420b5f70a32ddc1ea65c3c8a6 -SHA512 (opencv_contrib-clean-4.11.0.tar.gz) = 1e10e8b9a5fd9069c0851d7838716196349fcf4f0db7eafd4a86bd536f4224d88f97bd740ecaa317daa3b5784d3273fb31ac90bb8c64448086eac85a9faaad5d SHA512 (face_landmark_model.dat.xz) = 7558f29431bb9cad1f22ee067ad3ed41be8f68b865992eb7d3a5ce6b6b9e1d031cb03e33c3c149220ef8faebd0471703a8a3bbb06402bcc8ce76bd28317aa307 SHA512 (962ce79e0b95591f226431f7b5f152cd-v0.1.2e.zip) = 87c65716498ca2e4f64fb9a1f78f7e5c48fffff5fc6735027edfb7d7ccc0d9f5b01c85f4b956ddc7e1c35c69ee2513d48a7da91764c2fd01d073ee5a1fc90c6f