Patchwork [meta-oe] opencv: import from oe-classic and upgrade to 2.3.1

login
register
mail settings
Submitter Connor Abbott
Date Oct. 31, 2011, 5:20 a.m.
Message ID <1320038418-24191-1-git-send-email-cwabbott0@gmail.com>
Download mbox | patch
Permalink /patch/14045/
State Accepted
Headers show

Comments

Connor Abbott - Oct. 31, 2011, 5:20 a.m.
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   |   43 +++++++++++
 .../0001-Fix-CMakeLists.txt-numpy-detection.patch  |   37 ++++++++++
 meta-oe/recipes-support/opencv/opencv_2.3.bb       |   76 ++++++++++++++++++++
 3 files changed, 156 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

\ No newline at end of file
Koen Kooi - Oct. 31, 2011, 10:46 a.m.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Can you please send a v2 with the PRIORITY fields removed?

Op 31-10-11 06:20, Connor Abbott schreef:
> 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   |   43 +++++++++++ 
> .../0001-Fix-CMakeLists.txt-numpy-detection.patch  |   37 ++++++++++ 
> meta-oe/recipes-support/opencv/opencv_2.3.bb       |   76
> ++++++++++++++++++++ 3 files changed, 156 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..5cac4a5 --- /dev/null +++
> b/meta-oe/recipes-support/opencv/opencv-samples_2.3.bb @@ -0,0 +1,43 @@ 
> +DESCRIPTION = "Opencv : The Open Computer Vision Library" +HOMEPAGE =
> "http://opencv.willowgarage.com/wiki/" +SECTION = "libs" +PRIORITY =
> "optional" +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..220116d --- /dev/null +++
> b/meta-oe/recipes-support/opencv/opencv_2.3.bb @@ -0,0 +1,76 @@ 
> +DESCRIPTION = "Opencv : The Open Computer Vision Library" +HOMEPAGE =
> "http://opencv.willowgarage.com/wiki/" +SECTION = "libs" +PRIORITY =
> "optional" +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

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)
Comment: GPGTools - http://gpgtools.org

iD8DBQFOrnycMkyGM64RGpERAkBoAJ9M7fp8O1f4X9F4wG/d6Lm4jKpR3ACeNcdK
WA0OW/0cYuV7mhrnZ0MjgYI=
=PzOO
-----END PGP SIGNATURE-----

Patch

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..5cac4a5
--- /dev/null
+++ b/meta-oe/recipes-support/opencv/opencv-samples_2.3.bb
@@ -0,0 +1,43 @@ 
+DESCRIPTION = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.willowgarage.com/wiki/"
+SECTION = "libs"
+PRIORITY = "optional"
+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..220116d
--- /dev/null
+++ b/meta-oe/recipes-support/opencv/opencv_2.3.bb
@@ -0,0 +1,76 @@ 
+DESCRIPTION = "Opencv : The Open Computer Vision Library"
+HOMEPAGE = "http://opencv.willowgarage.com/wiki/"
+SECTION = "libs"
+PRIORITY = "optional"
+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
+}