Bug 1254673
Summary: | Digikam won't build with OpenCV version 3 | ||||||
---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | Viktor Jancik <vjancik> | ||||
Component: | digikam | Assignee: | Steven M. Parrish <smparrish> | ||||
Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | unspecified | ||||||
Version: | rawhide | CC: | alekcejk, hhorak, kevin, ltinkl, rdieter, sergio, smparrish, than | ||||
Target Milestone: | --- | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2016-02-12 01:37:13 UTC | Type: | Bug | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Bug Depends On: | 1246056, 1294838 | ||||||
Bug Blocks: | 1230078 | ||||||
Attachments: |
|
Description
Viktor Jancik
2015-08-18 15:49:33 UTC
Digikam depends on libkface, which is also incompatible with OpenCV 3 as it is right now in rawhide. Created attachment 1064382 [details] digikam-4.12.0-opencv3.patch Fixes the issue. cvCreateMat returns cvMat but variable d is of type Mat, a 1 to 1 replacement was possible with the Mat constructor. In core/libs/database/imgqsort/imgqsort.cpp vector containers were missing the std:: namespace prefix. How did it build before? In extra/kipi-plugins/removeredeyes/detection/locators/haarclassifier/haarclassifierlocator.cpp I had to add a definition of cvFillImage because it was removed from OpenCV 3. The definition is exactly the same as it was in OpenCV 2.4.11. I had to conditionally disable the building of ipptest because it used a function that no longer exists in OpenCV 3 (cvGetModuleInfo) and I couldn't find / create a replacement. As a consequence, I am not sure if the tests pass properly, because I am not sure if this is a good way to disable a test. And lastly, I had to modify the includes in 2 libopencv.h files and modify the OPENCV_TEST_VERSION macros as they didn't work as intended for versions 2.3.0 up to 2.4.X Yes, there are two libopencv.h files. Successful build with these changes can be seen here: https://copr.fedoraproject.org/coprs/vjancik/opencv3-deps/build/109686/ A fix for this issue was released with Digikam version 4.14.0. Could you update Digikam to that version in Rawhide? Reportedly, there is information on a new compile option in the libkface README.txt file, which let's you choose between OpenCV3 and OpenCV2 for backwards compatibility. (In reply to Viktor Jancik from comment #3) > A fix for this issue was released with Digikam version 4.14.0. 4.14.0 sources not available yet http://download.kde.org/stable/digikam/ When tarball will be available it will be built for Rawhide. Victor , 4.14.0. is built for f24, f23 and f22 [1] [1] http://koji.fedoraproject.org/koji/packageinfo?packageID=1593 still falling [1] -- libopencv found.......................... NO [1] https://copr.fedoraproject.org/coprs/sergiomb/opencv/build/142674/ digikam-5.0.0 presumably natively supports opencv (though I haven't tested it yet) Note, requires build time cmake flag: -DENABLE_OPENCV3:BOOL=ON Build of digikam-5.0.0-0.1.beta2.fc23.src.rpm succeeded for F23 and F22 [1] . kf5-libkface and digikam needs add -DENABLE_OPENCV3:BOOL=ON in .spec to build. I have also build kf5-libkdcraw, kf5-libksane, kf5-libkface, kf5-libkipi before. [1] https://copr.fedoraproject.org/coprs/sergiomb/opencv/build/152093/ Build of digikam fails in rawhide in lensfunfilter.cpp : In file included from /builddir/build/BUILD/digikam-5.0.0-beta2/core/libs/dimg/filters/lens/lensfuniface.h:29:0, from /builddir/build/BUILD/digikam-5.0.0-beta2/core/libs/dimg/filters/lens/lensfunfilter.cpp:32: /usr/include/lensfun/lensfun.h:2506:5: error: template with C linkage template<typename T> static void ModifyColor_Vignetting_PA ( ^ /usr/include/lensfun/lensfun.h:2508:5: error: template with C linkage template<typename T> static void ModifyColor_DeVignetting_PA ( ^ core/libs/dimg/CMakeFiles/dimg_src.dir/build.make:2465: recipe for target 'core/libs/dimg/CMakeFiles/dimg_src.dir/filters/lens/lensfunfilter.cpp.o' failed make[2]: *** [core/libs/dimg/CMakeFiles/dimg_src.dir/filters/lens/lensfunfilter.cpp.o] Error 1 make[2]: Leaving directory '/builddir/build/BUILD/digikam-5.0.0-beta2/x86_64-redhat-linux-gnu' CMakeFiles/Makefile2:2797: recipe for target 'core/libs/dimg/CMakeFiles/dimg_src.dir/all' failed digikam-5.0.0-beta3 is imported into rawhide, it should also include a fix for the aforementioned lensfunfilter issue |