summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOmar Vega Ramos <ovruni@gnu.org.pe>2015-06-07 23:53:30 -0500
committerOmar Vega Ramos <ovruni@gnu.org.pe>2015-06-07 23:53:30 -0500
commitf3295cf168eeabdc7ac1e8c0e741fdf45539faf8 (patch)
tree2a2dec544e57503dc00f954651df3f5af172e28e
parentade91b0ad1e5651ecfe2799175f07263f6dc43a3 (diff)
opencv: add new package to [libre] -> https://labs.parabola.nu/issues/735
-rw-r--r--libre/opencv/PKGBUILD129
-rw-r--r--libre/opencv/fsh.patch136
-rw-r--r--libre/opencv/pkgconfig.patch35
-rw-r--r--libre/opencv/x86_asmfix.patch46
4 files changed, 346 insertions, 0 deletions
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 <schiv@archlinux.org>
+# Contributor (Arch): Tobias Powalowski <tpowa@archlinux.org>
+# Maintainer: Omar Vega Ramos <ovruni@gnu.org.pe>
+
+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 <s.martin49@gmail.com>
+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 <s.martin49@gmail.com>
+---
+ 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"
+ );