All of lore.kernel.org
 help / color / mirror / Atom feed
* [meta-oe] opencv: import from oe-classic and upgrade to 2.3.1
@ 2011-10-31 16:22 Connor Abbott
  0 siblings, 0 replies; only message in thread
From: Connor Abbott @ 2011-10-31 16:22 UTC (permalink / raw)
  To: openembedded-devel

OpenCV <= 2.2 won't compile on oe-core due to the lack of v4l1 headers, and therefore wasn't included in this patch. Also, the support for newer cv2-style python bindings is a bit hacked up at the moment due to the way OpenCV detects the Python version and Numpy headers (see 0001-Fix-CMakeLists.txt-numpy-detection.patch). In particular, it requires the native & target python to be the same version and have similar site-packages directories, which is true at least for now in OE.
Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
---
 .../recipes-support/opencv/opencv-samples_2.3.bb   |   42 +++++++++++
 .../0001-Fix-CMakeLists.txt-numpy-detection.patch  |   37 ++++++++++
 meta-oe/recipes-support/opencv/opencv_2.3.bb       |   75 ++++++++++++++++++++
 3 files changed, 154 insertions(+), 0 deletions(-)
 create mode 100644 meta-oe/recipes-support/opencv/opencv-samples_2.3.bb
 create mode 100644 meta-oe/recipes-support/opencv/opencv/0001-Fix-CMakeLists.txt-numpy-detection.patch
 create mode 100644 meta-oe/recipes-support/opencv/opencv_2.3.bb

