From f3295cf168eeabdc7ac1e8c0e741fdf45539faf8 Mon Sep 17 00:00:00 2001 From: Omar Vega Ramos Date: Sun, 7 Jun 2015 23:53:30 -0500 Subject: opencv: add new package to [libre] -> https://labs.parabola.nu/issues/735 --- libre/opencv/PKGBUILD | 129 +++++++++++++++++++++++++++++++++++++++ libre/opencv/fsh.patch | 136 ++++++++++++++++++++++++++++++++++++++++++ libre/opencv/pkgconfig.patch | 35 +++++++++++ libre/opencv/x86_asmfix.patch | 46 ++++++++++++++ 4 files changed, 346 insertions(+) create mode 100644 libre/opencv/PKGBUILD create mode 100644 libre/opencv/fsh.patch create mode 100644 libre/opencv/pkgconfig.patch create mode 100644 libre/opencv/x86_asmfix.patch (limited to 'libre/opencv') diff --git a/libre/opencv/PKGBUILD b/libre/opencv/PKGBUILD new file mode 100644 index 000000000..d6d7a707b --- /dev/null +++ b/libre/opencv/PKGBUILD @@ -0,0 +1,129 @@ +# $Id$ +# Maintainer (Arch): Ray Rashif +# Contributor (Arch): Tobias Powalowski +# Maintainer: Omar Vega Ramos + +pkgbase=opencv +pkgname=('opencv' 'opencv-samples') +pkgver=2.4.10 +pkgrel=3.parabola1 +pkgdesc="Open Source Computer Vision Library, without nonfree and 3rdparty modules and Milky icons" +arch=('i686' 'x86_64') +license=('BSD') +url="http://opencv.org/" +depends=('intel-tbb' 'openexr' 'xine-lib' 'libdc1394' 'gtkglext') +makedepends=('cmake' 'python2-numpy' 'mesa' 'eigen2') +optdepends=('opencv-samples' + 'eigen2' + 'libcl: For coding with OpenCL' + 'python2-numpy: Python 2.x interface') +mksource=("http://downloads.sourceforge.net/opencvlibrary/$pkgname-$pkgver.zip") +source=("https://repo.parabola.nu/other/${pkgname}-libre/${pkgname}-${pkgver}.zip" + 'pkgconfig.patch' + 'fsh.patch' + 'x86_asmfix.patch') +mkmd5sums=('ec63952d3a3dff965d5fdde765926821') +md5sums=('1cf568ec12de8a3f786cd2d851b0f001' + 'c7cea48ed7d4f729ebdb9673bac41bd3' + 'c597598d142dd34d0eb4af7d6e9779d8' + 'b937d3589a62666f17f6dc93e0109717') + +_cmakeopts=('-D WITH_OPENCL=ON' + '-D WITH_OPENGL=ON' + '-D WITH_TBB=ON' + '-D WITH_XINE=ON' + '-D WITH_GSTREAMER=OFF' + '-D BUILD_WITH_DEBUG_INFO=OFF' + '-D BUILD_TESTS=OFF' + '-D BUILD_PERF_TESTS=OFF' + '-D BUILD_EXAMPLES=ON' + '-D INSTALL_C_EXAMPLES=ON' + '-D INSTALL_PYTHON_EXAMPLES=ON' + '-D CMAKE_BUILD_TYPE=Release' + '-D CMAKE_INSTALL_PREFIX=/usr' + '-D CMAKE_SKIP_RPATH=ON') + +# SSE only available from Pentium 3 onwards (i686 is way older) +[[ "$CARCH" = 'i686' ]] && \ + _cmakeopts+=('-D ENABLE_SSE=OFF' + '-D ENABLE_SSE2=OFF' + '-D ENABLE_SSE3=OFF') + +# all x64 CPUs support SSE2 but not SSE3 +[[ "$CARCH" = 'x86_64' ]] && _cmakeopts+=('-D ENABLE_SSE3=OFF') + +mksource() { + cd "$srcdir/$pkgname-$pkgver" + + rm -rv 3rdparty + rm -rv modules/nonfree + rm -rv modules/highgui/src/files_Qt/Milky +} + +prepare() { + cd "$srcdir/$pkgname-$pkgver" + + msg2 "Applying backported fix for x86 ASM breakage" + # see https://github.com/Itseez/opencv/pull/3331 + patch -Np1 -i "$srcdir/x86_asmfix.patch" + + msg2 "Fixing broken pkg-config (downstream)" + # see https://bugs.archlinux.org/task/32430 + # and http://code.opencv.org/issues/1925 + patch -Np1 -i "$srcdir/pkgconfig.patch" + + # TODO: this is mostly upstream frei0r; they hardcode the path + #msg2 "Hack-fixing folder naming inconsistency (downstream)" + # see http://code.opencv.org/issues/2512 + # and https://bugs.archlinux.org/task/32342 + #patch -Np1 -i "$srcdir/fsh.patch" + + # no longer including docs, see https://bugs.archlinux.org/task/34185 + # python2 compatibility for generating (html) docs + #sed -i 's/sphinx-build/sphinx-build2/' cmake/OpenCVDetectPython.cmake +} + +build() { + cd "$srcdir/$pkgname-$pkgver" + + cmake ${_cmakeopts[@]} . + + make +} + +package_opencv() { + options=('staticlibs') + + cd "$srcdir/$pkgname-$pkgver" + + make DESTDIR="$pkgdir" install + + # install license file + install -Dm644 "$srcdir/$pkgname-$pkgver/LICENSE" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" + + cd "$pkgdir/usr/share" + + # separate samples package; also be -R friendly + if [[ -d OpenCV/samples ]]; then + mv OpenCV/samples "$srcdir/$pkgname-samples" + mv OpenCV $pkgname # otherwise folder naming is inconsistent + elif [[ ! -d OpenCV ]]; then + warning "Directory naming issue; samples package may not be built!" + fi +} + +package_opencv-samples() { + pkgdesc+=" (samples)" + depends=("opencv=$pkgver") # sample codes change with lib/API + unset optdepends + + mkdir -p "$pkgdir/usr/share/opencv" + cp -r "$srcdir/opencv-samples" "$pkgdir/usr/share/opencv/samples" + + # install license file + install -Dm644 "$srcdir/opencv-$pkgver/LICENSE" \ + "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} + +# vim:set ts=2 sw=2 et: diff --git a/libre/opencv/fsh.patch b/libre/opencv/fsh.patch new file mode 100644 index 000000000..650d46a70 --- /dev/null +++ b/libre/opencv/fsh.patch @@ -0,0 +1,136 @@ +diff -baur opencv-2.4.7.orig/cmake/OpenCVGenPkgconfig.cmake opencv-2.4.7/cmake/OpenCVGenPkgconfig.cmake +--- opencv-2.4.7.orig/cmake/OpenCVGenPkgconfig.cmake 2013-11-12 20:31:27.253763202 +0000 ++++ opencv-2.4.7/cmake/OpenCVGenPkgconfig.cmake 2013-11-12 20:31:54.923577113 +0000 +@@ -46,7 +46,7 @@ + + #need better solution.... + if(libpath MATCHES "3rdparty") +- set(installDir "share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}") ++ set(installDir "share/opencv/3rdparty/${OPENCV_LIB_INSTALL_PATH}") + else() + set(installDir "${OPENCV_LIB_INSTALL_PATH}") + endif() +diff -baur opencv-2.4.7.orig/cmake/OpenCVModule.cmake opencv-2.4.7/cmake/OpenCVModule.cmake +--- opencv-2.4.7.orig/cmake/OpenCVModule.cmake 2013-11-12 20:31:27.253763202 +0000 ++++ opencv-2.4.7/cmake/OpenCVModule.cmake 2013-11-12 20:35:37.805415871 +0000 +@@ -807,7 +807,7 @@ + if(INSTALL_C_EXAMPLES AND NOT WIN32 AND EXISTS "${samples_path}") + file(GLOB sample_files "${samples_path}/*") + install(FILES ${sample_files} +- DESTINATION share/OpenCV/samples/${module_id} ++ DESTINATION share/opencv/samples/${module_id} + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif() + endfunction() +diff -baur opencv-2.4.7.orig/CMakeLists.txt opencv-2.4.7/CMakeLists.txt +--- opencv-2.4.7.orig/CMakeLists.txt 2013-11-12 20:31:27.437095684 +0000 ++++ opencv-2.4.7/CMakeLists.txt 2013-11-12 20:40:21.160171499 +0000 +@@ -243,9 +243,9 @@ + if(ANDROID OR WIN32) + set(OPENCV_DOC_INSTALL_PATH doc) + elseif(INSTALL_TO_MANGLED_PATHS) +- set(OPENCV_DOC_INSTALL_PATH share/OpenCV-${OPENCV_VERSION}/doc) ++ set(OPENCV_DOC_INSTALL_PATH share/doc/opencv-${OPENCV_VERSION}) + else() +- set(OPENCV_DOC_INSTALL_PATH share/OpenCV/doc) ++ set(OPENCV_DOC_INSTALL_PATH share/doc/opencv) + endif() + + if(WIN32) +@@ -282,7 +282,7 @@ + set(OPENCV_3P_LIB_INSTALL_PATH "${OpenCV_INSTALL_BINARIES_PREFIX}staticlib${LIB_SUFFIX}") + else() + set(OPENCV_LIB_INSTALL_PATH lib${LIB_SUFFIX}) +- set(OPENCV_3P_LIB_INSTALL_PATH share/OpenCV/3rdparty/${OPENCV_LIB_INSTALL_PATH}) ++ set(OPENCV_3P_LIB_INSTALL_PATH share/opencv/3rdparty/${OPENCV_LIB_INSTALL_PATH}) + endif() + set(OPENCV_INCLUDE_INSTALL_PATH "include") + +@@ -290,7 +290,7 @@ + if(LIB_SUFFIX AND NOT SIZEOF_VOID_P_BITS EQUAL LIB_SUFFIX) + set(OPENCV_CONFIG_INSTALL_PATH lib${LIB_SUFFIX}/cmake/opencv) + else() +- set(OPENCV_CONFIG_INSTALL_PATH share/OpenCV) ++ set(OPENCV_CONFIG_INSTALL_PATH share/opencv) + endif() + endif() + +diff -baur opencv-2.4.7.orig/data/CMakeLists.txt opencv-2.4.7/data/CMakeLists.txt +--- opencv-2.4.7.orig/data/CMakeLists.txt 2013-11-12 20:31:27.280430213 +0000 ++++ opencv-2.4.7/data/CMakeLists.txt 2013-11-12 20:31:54.923577113 +0000 +@@ -5,6 +5,6 @@ + install(FILES ${HAAR_CASCADES} DESTINATION sdk/etc/haarcascades COMPONENT main) + install(FILES ${LBP_CASCADES} DESTINATION sdk/etc/lbpcascades COMPONENT main) + elseif(NOT WIN32) +- install(FILES ${HAAR_CASCADES} DESTINATION share/OpenCV/haarcascades COMPONENT main) +- install(FILES ${LBP_CASCADES} DESTINATION share/OpenCV/lbpcascades COMPONENT main) ++ install(FILES ${HAAR_CASCADES} DESTINATION share/opencv/haarcascades COMPONENT main) ++ install(FILES ${LBP_CASCADES} DESTINATION share/opencv/lbpcascades COMPONENT main) + endif() +diff -baur opencv-2.4.7.orig/modules/java/CMakeLists.txt opencv-2.4.7/modules/java/CMakeLists.txt +--- opencv-2.4.7.orig/modules/java/CMakeLists.txt 2013-11-12 20:31:27.360429532 +0000 ++++ opencv-2.4.7/modules/java/CMakeLists.txt 2013-11-12 20:36:41.984985273 +0000 +@@ -279,7 +279,7 @@ + if(WIN32) + set(JAR_INSTALL_DIR java) + else(WIN32) +- set(JAR_INSTALL_DIR share/OpenCV/java) ++ set(JAR_INSTALL_DIR share/opencv/java) + endif(WIN32) + install(FILES ${JAR_FILE} DESTINATION ${JAR_INSTALL_DIR} COMPONENT main) + endif(ANDROID) +diff -baur opencv-2.4.7.orig/samples/c/CMakeLists.txt opencv-2.4.7/samples/c/CMakeLists.txt +--- opencv-2.4.7.orig/samples/c/CMakeLists.txt 2013-11-12 20:31:27.433762373 +0000 ++++ opencv-2.4.7/samples/c/CMakeLists.txt 2013-11-12 20:31:54.923577113 +0000 +@@ -54,6 +54,6 @@ + if (INSTALL_C_EXAMPLES AND NOT WIN32) + file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd ) + install(FILES ${C_SAMPLES} +- DESTINATION share/OpenCV/samples/c ++ DESTINATION share/opencv/samples/c + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif () +diff -baur opencv-2.4.7.orig/samples/cpp/CMakeLists.txt opencv-2.4.7/samples/cpp/CMakeLists.txt +--- opencv-2.4.7.orig/samples/cpp/CMakeLists.txt 2013-11-12 20:31:27.417095818 +0000 ++++ opencv-2.4.7/samples/cpp/CMakeLists.txt 2013-11-12 20:31:55.110242982 +0000 +@@ -83,6 +83,6 @@ + if (INSTALL_C_EXAMPLES AND NOT WIN32) + file(GLOB C_SAMPLES *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd ) + install(FILES ${C_SAMPLES} +- DESTINATION share/OpenCV/samples/cpp ++ DESTINATION share/opencv/samples/cpp + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif() +diff -baur opencv-2.4.7.orig/samples/gpu/CMakeLists.txt opencv-2.4.7/samples/gpu/CMakeLists.txt +--- opencv-2.4.7.orig/samples/gpu/CMakeLists.txt 2013-11-12 20:31:27.407095885 +0000 ++++ opencv-2.4.7/samples/gpu/CMakeLists.txt 2013-11-12 20:31:55.110242982 +0000 +@@ -83,6 +83,6 @@ + if (INSTALL_C_EXAMPLES AND NOT WIN32) + file(GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd ) + install(FILES ${install_list} +- DESTINATION share/OpenCV/samples/${project} ++ DESTINATION share/opencv/samples/${project} + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif() +diff -baur opencv-2.4.7.orig/samples/gpu/performance/CMakeLists.txt opencv-2.4.7/samples/gpu/performance/CMakeLists.txt +--- opencv-2.4.7.orig/samples/gpu/performance/CMakeLists.txt 2013-11-12 20:31:27.407095885 +0000 ++++ opencv-2.4.7/samples/gpu/performance/CMakeLists.txt 2013-11-12 20:31:55.110242982 +0000 +@@ -29,6 +29,6 @@ + if(INSTALL_C_EXAMPLES AND NOT WIN32) + file(GLOB GPU_FILES performance/*.cpp performance/*.h) + install(FILES ${GPU_FILES} +- DESTINATION share/OpenCV/samples/gpu/performance ++ DESTINATION share/opencv/samples/gpu/performance + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif() +diff -baur opencv-2.4.7.orig/samples/ocl/CMakeLists.txt opencv-2.4.7/samples/ocl/CMakeLists.txt +--- opencv-2.4.7.orig/samples/ocl/CMakeLists.txt 2013-11-12 20:31:27.397095952 +0000 ++++ opencv-2.4.7/samples/ocl/CMakeLists.txt 2013-11-12 20:39:29.227200043 +0000 +@@ -54,6 +54,6 @@ + if (INSTALL_C_EXAMPLES AND NOT WIN32) + file(GLOB install_list *.c *.cpp *.jpg *.png *.data makefile.* build_all.sh *.dsp *.cmd ) + install(FILES ${install_list} +- DESTINATION share/OpenCV/samples/${project} ++ DESTINATION share/opencv/samples/${project} + PERMISSIONS OWNER_READ GROUP_READ WORLD_READ) + endif() diff --git a/libre/opencv/pkgconfig.patch b/libre/opencv/pkgconfig.patch new file mode 100644 index 000000000..5626eb6e0 --- /dev/null +++ b/libre/opencv/pkgconfig.patch @@ -0,0 +1,35 @@ +diff -baur opencv-2.4.7.orig/cmake/OpenCVGenPkgconfig.cmake opencv-2.4.7/cmake/OpenCVGenPkgconfig.cmake +--- opencv-2.4.7.orig/cmake/OpenCVGenPkgconfig.cmake 2013-11-12 20:31:27.253763202 +0000 ++++ opencv-2.4.7/cmake/OpenCVGenPkgconfig.cmake 2013-11-12 20:41:48.936262732 +0000 +@@ -10,7 +10,7 @@ + # ------------------------------------------------------------------------------------------- + set(prefix "${CMAKE_INSTALL_PREFIX}") + set(exec_prefix "\${prefix}") +-set(libdir "") #TODO: need link paths for OpenCV_EXTRA_COMPONENTS ++set(libdir "\${prefix}/${OPENCV_LIB_INSTALL_PATH}") + set(includedir "\${prefix}/${OPENCV_INCLUDE_INSTALL_PATH}") + + if(CMAKE_BUILD_TYPE MATCHES "Release") +@@ -35,10 +35,11 @@ + ocv_list_reverse(OpenCV_EXTRA_COMPONENTS) + + #build the list of components +-set(OpenCV_LIB_COMPONENTS_ "") ++set(OpenCV_LIB_COMPONENTS_ "-L\${libdir}") + foreach(CVLib ${OpenCV_LIB_COMPONENTS}) + get_target_property(libpath ${CVLib} LOCATION_${CMAKE_BUILD_TYPE}) + get_filename_component(libname "${libpath}" NAME) ++ get_filename_component(lname "${libpath}" NAME_WE) + + if(INSTALL_TO_MANGLED_PATHS) + set(libname "${libname}.${OPENCV_VERSION}") +@@ -51,7 +52,8 @@ + set(installDir "${OPENCV_LIB_INSTALL_PATH}") + endif() + +- set(OpenCV_LIB_COMPONENTS_ "${OpenCV_LIB_COMPONENTS_} \${exec_prefix}/${installDir}/${libname}") ++ string(REPLACE "libopencv" "-lopencv" lname "${lname}") ++ set(OpenCV_LIB_COMPONENTS_ "${OpenCV_LIB_COMPONENTS_} ${lname}") + endforeach() + + # add extra dependencies required for OpenCV diff --git a/libre/opencv/x86_asmfix.patch b/libre/opencv/x86_asmfix.patch new file mode 100644 index 000000000..789f65f9c --- /dev/null +++ b/libre/opencv/x86_asmfix.patch @@ -0,0 +1,46 @@ +From ea50be0529c248961e1b66293f8a9e4b807294a6 Mon Sep 17 00:00:00 2001 +From: Samuel Martin +Date: Sun, 12 Oct 2014 10:17:23 +0200 +Subject: [PATCH] core: fix x86 PIC code compilation + +This bug was triggered by Buildroot autobuilders [1,2], causing this +kind of failures [3,4]: + + [ 14%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/system.cpp.o + /home/test/autobuild/instance-0/output/build/opencv-2.4.10/modules/core/src/system.cpp: In function '(static initializers for /home/test/autobuild/instance-0/output/build/opencv-2.4.10/modules/core/src/system.cpp)': + /home/test/autobuild/instance-0/output/build/opencv-2.4.10/modules/core/src/system.cpp:280:10: error: inconsistent operand constraints in an 'asm' + make[3]: *** [modules/core/CMakeFiles/opencv_core.dir/src/system.cpp.o] Error 1 + +[1] http://buildroot.org/ +[2] http://autobuild.buildroot.org/ +[3] http://autobuild.buildroot.org/?reason=opencv-2.4.10 +[4] http://autobuild.buildroot.org/results/483/4838285b25d6293a5cf0bb9eadd5040a7c75d766/build-end.log + +Signed-off-by: Samuel Martin +--- + modules/core/src/system.cpp | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/modules/core/src/system.cpp b/modules/core/src/system.cpp +index 5a970d5..e9ffdc7 100644 +--- a/modules/core/src/system.cpp ++++ b/modules/core/src/system.cpp +@@ -267,14 +267,17 @@ struct HWFeatures + : "cc" + ); + #else ++ // We need to preserve ebx since we are compiling PIC code. ++ // This means we cannot use "=b" for the 2nd output register. + asm volatile + ( + "pushl %%ebx\n\t" + "movl $7,%%eax\n\t" + "movl $0,%%ecx\n\t" + "cpuid\n\t" ++ "movl %%ebx,%1\n\t" + "popl %%ebx\n\t" +- : "=a"(cpuid_data[0]), "=b"(cpuid_data[1]), "=c"(cpuid_data[2]), "=d"(cpuid_data[3]) ++ : "=a"(cpuid_data[0]), "=r"(cpuid_data[1]), "=c"(cpuid_data[2]), "=d"(cpuid_data[3]) + : + : "cc" + ); -- cgit v1.2.2