diff --git a/meta-oe/recipes-support/opencv/opencv-samples_2.3.bb b/meta-oe/recipes-support/opencv/opencv-samples_2.3.bb
new file mode 100644
index 0000000..6664b3f
--- /dev/null
+++ b/meta-oe/recipes-support/opencv/opencv-samples_2.3.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.willowgarage.com/wiki/"
+SECTION = "libs"
+LICENSE = "BSD"
+
+DEPENDS = "opencv"
+
+LIC_FILES_CHKSUM = "file://include/opencv2/opencv.hpp;endline=41;md5=6d690d8488a6fca7a2c192932466bb14 \
+"
+
+SRC_URI = "svn://code.ros.org/svn/opencv/tags/2.3.1;module=opencv;proto=https \
+"
+
+SRCREV = "6923"
+PV = "2.3.1"
+PR = "r0"
+
+S = "${WORKDIR}/opencv"
+
+do_install() {
+    cd samples/c
+	install -d ${D}/${bindir}
+	install -d ${D}/${datadir}/opencv/samples
+
+	cp * ${D}/${datadir}/opencv/samples || true
+
+    for i in *.c; do
+        echo "compiling $i"
+        ${CXX} ${CFLAGS} ${LDFLAGS} -ggdb `pkg-config --cflags opencv` -o `basename $i .c` $i `pkg-config --libs opencv` || true
+		install -m 0755 `basename $i .c` ${D}/${bindir} || true
+		rm ${D}/${datadir}/opencv/samples/`basename $i .c` || true
+	done
+    for i in *.cpp; do
+        echo "compiling $i"
+        ${CXX} ${CFLAGS} ${LDFLAGS} -ggdb `pkg-config --cflags opencv` -o `basename $i .cpp` $i `pkg-config --libs opencv` || true
+		install -m 0755 `basename $i .cpp` ${D}/${bindir} || true
+		rm ${D}/${datadir}/opencv/samples/`basename $i .cpp` || true
+	done
+}
+
+FILES_${PN}-dev += "${datadir}/opencv/samples/*.c* ${datadir}/opencv/samples/*.vcp* ${datadir}/opencv/samples/build*" 
+FILES_${PN} += "${bindir} ${datadir}/opencv"
diff --git a/meta-oe/recipes-support/opencv/opencv/0001-Fix-CMakeLists.txt-numpy-detection.patch b/meta-oe/recipes-support/opencv/opencv/0001-Fix-CMakeLists.txt-numpy-detection.patch
new file mode 100644
index 0000000..dba00f8
--- /dev/null
+++ b/meta-oe/recipes-support/opencv/opencv/0001-Fix-CMakeLists.txt-numpy-detection.patch
@@ -0,0 +1,37 @@
+From a7301911a3cdf9196abd93ff894a9e86e0bcdc5e Mon Sep 17 00:00:00 2001
+From: Connor Abbott <cwabbott0@gmail.com>
+Date: Sun, 30 Oct 2011 20:00:03 -0400
+Subject: [PATCH] Fix CMakeLists.txt numpy detection
+
+Right now, the code opencv uses to detect where the numpy include files are doesn't work with cross-compiling because it uses the native python to determine the environment. To make this a little better, allow the user to explictly specify the path using -DPYTHON_NUMPY_INCLUDE_DIRS=path/to/numpy/include/dir .
+Signed-off-by: Connor Abbott <cwabbott0@gmail.com>
+---
+ CMakeLists.txt |   12 ++++++++----
+ 1 files changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ff8f20c..8edbd78 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -715,10 +715,14 @@ IF ("${PYTHON_VERSION_MAJOR_MINOR}" VERSION_GREATER 2.4)
+ ENDIF()
+ 
+ # Attempt to discover the NumPy include directory. If this succeeds, then build python API with NumPy
+-execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]"
+-            RESULT_VARIABLE PYTHON_NUMPY_PROCESS
+-            OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS
+-            OUTPUT_STRIP_TRAILING_WHITESPACE)
++if(NOT DEFINED PYTHON_NUMPY_INCLUDE_DIRS)
++    execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "import os; os.environ['DISTUTILS_USE_SDK']='1'; import numpy.distutils; print numpy.distutils.misc_util.get_numpy_include_dirs()[0]"
++                RESULT_VARIABLE PYTHON_NUMPY_PROCESS
++                OUTPUT_VARIABLE PYTHON_NUMPY_INCLUDE_DIRS
++                OUTPUT_STRIP_TRAILING_WHITESPACE)
++else()
++    set(PYTHON_NUMPY_PROCESS 0)
++endif()
+ 
+ if(PYTHON_NUMPY_PROCESS EQUAL 0)
+     set(PYTHON_USE_NUMPY 1)
+-- 
+1.7.4.1
+
diff --git a/meta-oe/recipes-support/opencv/opencv_2.3.bb b/meta-oe/recipes-support/opencv/opencv_2.3.bb
new file mode 100644
index 0000000..ef0933c
--- /dev/null
+++ b/meta-oe/recipes-support/opencv/opencv_2.3.bb
@@ -0,0 +1,75 @@
+DESCRIPTION = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.willowgarage.com/wiki/"
+SECTION = "libs"
+LICENSE = "BSD"
+
+ARM_INSTRUCTION_SET = "arm"
+
+LIC_FILES_CHKSUM = "file://include/opencv2/opencv.hpp;endline=41;md5=6d690d8488a6fca7a2c192932466bb14 \
+"
+
+DEPENDS = "python-numpy ffmpeg gtk+ libtool swig swig-native python jpeg bzip2 zlib libpng tiff glib-2.0"
+
+SRC_URI = "svn://code.ros.org/svn/opencv/tags/2.3.1;module=opencv;proto=https \
+file://opencv/0001-Fix-CMakeLists.txt-numpy-detection.patch \
+"
+
+SRCREV = "6923"
+
+PV = "2.3.1"
+PR = "r0"
+
+S = "${WORKDIR}/opencv"
+
+EXTRA_OECMAKE = "-DPYTHON_NUMPY_INCLUDE_DIRS=${STAGING_LIBDIR}/${PYTHON_DIR}/site-packages/numpy/core/include \
+-DBUILD_PYTHON_SUPPORT=ON \
+"
+
+inherit distutils-base pkgconfig cmake
+
+export BUILD_SYS
+export HOST_SYS
+export PYTHON_CSPEC="-I${STAGING_INCDIR}/${PYTHON_DIR}"
+export PYTHON=${STAGING_BINDIR_NATIVE}/python
+
+TARGET_CC_ARCH += "-I${S}/include "
+
+PACKAGES += "${PN}-apps python-opencv"
+
+python populate_packages_prepend () {
+	cv_libdir = bb.data.expand('${libdir}', d)
+	cv_libdir_dbg = bb.data.expand('${libdir}/.debug', d)
+	do_split_packages(d, cv_libdir, '^lib(.*)\.so$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev', allow_links=True)
+	do_split_packages(d, cv_libdir, '^lib(.*)\.la$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+	do_split_packages(d, cv_libdir, '^lib(.*)\.a$', 'lib%s-dev', 'OpenCV %s development package', extra_depends='${PN}-dev')
+	do_split_packages(d, cv_libdir, '^lib(.*)\.so\.*', 'lib%s', 'OpenCV %s library', extra_depends='', allow_links=True)
+
+	pn = bb.data.getVar('PN', d, 1)
+	metapkg =  pn + '-dev'
+	bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
+	blacklist = [ metapkg ]
+	metapkg_rdepends = [ ] 
+	packages = bb.data.getVar('PACKAGES', d, 1).split()
+	for pkg in packages[1:]:
+		if not pkg in blacklist and not pkg in metapkg_rdepends and pkg.endswith('-dev'):
+			metapkg_rdepends.append(pkg)
+	bb.data.setVar('RRECOMMENDS_' + metapkg, ' '.join(metapkg_rdepends), d)
+}
+
+FILES_${PN} = ""
+FILES_${PN}-apps = "${bindir}/* ${datadir}/OpenCV"
+FILES_${PN}-dbg += "${libdir}/.debug"
+FILES_${PN}-dev = "${includedir} ${libdir}/pkgconfig"
+FILES_${PN}-doc = "${datadir}/OpenCV/doc"
+
+ALLOW_EMPTY_${PN} = "1"
+
+INSANE_SKIP_python-opencv = True
+DESCRIPTION_python-opencv = "Python bindings to opencv"
+FILES_python-opencv = "${PYTHON_SITEPACKAGES_DIR}/*"
+RDEPENDS_python-opencv = "python-core python-numpy"
+
+do_install_append() {
+	cp ${S}/include/opencv/*.h ${D}${includedir}/opencv/
+	sed -i '/blobtrack/d' ${D}${includedir}/opencv/cvaux.h
+}
\ No newline at end of file
-- 
1.7.4.1




^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2011-10-31 16:28 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-10-31 16:22 [meta-oe] opencv: import from oe-classic and upgrade to 2.3.1 Connor Abbott

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.