Skip to contentSkip to conversation

Scientific libraries

PATCH Superseded Samuel Martin 4 participants 28 messages Feb 16, 2014 – Mar 6, 2014

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore
#0 lore raw

cover Scientific libraries

Hi all,

Here is a series containing the bump of OpenCV and some new scientific packages, among these python Numpy.

The OpenCV bump comes with a couple of refactoring and fixes (in OpenCV itself and some of its reverse-dependencies).

This series targets (and has been rebased on) the branch next, but prior to its integration, it also requires:
- cherry-picking the following commit in then branch next:
commit e78d357551f3191fee7b6bcc18dfd8514819cab
opencv: always enable opencv_core module when opencv is enabled
- and applying the following patches:
http://patchwork.ozlabs.org/patch/312315/
http://patchwork.ozlabs.org/patch/312316/

Yours,
Samuel

Samuel Martin (11):
opencv: bump to version 2.4.8
opencv: rework V4L/libv4l support
opencv: add jasper support
opencv: add Qt5 support
clapack: new package
armadillo: new package
python-numpy: new package
python-numpy: add install-staging command
opencv: add python/numpy support
opencv: define modules inter-dependencies
vlc: add opencv support

 package/Config.in                                  |   3 +
 package/armadillo/Config.in                        |   9 ++
 package/armadillo/armadillo.mk                     |  15 ++
 package/clapack/Config.in                          |  18 +++
 ...ce-libf2c-to-be-built-as-a-static-library.patch |  32 +++++
 ...ake-test-build-sensitive-to-BUILD_TESTING.patch |  80 +++++++++++
 ...t-try-to-run-arithchk-when-cross-compilin.patch |  70 ++++++++++
 ...blas-add-library-and-header-install-rules.patch |  23 ++++
 ...pack-add-library-and-header-install-rules.patch |  24 ++++
 package/clapack/clapack.mk                         |  20 +++
 package/opencv/Config.in                           | 146 ++++++++++++++++----
 ...t-run-python-for-numpy-detection-when-cro.patch |  77 +++++++++++
 package/opencv/opencv.mk                           | 152 ++++++++++++++++-----
 package/python-numpy/Config.in                     |  14 ++
 package/python-numpy/python-numpy.mk               |  48 +++++++
 package/vlc/vlc.mk                                 |   7 +
 16 files changed, 671 insertions(+), 67 deletions(-)
 create mode 100644 package/armadillo/Config.in
 create mode 100644 package/armadillo/armadillo.mk
 create mode 100644 package/clapack/Config.in
 create mode 100644 package/clapack/clapack-0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch
 create mode 100644 package/clapack/clapack-0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch
 create mode 100644 package/clapack/clapack-0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch
 create mode 100644 package/clapack/clapack-0004-cmake-blas-add-library-and-header-install-rules.patch
 create mode 100644 package/clapack/clapack-0005-cmake-lapack-add-library-and-header-install-rules.patch
 create mode 100644 package/clapack/clapack.mk
 create mode 100644 package/opencv/opencv-0001-cmake-do-not-run-python-for-numpy-detection-when-cro.patch
 create mode 100644 package/python-numpy/Config.in
 create mode 100644 package/python-numpy/python-numpy.mk

--
1.8.5.4

#1 lore raw

PATCH 1/11 opencv: bump to version 2.4.8

This patch bumps OpenCV version and does a number of cleanup in the opencv.mk files:
- add an extract command because the source archive is only available under zip format since this 2.4.8 release. Since there is no default extract command for zip archive, we have to define it;
- add license details;
- add new modules options and update existing ones;
- update SSE support;
- sort and reorder the configure options (to make easier future package update);
- clean redundant C++ dependency (in the Qt knob).

However, it does not add any new 3rd-party support for the followings:
- jasper support;
- python/numpy support;
- Qt4 and Qt5 support (since the 2.4.6 release), so only Qt4 support is supported in this patch;
- optional libv4l dependency (since 2.4.7 release).
These will be addressed in followup patches.

---
 package/opencv/Config.in |  12 +++--
 package/opencv/opencv.mk | 120 ++++++++++++++++++++++++++++++++++-------------
 2 files changed, 97 insertions(+), 35 deletions(-)
package/opencv/Config.in +9 -3
index ffb0916..c3273fd 100644
@@ -8,7 +8,7 @@ menuconfig BR2_PACKAGE_OPENCV
 	  OpenCV (Open Source Computer Vision) is a library of programming
 	  functions for real time computer vision.
 
-	  http://opencv.willowgarage.com/wiki/
+	  http://opencv.org/
 
 if BR2_PACKAGE_OPENCV
 
@@ -92,6 +92,13 @@ config BR2_PACKAGE_OPENCV_LIB_STITCHING
 	help
 	  Include opencv_stitching module into the OpenCV build.
 
+config BR2_PACKAGE_OPENCV_LIB_SUPERRES
+	bool "superres"
+	default y
+	help
+	  Include opencv_superres "super resolution" - module into the OpenCV
+	  build.
+
 config BR2_PACKAGE_OPENCV_LIB_TS
 	bool "ts (touchscreen)"
 	default y
@@ -164,8 +171,7 @@ config BR2_PACKAGE_OPENCV_WITH_PNG
 	  Use shared libpng from the target system.
 
 config BR2_PACKAGE_OPENCV_WITH_QT
-	bool "qt backend support"
-	depends on BR2_INSTALL_LIBSTDCPP
+	bool "qt4 backend support"
 	depends on !BR2_avr32 # qt
 	select BR2_PACKAGE_QT
 	select BR2_PACKAGE_QT_STL
package/opencv/opencv.mk +88 -32

191 lines not on this page · raw message

Signature · 1 line
1.8.5.4
#2 lore raw

PATCH 1/11 opencv: bump to version 2.4.8

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 11 lines

This patch bumps OpenCV version and does a number of cleanup in the opencv.mk files:
- add an extract command because the source archive is only available under zip format since this 2.4.8 release. Since there is no default extract command for zip archive, we have to define it;
- add license details;
- add new modules options and update existing ones;
- update SSE support;
- sort and reorder the configure options (to make easier future package update);
- clean redundant C++ dependency (in the Qt knob).

As said on IRC (and repeated here for posterity ;-] ) : it would have been easier to review if you had split the patch:
- shufle options around
- bump the version (with its own options added/removed/updated)
- add licensing info
- add sse4/sse42 support
- add superres config knob
- ...

Quoted 17 lines
package/opencv/opencv.mk +5 -3
index 42f9b0a..43aef62 100644
@@ -4,23 +4,34 @@
 #
 ################################################################################
 
-OPENCV_VERSION = 2.4.2
-OPENCV_SITE    = http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/$(OPENCV_VERSION)
-OPENCV_SOURCE  = OpenCV-$(OPENCV_VERSION).tar.bz2
+OPENCV_VERSION = 2.4.8
+OPENCV_SOURCE = opencv-$(OPENCV_VERSION).zip
+OPENCV_SITE = http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/$(OPENCV_VERSION)
 OPENCV_INSTALL_STAGING = YES
+OPENCV_LICENSE = BSD-3c
+OPENCV_LICENSE_FILES = doc/license.txt

package/opencv/opencv.mk line 21

Quoted 10 lines
package/opencv/opencv.mk +6 -1
+
+define OPENCV_EXTRACT_CMDS
+    unzip -d $(BUILD_DIR) $(DL_DIR)/$(OPENCV_SOURCE)
+endef
 
 OPENCV_CONF_OPT += \
 	-DCMAKE_BUILD_TYPE=$(if $(BR2_ENABLE_DEBUG),Debug,Release)   \
-	-DBUILD_WITH_STATIC_CRT=OFF                                  \
+	-DBUILD_WITH_DEBUG_INFO=OFF                                  \
+	\

Why do you add such separating empty lines? If needed, add as many option groups as needed. But separating options in a single group is not really useful.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#3 lore raw

PATCH 2/11 opencv: rework V4L/libv4l support

In reply to Samuel Martin

Starting with the 2.4.7 release, for V4L support, OpenCV does not requires a libv4l dependency for its V4L support.

So, it now provides 2 distincts knobs for this: WITH_V4L and a new
one: WITH_LIBV4L.

This patch takes advantage of this new knob and libv4l support is now automatically enabled if only the libv4l package is enabled.

---
 package/opencv/Config.in | 11 ++++++-----
 package/opencv/opencv.mk | 10 +++++++---
 2 files changed, 13 insertions(+), 8 deletions(-)
package/opencv/Config.in +6 -5
index c3273fd..2acbe19 100644
@@ -189,14 +189,15 @@ config BR2_PACKAGE_OPENCV_WITH_TIFF
 
 config BR2_PACKAGE_OPENCV_WITH_V4L
 	bool "v4l support"
-	depends on BR2_LARGEFILE
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	select BR2_PACKAGE_LIBV4L
 	help
 	  Enable Video 4 Linux support.
 
-comment "v4l support needs a toolchain w/ largefile, threads"
-	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
+	  If the package libv4l is enabled, its support is automatically enabled.
+
+if BR2_PACKAGE_OPENCV_WITH_V4L && !(BR2_LARGEFILE && BR2_TOOLCHAIN_HAS_THREADS)
+comment "libv4l support will be disabled."
+comment "libv4l support needs a toolchain w/ largefile, threads"
+endif
 
 comment "Install options"
 
package/opencv/opencv.mk +7 -3
index 43aef62..fb56769 100644
@@ -210,10 +210,14 @@ OPENCV_CONF_OPT += -DWITH_TIFF=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_OPENCV_WITH_V4L),y)
-OPENCV_CONF_OPT += -DWITH_V4L=ON -DWITH_LIBV4L=ON
-OPENCV_DEPENDENCIES += libv4l
+OPENCV_CONF_OPT += \
+	-DWITH_V4L=ON \
+	-DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF)
+OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)
 else
-OPENCV_CONF_OPT += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF
+OPENCV_CONF_OPT += \
+	-DWITH_V4L=OFF \
+	-DWITH_LIBV4L=OFF
 endif
 
 # Installation hooks:
Signature · 1 line
1.8.5.4
#4 lore raw

PATCH 2/11 opencv: rework V4L/libv4l support

Thomas,

Can you have a look at the below dependency tricks, and tell me your opinion about how they are expressed in terms of comments and al. ?

Thanks,

Thomas

Quoted 62 lines · Samuel Martin

Starting with the 2.4.7 release, for V4L support, OpenCV does not requires a libv4l dependency for its V4L support.

So, it now provides 2 distincts knobs for this: WITH_V4L and a new
one: WITH_LIBV4L.

This patch takes advantage of this new knob and libv4l support is now automatically enabled if only the libv4l package is enabled.

---
 package/opencv/Config.in | 11 ++++++-----
 package/opencv/opencv.mk | 10 +++++++---
 2 files changed, 13 insertions(+), 8 deletions(-)
package/opencv/Config.in +6 -5
index c3273fd..2acbe19 100644
@@ -189,14 +189,15 @@ config BR2_PACKAGE_OPENCV_WITH_TIFF
 
 config BR2_PACKAGE_OPENCV_WITH_V4L
 	bool "v4l support"
-	depends on BR2_LARGEFILE
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	select BR2_PACKAGE_LIBV4L
 	help
 	  Enable Video 4 Linux support.
 
-comment "v4l support needs a toolchain w/ largefile, threads"
-	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
+	  If the package libv4l is enabled, its support is automatically enabled.
+
+if BR2_PACKAGE_OPENCV_WITH_V4L && !(BR2_LARGEFILE && BR2_TOOLCHAIN_HAS_THREADS)
+comment "libv4l support will be disabled."
+comment "libv4l support needs a toolchain w/ largefile, threads"
+endif
 
 comment "Install options"
 
package/opencv/opencv.mk +7 -3
index 43aef62..fb56769 100644
@@ -210,10 +210,14 @@ OPENCV_CONF_OPT += -DWITH_TIFF=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_OPENCV_WITH_V4L),y)
-OPENCV_CONF_OPT += -DWITH_V4L=ON -DWITH_LIBV4L=ON
-OPENCV_DEPENDENCIES += libv4l
+OPENCV_CONF_OPT += \
+	-DWITH_V4L=ON \
+	-DWITH_LIBV4L=$(if $(BR2_PACKAGE_LIBV4L),ON,OFF)
+OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_LIBV4L),libv4l)
 else
-OPENCV_CONF_OPT += -DWITH_V4L=OFF -DWITH_LIBV4L=OFF
+OPENCV_CONF_OPT += \
+	-DWITH_V4L=OFF \
+	-DWITH_LIBV4L=OFF
 endif
 
 # Installation hooks:
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#5 lore raw

PATCH 2/11 opencv: rework V4L/libv4l support

In reply to Samuel Martin

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 8 lines

Starting with the 2.4.7 release, for V4L support, OpenCV does not requires a libv4l dependency for its V4L support.

So, it now provides 2 distincts knobs for this: WITH_V4L and a new
one: WITH_LIBV4L.

This patch takes advantage of this new knob and libv4l support is now automatically enabled if only the libv4l package is enabled.

So, if I understood correctly:
- v4l support in openCV does not require libv4l
- if libv4l is present, openCV can use it
- use of libv4l or not, openCV support v4l the same

Right?

Quoted 18 lines
---
 package/opencv/Config.in | 11 ++++++-----
 package/opencv/opencv.mk | 10 +++++++---
 2 files changed, 13 insertions(+), 8 deletions(-)
package/opencv/Config.in +0 -3
index c3273fd..2acbe19 100644
@@ -189,14 +189,15 @@ config BR2_PACKAGE_OPENCV_WITH_TIFF
 
 config BR2_PACKAGE_OPENCV_WITH_V4L
 	bool "v4l support"
-	depends on BR2_LARGEFILE
-	depends on BR2_TOOLCHAIN_HAS_THREADS
-	select BR2_PACKAGE_LIBV4L
 	help

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_TIFF · line 200

Quoted 10 lines
package/opencv/Config.in +6 -2
 	  Enable Video 4 Linux support.
 
-comment "v4l support needs a toolchain w/ largefile, threads"
-	depends on !BR2_LARGEFILE || !BR2_TOOLCHAIN_HAS_THREADS
+	  If the package libv4l is enabled, its support is automatically enabled.
+
+if BR2_PACKAGE_OPENCV_WITH_V4L && !(BR2_LARGEFILE && BR2_TOOLCHAIN_HAS_THREADS)
+comment "libv4l support will be disabled."
+comment "libv4l support needs a toolchain w/ largefile, threads"
+endif

I guess we do not need a comment for an optional dependency, especially since you added a blurb in the help text.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#6 lore raw

PATCH 3/11 opencv: add jasper support

In reply to Samuel Martin
---
 package/opencv/Config.in | 6 ++++++
 package/opencv/opencv.mk | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
package/opencv/Config.in +6 -0
index 2acbe19..73f03e1 100644
@@ -158,6 +158,12 @@ config BR2_PACKAGE_OPENCV_WITH_GTK
 	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_LIBGTK2
 
+config BR2_PACKAGE_OPENCV_WITH_JASPER
+	bool "jasper (jpeg 2000) support"
+	select BR2_PACKAGE_JASPER
+	help
+	  Use shared libjasper from the target system.
+
 config BR2_PACKAGE_OPENCV_WITH_JPEG
 	bool "jpeg support"
 	select BR2_PACKAGE_JPEG
package/opencv/opencv.mk +7 -1
index fb56769..ff11f1c 100644
@@ -149,7 +149,6 @@ OPENCV_CONF_OPT += \
 	-DWITH_1394=OFF           \
 	-DWITH_EIGEN=OFF          \
 	-DWITH_IMAGEIO=OFF        \
-	-DWITH_JASPER=OFF         \
 	-DWITH_OPENCL=OFF         \
 	-DWITH_OPENEXR=OFF        \
 	-DWITH_OPENGL=OFF         \
@@ -181,6 +180,13 @@ else
 OPENCV_CONF_OPT += -DWITH_GTK=OFF
 endif
 
+ifeq ($(BR2_PACKAGE_OPENCV_WITH_JASPER),y)
+OPENCV_CONF_OPT += -DWITH_JASPER=ON
+OPENCV_DEPENDENCIES += jasper
+else
+OPENCV_CONF_OPT += -DWITH_JASPER=OFF
+endif
+
 ifeq ($(BR2_PACKAGE_OPENCV_WITH_JPEG),y)
 OPENCV_CONF_OPT += -DWITH_JPEG=ON
 OPENCV_DEPENDENCIES += jpeg
Signature · 1 line
1.8.5.4
#7 lore raw

PATCH 3/11 opencv: add jasper support

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 11 lines
---
 package/opencv/Config.in | 6 ++++++
 package/opencv/opencv.mk | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
package/opencv/Config.in +0 -0
index 2acbe19..73f03e1 100644

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_GTK · line 165

Quoted 8 lines
package/opencv/Config.in +5 -0
@@ -158,6 +158,12 @@ config BR2_PACKAGE_OPENCV_WITH_GTK
 	depends on BR2_INSTALL_LIBSTDCPP
 	select BR2_PACKAGE_LIBGTK2
 
+config BR2_PACKAGE_OPENCV_WITH_JASPER
+	bool "jasper (jpeg 2000) support"
+	select BR2_PACKAGE_JASPER
+	help
+	  Use shared libjasper from the target system.

What do you mean by "from the target system?"

I would expect to read something like:

config BR2_PACKAGE_OPENCV_WITH_JASPER
bool "jpeg2000 support"
select BR2_PACKAGE_JASPER
help
Use libjasper to provide support for jpeg2000.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#8 lore raw

PATCH 3/11 opencv: add jasper support

Yann, all,

Quoted 17 lines · Yann E. MORIN

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 14 lines
---
 package/opencv/Config.in | 6 ++++++
 package/opencv/opencv.mk | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
package/opencv/Config.in +0 -0
index 2acbe19..73f03e1 100644
@@ -158,6 +158,12 @@ config BR2_PACKAGE_OPENCV_WITH_GTK
      depends on BR2_INSTALL_LIBSTDCPP
      select BR2_PACKAGE_LIBGTK2
 
Quoted 7 lines

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_GTK · line 165

Quoted 5 lines
package/opencv/Config.in +5 -0
+config BR2_PACKAGE_OPENCV_WITH_JASPER
+     bool "jasper (jpeg 2000) support"
+     select BR2_PACKAGE_JASPER
+     help
+       Use shared libjasper from the target system.

What do you mean by "from the target system?"

OpenCV comes with many libs in its 3rdparty directory (ffmpeg, jinja2, libjasper, libjpeg, libpng, libtiff, libwebp, openexr, tbb, zlib), and can build these, or use those provided by the system or disabling their support.

When I integrated opencv in BR for the first, it was requested to me to only use the libs provided by the system. I stick to this ;-)

Quoted 9 lines

I would expect to read something like:

config BR2_PACKAGE_OPENCV_WITH_JASPER
bool "jpeg2000 support"
select BR2_PACKAGE_JASPER
help
Use libjasper to provide support for jpeg2000.

Regards,

Signature · 1 line
Samuel
#9 lore raw

PATCH 3/11 opencv: add jasper support

Samuel, All,

On 2014-03-06 00:08 +0100, Samuel Martin spake thusly:

Quoted 26 lines · Yann E. MORIN
Quoted 17 lines

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 14 lines
---
 package/opencv/Config.in | 6 ++++++
 package/opencv/opencv.mk | 8 +++++++-
 2 files changed, 13 insertions(+), 1 deletion(-)
package/opencv/Config.in +0 -0
index 2acbe19..73f03e1 100644
@@ -158,6 +158,12 @@ config BR2_PACKAGE_OPENCV_WITH_GTK
      depends on BR2_INSTALL_LIBSTDCPP
      select BR2_PACKAGE_LIBGTK2
 
Quoted 7 lines

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_GTK · line 165

Quoted 5 lines
package/opencv/Config.in +5 -0
+config BR2_PACKAGE_OPENCV_WITH_JASPER
+     bool "jasper (jpeg 2000) support"
+     select BR2_PACKAGE_JASPER
+     help
+       Use shared libjasper from the target system.

What do you mean by "from the target system?"

Quoted 7 lines

OpenCV comes with many libs in its 3rdparty directory (ffmpeg, jinja2, libjasper, libjpeg, libpng, libtiff, libwebp, openexr, tbb, zlib), and can build these, or use those provided by the system or disabling their support.

When I integrated opencv in BR for the first, it was requested to me to only use the libs provided by the system. I stick to this ;-)

Ah, OK I understand. But then, the help text is not clear enough.

I would expect to read something like:

config BR2_PACKAGE_OPENCV_WITH_JASPER
bool "jpeg2000 support"
select BR2_PACKAGE_JASPER
help
Use the package 'libjasper' to provide support for jpeg2000.

The copy of libjasper bundled in openCV is not used.

But do we even want to state this in the help text?

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#10 lore raw

PATCH 4/11 opencv: add Qt5 support

In reply to Samuel Martin

Starting with the 2.4.6 release, OpenCV supports both Qt4 and Qt5, but only one can be enable at the same time.

Since Buildroot does not support Qt4/Qt5 co-existence, we keep the Qt support knob as a boolean, but make it depend on BR2_PACKAGE_QT or BR2_PACKAGE_QT5, and automatically uses the enabled one.

Note that we usually use 'select ...' to express the dependencies between packages, but in this case, we cannot since the Qt4/Qt5 co-existence exclusion is not handled by a simple choice, but by a dependency. This makes impossible using 'select ...' for the Qt support knob without triggering a circular dependency at the kconfig level.

Besides, we already use 'depends on ...' to express the dependencies with some "big" packages (like xorg or libgtk2). qt or qt5* packages are fairly big. So, I don't think it will hurt that much to use a 'depends on ...' statement in this case.

---
 package/opencv/Config.in | 41 ++++++++++++++++++++++++++++++++---------
 package/opencv/opencv.mk |  4 ++--
 2 files changed, 34 insertions(+), 11 deletions(-)
package/opencv/Config.in +32 -9
index 73f03e1..b6192dc 100644
@@ -177,15 +177,38 @@ config BR2_PACKAGE_OPENCV_WITH_PNG
 	  Use shared libpng from the target system.
 
 config BR2_PACKAGE_OPENCV_WITH_QT
-	bool "qt4 backend support"
-	depends on !BR2_avr32 # qt
-	select BR2_PACKAGE_QT
-	select BR2_PACKAGE_QT_STL
-	select BR2_PACKAGE_QT_GUI_MODULE if BR2_PACKAGE_OPENCV_LIB_HIGHGUI
-	select BR2_PACKAGE_QT_TEST       if BR2_PACKAGE_OPENCV_LIB_HIGHGUI
-	default y
-	help
-	  Use Qt with QtTest module and STL support
+	bool "qt support"
+	depends on (BR2_PACKAGE_QT && !BR2_avr32) || \
+		(BR2_PACKAGE_QT5 && BR2_USE_MMU && BR2_INET_IPV6 && \
+		BR2_TOOLCHAIN_HAS_THREADS)
+	select BR2_PACKAGE_QT_STL             if BR2_PACKAGE_QT
+	select BR2_PACKAGE_QT_GUI_MODULE      if BR2_PACKAGE_QT && \
+	                                          BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+	select BR2_PACKAGE_QT_TEST            if BR2_PACKAGE_QT && \
+	                                          BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+	select BR2_PACKAGE_QT5BASE            if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_CONCURRENT if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_TEST       if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_GUI        if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_WIDGETS    if BR2_PACKAGE_QT5
+	help
+	  Enable Qt support for OpenCV.
+
+	  If Qt4 is already enabled, then use Qt4 with QtTest module and STL
+	  support.
+
+	  If Qt5 is already enabled, then use Qt5 with the following components:
+	  base, concurrent, test, gui and widgets.
+
+if !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5
+comment "qt support with Qt4 needs qt"
+
+comment "qt support with Qt5 needs qt5"
+	depends on BR2_USE_MMU && BR2_INET_IPV6 && BR2_TOOLCHAIN_HAS_THREADS
+
+comment "qt support with Qt5 needs a toolchain w/ wchar, IPv6, theads"
+	depends on !BR2_USE_MMU || !BR2_INET_IPV6 || !BR2_TOOLCHAIN_HAS_THREADS
+endif
 
 config BR2_PACKAGE_OPENCV_WITH_TIFF
 	bool "tiff support"
package/opencv/opencv.mk +2 -2
index ff11f1c..51255aa 100644
@@ -202,8 +202,8 @@ OPENCV_CONF_OPT += -DWITH_PNG=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT),y)
-OPENCV_CONF_OPT += -DWITH_QT=4
-OPENCV_DEPENDENCIES += qt
+OPENCV_CONF_OPT += -DWITH_QT=$(if $(BR2_PACKAGE_QT),4,5)
+OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_QT),qt,qt5base)
 else
 OPENCV_CONF_OPT += -DWITH_QT=OFF
 endif
Signature · 1 line
1.8.5.4
#11 lore raw

PATCH 4/11 opencv: add Qt5 support

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 2 lines

Starting with the 2.4.6 release, OpenCV supports both Qt4 and Qt5, but only one can be enable at the same time.

[--SNIP--]

Quoted 11 lines
package/opencv/Config.in +0 -3
index 73f03e1..b6192dc 100644
@@ -177,15 +177,38 @@ config BR2_PACKAGE_OPENCV_WITH_PNG
 	  Use shared libpng from the target system.
 
 config BR2_PACKAGE_OPENCV_WITH_QT
-	bool "qt4 backend support"
-	depends on !BR2_avr32 # qt
-	select BR2_PACKAGE_QT

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_PNG · line 183

Quoted 10 lines
package/opencv/Config.in +4 -6
-	select BR2_PACKAGE_QT_STL
-	select BR2_PACKAGE_QT_GUI_MODULE if BR2_PACKAGE_OPENCV_LIB_HIGHGUI
-	select BR2_PACKAGE_QT_TEST       if BR2_PACKAGE_OPENCV_LIB_HIGHGUI
-	default y
-	help
-	  Use Qt with QtTest module and STL support
+	bool "qt support"
+	depends on (BR2_PACKAGE_QT && !BR2_avr32) || \
+		(BR2_PACKAGE_QT5 && BR2_USE_MMU && BR2_INET_IPV6 && \
+		BR2_TOOLCHAIN_HAS_THREADS)

Why do you repeat Qt4's and Qt5's dependencies? Since it 'depends on' Qt4 or Qt5, you will also inherit forn their dependencies, so there is no reason to bring them here...

But if those deps are needed for sub-modules (below), then add them as separate line, like (eg.):
depends on BR2_TOOLCHAIN_HAS_THREADS # qt-stl
select BR2_PACKAGE_QT_TEST if BR2_PACKAGE_QT && HIGHGUI depends on BR2_INET_IPV6 # qt5-base
select BR2_PACKAGE_QT5BASE if BR2_PACKAGE_QT5

Quoted 5 lines
package/opencv/Config.in +5 -0
+	select BR2_PACKAGE_QT_STL             if BR2_PACKAGE_QT
+	select BR2_PACKAGE_QT_GUI_MODULE      if BR2_PACKAGE_QT && \
+	                                          BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+	select BR2_PACKAGE_QT_TEST            if BR2_PACKAGE_QT && \
+	                                          BR2_PACKAGE_OPENCV_LIB_HIGHGUI

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_PNG · line 198

Quoted 10 lines
package/opencv/Config.in +10 -0
+	select BR2_PACKAGE_QT5BASE            if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_CONCURRENT if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_TEST       if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_GUI        if BR2_PACKAGE_QT5
+	select BR2_PACKAGE_QT5BASE_WIDGETS    if BR2_PACKAGE_QT5
+	help
+	  Enable Qt support for OpenCV.
+
+	  If Qt4 is already enabled, then use Qt4 with QtTest module and STL
+	  support.

For Qt4, this uses module QtSTL. Highgui supports also uses QtTest and QtGui.

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_PNG · line 201

Quoted 2 lines
package/opencv/Config.in +2 -0
+	  If Qt5 is already enabled, then use Qt5 with the following components:
+	  base, concurrent, test, gui and widgets.

For Qt5, this uses modules Qt5Base, Qt5Concurrent, Qt5Test, Qt5Gui and Qt5Widgets.

package/opencv/Config.in config BR2_PACKAGE_OPENCV_WITH_PNG · line 204

Quoted 2 lines
package/opencv/Config.in +2 -0
+if !BR2_PACKAGE_QT && !BR2_PACKAGE_QT5
+comment "qt support with Qt4 needs qt"

Here, you need to duplicate Qt4's deps. Also, you don;t want to show the comment for Qt4 if Qt5 is enabled:

comment "qt4 support needs a toolchain w/ C++, threads"
depends on !avr32 && MMU
depends on !LIBSTCPP || !THREADS
depends on !QT5

comment "qt5 support needs a toolchain w/ wchar, IPv6, threads"
depends on !avr32 && _MMU
depends on !WCHAR || !IPV6 || !THREADS
depends on !QT4

[--SNIP--]

package/opencv/opencv.mk OPENCV_CONF_OPT += -DWITH_PNG=OFF · line 206

Quoted 12 lines
package/opencv/opencv.mk +2 -2
index ff11f1c..51255aa 100644
@@ -202,8 +202,8 @@ OPENCV_CONF_OPT += -DWITH_PNG=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_OPENCV_WITH_QT),y)
-OPENCV_CONF_OPT += -DWITH_QT=4
-OPENCV_DEPENDENCIES += qt
+OPENCV_CONF_OPT += -DWITH_QT=$(if $(BR2_PACKAGE_QT),4,5)
+OPENCV_DEPENDENCIES += $(if $(BR2_PACKAGE_QT),qt,qt5base)

qt and qt5base are enough to build? Don;t you also need the Qt4/5 modules to be built first?

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#12 lore raw

PATCH 5/11 clapack: new package

In reply to Samuel Martin

This package provides BLAS and LAPACK libraries.

Though it is common to find implementation of these two libraries in Fortran, this package provides a C-implementation for both, because:
- Fortran support has been deprecated in Buildroot since the 2013.11 release;
- most of the external toolchains do not provide a Fortran compiler.

Often BLAS build-systems build some test programs and run them to generate some source files or adjust some build optimizations, naively assuming they are building the library for the build-machine. This does not play well when cross-compiling.

This implementation has this defect too, by building and running a tool generating a header.
However, the build-system allows to pass an empty header. So, we have to patch the CMake to build the generator (but never install it) and correctly support building with and without this header provided by the user.

Also, few CMake patches are needed to fix the build and install rules.

---
 package/Config.in                                  |  1 +
 package/clapack/Config.in                          | 18 +++++
 ...ce-libf2c-to-be-built-as-a-static-library.patch | 32 +++++++++
 ...ake-test-build-sensitive-to-BUILD_TESTING.patch | 80 ++++++++++++++++++++++
 ...t-try-to-run-arithchk-when-cross-compilin.patch | 70 +++++++++++++++++++
 ...blas-add-library-and-header-install-rules.patch | 23 +++++++
 ...pack-add-library-and-header-install-rules.patch | 24 +++++++
 package/clapack/clapack.mk                         | 20 ++++++
 8 files changed, 268 insertions(+)
 create mode 100644 package/clapack/Config.in
 create mode 100644 package/clapack/clapack-0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch
 create mode 100644 package/clapack/clapack-0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch
 create mode 100644 package/clapack/clapack-0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch
 create mode 100644 package/clapack/clapack-0004-cmake-blas-add-library-and-header-install-rules.patch
 create mode 100644 package/clapack/clapack-0005-cmake-lapack-add-library-and-header-install-rules.patch
 create mode 100644 package/clapack/clapack.mk
package/Config.in +1 -0
index b8b2f4e..d843961 100644
@@ -727,6 +727,7 @@ source "package/apr/Config.in"
 source "package/apr-util/Config.in"
 source "package/argp-standalone/Config.in"
 source "package/boost/Config.in"
+source "package/clapack/Config.in"
 source "package/classpath/Config.in"
 source "package/cppcms/Config.in"
 source "package/eigen/Config.in"
package/clapack/Config.in new file +18 -0
new file mode 100644
index 0000000..fc81d43
@@ -0,0 +1,18 @@
+config BR2_PACKAGE_CLAPACK
+	bool "cblas/clapack"
+	help
+	  BLAS and LAPACK C implementation (f2c'ed version of).
+
+	  http://www.netlib.org/clapack/
+
+config BR2_PACKAGE_CLAPACK_ARITH_H
+	string "Custom BLAS arith.h"
+	depends on BR2_PACKAGE_CLAPACK
+	help
+	  To optimized BLAS library for the hardware an 'arith.h' header should
+	  be provided.
+
+	  If empty, the library wil just be not optimized by the compiler.
+
+	  In any case an 'arithchk' program is built (but not installed), to be run
+	  on the target for generating this arith.h header.
package/clapack/clapack-0001-cmake-force-libf2c-to-be-built-as-a-static-library.patch new file +32 -0
new file mode 100644
index 0000000..8fede9d
@@ -0,0 +1,32 @@
+From 4fe2f454e454d9e6b1e83b2ea67581990461ed36 Mon Sep 17 00:00:00 2001
+From: Samuel Martin <[email protected]>
+Date: Sat, 11 Jan 2014 22:05:25 +0100
+Subject: [PATCH 1/6] cmake: force libf2c to be built as a static library
+
+As stated in INSTALL/LAPACK_version.c, liblapack requires to be linked
+against the static library of libf2c.
+
+Signed-off-by: Samuel Martin <[email protected]>
+---
+ F2CLIBS/libf2c/CMakeLists.txt | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/F2CLIBS/libf2c/CMakeLists.txt b/F2CLIBS/libf2c/CMakeLists.txt
+index 43d7b3f..f98d66a 100644
+--- a/F2CLIBS/libf2c/CMakeLists.txt
++++ b/F2CLIBS/libf2c/CMakeLists.txt
+@@ -58,5 +58,10 @@ if(WIN32)
+ endif()
+ include_directories(${CLAPACK_SOURCE_DIR}/F2CLIBS/libf2c)
+ include_directories(${CLAPACK_BINARY_DIR}/F2CLIBS/libf2c)
+-add_library(f2c ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h)
++add_library(f2c STATIC ${OFILES} ${CMAKE_CURRENT_BINARY_DIR}/arith.h)
+ set_property(TARGET f2c PROPERTY PREFIX lib)
++# Set fPIC on the library when build shared libraries is enabled, because
++# libf2c.a will most likely be included by some shared libraries in such cases.
++if(UNIX AND BUILD_SHARED_LIBS)
++  set_target_properties(f2c PROPERTIES COMPILE_FLAGS "-fPIC")
++endif()
+-- 
+1.8.5.3
+
package/clapack/clapack-0002-cmake-make-test-build-sensitive-to-BUILD_TESTING.patch new file +80 -0

80 lines not on this page · raw message

package/clapack/clapack-0003-cmake-do-not-try-to-run-arithchk-when-cross-compilin.patch new file +70 -0

70 lines not on this page · raw message

package/clapack/clapack-0004-cmake-blas-add-library-and-header-install-rules.patch new file +23 -0
new file mode 100644
index 0000000..e83b066
@@ -0,0 +1,23 @@
+From 675111e8ffc179276a7e4950fe4a4eda4d38a703 Mon Sep 17 00:00:00 2001
+From: Samuel Martin <[email protected]>
+Date: Sat, 11 Jan 2014 21:48:32 +0100
+Subject: [PATCH 4/6] cmake: blas: add library and header install rules
+
+Signed-off-by: Samuel Martin <[email protected]>
+---
+ BLAS/SRC/CMakeLists.txt | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/BLAS/SRC/CMakeLists.txt b/BLAS/SRC/CMakeLists.txt
+index d1caff8..a5de5a1 100644
+--- a/BLAS/SRC/CMakeLists.txt
++++ b/BLAS/SRC/CMakeLists.txt
+@@ -141,3 +141,5 @@ if(UNIX)
+   target_link_libraries(blas m)
+ endif()
+ target_link_libraries(blas f2c)
++install(TARGETS blas LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/blaswrap.h" DESTINATION include)
+-- 
+1.8.5.3
+
package/clapack/clapack-0005-cmake-lapack-add-library-and-header-install-rules.patch new file +24 -0
new file mode 100644
index 0000000..abba460
@@ -0,0 +1,24 @@
+From 9dfac0d55a31be59a856bad9d3a5071d65176597 Mon Sep 17 00:00:00 2001
+From: Samuel Martin <[email protected]>
+Date: Sat, 11 Jan 2014 21:49:22 +0100
+Subject: [PATCH 5/6] cmake: lapack: add library and header install rules
+
+Signed-off-by: Samuel Martin <[email protected]>
+---
+ SRC/CMakeLists.txt | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/SRC/CMakeLists.txt b/SRC/CMakeLists.txt
+index ac4cce3..aa60555 100644
+--- a/SRC/CMakeLists.txt
++++ b/SRC/CMakeLists.txt
+@@ -377,4 +377,5 @@ if(BUILD_COMPLEX16)
+ endif()
+ add_library(lapack ${ALLOBJ} ${ALLXOBJ})
+ target_link_libraries(lapack blas)
+-
++install(TARGETS lapack LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
++install(FILES "${CLAPACK_SOURCE_DIR}/INCLUDE/clapack.h" DESTINATION include)
+-- 
+1.8.5.3
+
package/clapack/clapack.mk new file +20 -0
new file mode 100644
index 0000000..d8ca3be
@@ -0,0 +1,20 @@
+################################################################################
+#
+# clapack
+#
+################################################################################
+
+CLAPACK_VERSION = 3.2.1
+CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz
+# This package provides 3 libraries:
+# - libf2c.a (not installed)
+# - libblas (linking against libf2c.a)
+# - liblapack (linking against libf2c.a)
+CLAPACK_LICENSE = HPND (libf2c), BSD-3c (libblas and lapack)
+CLAPACK_LICENSE_FILES = F2CLIBS/libf2c/Notice, COPYING
+CLAPACK_SITE = http://www.netlib.org/clapack
+CLAPACK_INSTALL_STAGING = YES
+CLAPACK_CONF_OPT = -DBUILD_TESTING=OFF \
+	$(if $(BR2_PACKAGE_CLAPACK_ARITH_H),-DARITH_H=$(BR2_PACKAGE_CLAPACK_ARITH_H))
+
+$(eval $(cmake-package))
Signature · 1 line
1.8.5.4
#13 lore raw

PATCH 5/11 clapack: new package

Samuel, All,

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 1 line

This package provides BLAS and LAPACK libraries.

[--SNIP--]

Quoted 9 lines
package/clapack/Config.in new file +3 -0
new file mode 100644
index 0000000..fc81d43
@@ -0,0 +1,18 @@
+config BR2_PACKAGE_CLAPACK
+	bool "cblas/clapack"
+	help

package/clapack/Config.in line 13

Quoted 10 lines
package/clapack/Config.in new file +10 -0
+	  BLAS and LAPACK C implementation (f2c'ed version of).
+
+	  http://www.netlib.org/clapack/
+
+config BR2_PACKAGE_CLAPACK_ARITH_H
+	string "Custom BLAS arith.h"
+	depends on BR2_PACKAGE_CLAPACK
+	help
+	  To optimized BLAS library for the hardware an 'arith.h' header should
+	  be provided.

To optimize the BLAS library for the hardware, an [...]

package/clapack/Config.in line 15

Quoted 1 line
package/clapack/Config.in new file +1 -0
+	  If empty, the library wil just be not optimized by the compiler.

s/wil just be not/will not be/

package/clapack/Config.in line 18

Quoted 2 lines
package/clapack/Config.in new file +2 -0
+	  In any case an 'arithchk' program is built (but not installed), to be run
+	  on the target for generating this arith.h header.

to generate

[-- SNIP Cmake stuff, I expect you know what you're doing there! ;-) --]

Quoted 6 lines
package/clapack/clapack.mk new file +0 -0
new file mode 100644
index 0000000..d8ca3be

package/clapack/clapack.mk line 8

Quoted 8 lines
package/clapack/clapack.mk new file +8 -0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# clapack
+#
+################################################################################
+
+CLAPACK_VERSION = 3.2.1
+CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz

What the difference between this ^^^^ and clapack-3.2.1.tgz at the same site:

    http://www.netlib.org/clapack/clapack-3.2.1.tgz

(Note: only http://www.netlib.org/clapack/clapack.tgz is listed on the main page, but both URLs do download the same file. The one without the version string is of course unusable, in case they bump but we don't.)

package/clapack/clapack.mk line 12

Quoted 4 lines
package/clapack/clapack.mk new file +4 -0
+# This package provides 3 libraries:
+# - libf2c.a (not installed)
+# - libblas (linking against libf2c.a)
+# - liblapack (linking against libf2c.a)

s/linking against/staticaly linked with/

package/clapack/clapack.mk line 13

Quoted 1 line
package/clapack/clapack.mk new file +1 -0
+CLAPACK_LICENSE = HPND (libf2c), BSD-3c (libblas and lapack)

s/lapack/liblapack/ to keep a coherent naming scheme.

package/clapack/clapack.mk line 20

Quoted 7 lines
package/clapack/clapack.mk new file +7 -0
+CLAPACK_LICENSE_FILES = F2CLIBS/libf2c/Notice, COPYING
+CLAPACK_SITE = http://www.netlib.org/clapack
+CLAPACK_INSTALL_STAGING = YES
+CLAPACK_CONF_OPT = -DBUILD_TESTING=OFF \
+	$(if $(BR2_PACKAGE_CLAPACK_ARITH_H),-DARITH_H=$(BR2_PACKAGE_CLAPACK_ARITH_H))
+
+$(eval $(cmake-package))

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#14 lore raw

PATCH 5/11 clapack: new package

Samuel, All,

On 2014-03-06 20:30 +0100, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 1 line

This package provides BLAS and LAPACK libraries.

[--SNIP--]

Quoted 16 lines
Quoted 6 lines
package/clapack/clapack.mk new file +0 -0
new file mode 100644
index 0000000..d8ca3be

package/clapack/clapack.mk line 8

Quoted 8 lines
package/clapack/clapack.mk new file +8 -0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# clapack
+#
+################################################################################
+
+CLAPACK_VERSION = 3.2.1
+CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz

What the difference between this ^^^^ and clapack-3.2.1.tgz at the same site:

Quoted 1 line
    http://www.netlib.org/clapack/clapack-3.2.1.tgz

Sorry, I was not clear. Here's what I meant:

Why don't we use the non-cmake tarball?

If the non-cmake *and* the build-system in there is flexible enough, that would allow us to not carry patches against the cmake build system.

Of course, that eans we have to use generic-package instead, and provide the configure, build and install commands.

But if we can avoid carying patches, I think it can be a good trade-off. At least, I think it is worthwhile investigating.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#15 lore raw

PATCH 5/11 clapack: new package

Yann, all,

Quoted 24 lines · Yann E. MORIN

Samuel, All,

On 2014-03-06 20:30 +0100, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 1 line

This package provides BLAS and LAPACK libraries.

[--SNIP--]

Quoted 16 lines
Quoted 6 lines
package/clapack/clapack.mk new file +0 -0
new file mode 100644
index 0000000..d8ca3be

package/clapack/clapack.mk line 8

Quoted 8 lines
package/clapack/clapack.mk new file +8 -0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# clapack
+#
+################################################################################
+
+CLAPACK_VERSION = 3.2.1
+CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz

What the difference between this ^^^^ and clapack-3.2.1.tgz at the same site:

Quoted 1 line
    http://www.netlib.org/clapack/clapack-3.2.1.tgz
Quoted 1 line

Sorry, I was not clear. Here's what I meant:

I got it! ;-)

Quoted 2 lines

Why don't we use the non-cmake tarball?

Because I prefer/know better/am more confident in hacking CMake code than handwritten makefiles.
So, I chose what is easier to me to maintain. Is it a valid argument? ;-)

Quoted 3 lines

If the non-cmake *and* the build-system in there is flexible enough, that would allow us to not carry patches against the cmake build system.

I have to admit I have not even tried (and sorry, I don't really feel like trying it).

Quoted 9 lines

Of course, that eans we have to use generic-package instead, and provide the configure, build and install commands.

But if we can avoid carying patches, I think it can be a good trade-off. At least, I think it is worthwhile investigating.

Regards,
Yann E. MORIN.

Regards,

Signature · 1 line
Samuel
#16 lore raw

PATCH 5/11 clapack: new package

Samuel, All,

On 2014-03-06 21:16 +0100, Samuel Martin spake thusly:

Quoted 25 lines · Yann E. MORIN
Quoted 24 lines

Samuel, All,

On 2014-03-06 20:30 +0100, Yann E. MORIN spake thusly:

Quoted 2 lines

On 2014-02-16 22:59 +0100, Samuel Martin spake thusly:

Quoted 1 line

This package provides BLAS and LAPACK libraries.

[--SNIP--]

Quoted 17 lines
Quoted 6 lines
package/clapack/clapack.mk new file +0 -0
new file mode 100644
index 0000000..d8ca3be

package/clapack/clapack.mk line 8

Quoted 8 lines
package/clapack/clapack.mk new file +8 -0
@@ -0,0 +1,20 @@
+################################################################################
+#
+# clapack
+#
+################################################################################
+
+CLAPACK_VERSION = 3.2.1
+CLAPACK_SOURCE = clapack-$(CLAPACK_VERSION)-CMAKE.tgz

What the difference between this ^^^^ and clapack-3.2.1.tgz at the same site:

    http://www.netlib.org/clapack/clapack-3.2.1.tgz
Quoted 5 lines
Quoted 1 line

Why don't we use the non-cmake tarball?

Because I prefer/know better/am more confident in hacking CMake code than handwritten makefiles.
So, I chose what is easier to me to maintain. Is it a valid argument? ;-)

Yes, of course! I expected you'd say that. ;-)

Quoted 5 lines
Quoted 2 lines

If the non-cmake *and* the build-system in there is flexible enough, that would allow us to not carry patches against the cmake build system.

I have to admit I have not even tried (and sorry, I don't really feel like trying it).

Yes, sure. I had to ask. ;-)

But if possible, try to push those changes upstream.

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#17 lore raw

PATCH 6/11 armadillo: new package

In reply to Samuel Martin

Armadillo is a C++ linear algebra library.

---
 package/Config.in              |  1 +
 package/armadillo/Config.in    |  9 +++++++++
 package/armadillo/armadillo.mk | 15 +++++++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 package/armadillo/Config.in
 create mode 100644 package/armadillo/armadillo.mk
package/Config.in +1 -0
index d843961..5c3226e 100644
@@ -723,6 +723,7 @@ source "package/zyre/Config.in"
 endmenu
 
 menu "Other"
+source "package/armadillo/Config.in"
 source "package/apr/Config.in"
 source "package/apr-util/Config.in"
 source "package/argp-standalone/Config.in"
package/armadillo/Config.in new file +9 -0
new file mode 100644
index 0000000..bbb1142
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_ARMADILLO
+	bool "armadillo"
+	depends on BR2_INSTALL_LIBSTDCPP
+	select BR2_PACKAGE_CLAPACK
+	help
+	  Armadillo: An Open Source C++ Linear Algebra Library for
+	  Fast Prototyping and Computationally Intensive Experiments.
+
+	  http://arma.sourceforge.net/
package/armadillo/armadillo.mk new file +15 -0
new file mode 100644
index 0000000..b2cfdfc
@@ -0,0 +1,15 @@
+################################################################################
+#
+# armadillo
+#
+################################################################################
+
+ARMADILLO_VERSION_MAJOR = 4.000
+ARMADILLO_VERSION = $(ARMADILLO_VERSION_MAJOR).4
+ARMADILLO_SITE = http://downloads.sourceforge.net/project/arma/
+ARMADILLO_DEPENDENCIES = clapack
+ARMADILLO_INSTALL_STAGING = YES
+ARMADILLO_LICENSE = MPLv2.0
+ARMADILLO_LICENSE_FILES = LICENSE.txt
+
+$(eval $(cmake-package))
Signature · 1 line
1.8.5.4
#18 lore raw

PATCH 6/11 armadillo: new package

Hi all,

Quoted 29 lines · Samuel Martin

Armadillo is a C++ linear algebra library.

---
 package/Config.in              |  1 +
 package/armadillo/Config.in    |  9 +++++++++
 package/armadillo/armadillo.mk | 15 +++++++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 package/armadillo/Config.in
 create mode 100644 package/armadillo/armadillo.mk
package/Config.in +1 -0
index d843961..5c3226e 100644
@@ -723,6 +723,7 @@ source "package/zyre/Config.in"
 endmenu
 
 menu "Other"
+source "package/armadillo/Config.in"
 source "package/apr/Config.in"
 source "package/apr-util/Config.in"
 source "package/argp-standalone/Config.in"
package/armadillo/Config.in new file +0 -0
new file mode 100644
index 0000000..bbb1142

package/armadillo/Config.in line 9

Quoted 9 lines
package/armadillo/Config.in new file +9 -0
@@ -0,0 +1,9 @@
+config BR2_PACKAGE_ARMADILLO
+       bool "armadillo"
+       depends on BR2_INSTALL_LIBSTDCPP
+       select BR2_PACKAGE_CLAPACK
+       help
+         Armadillo: An Open Source C++ Linear Algebra Library for
+         Fast Prototyping and Computationally Intensive Experiments.
+
+         http://arma.sourceforge.net/

I forgot the comment when the toolchain has no C++ support. I'm just waiting for other reviews on the "scientific libraries" series before reposting the patches.

Regards,

Signature · 1 line
Samuel
#19 lore raw

PATCH 6/11 armadillo: new package

Samuel Martin <[email protected]> schreef:

Quoted 21 lines

Hi all,

Quoted 18 lines · Samuel Martin

Armadillo is a C++ linear algebra library.

---
 package/Config.in              |  1 +
 package/armadillo/Config.in    |  9 +++++++++
 package/armadillo/armadillo.mk | 15 +++++++++++++++
 3 files changed, 25 insertions(+)
 create mode 100644 package/armadillo/Config.in
 create mode 100644 package/armadillo/armadillo.mk
package/Config.in +0 -0
index d843961..5c3226e 100644
@@ -723,6 +723,7 @@ source "package/zyre/Config.in"
 endmenu
 
Quoted 3 lines

package/Config.in source "package/zyre/Config.in" · line 727

Quoted 3 lines
package/Config.in +1 -0
 menu "Other"
+source "package/armadillo/Config.in"
 source "package/apr/Config.in"

Alphabetical order is not correct here.

Quoted 2 lines

package/Config.in source "package/zyre/Config.in" · line 729

Quoted 2 lines
package/Config.in +0 -0
 source "package/apr-util/Config.in"
 source "package/argp-standalone/Config.in"

Best regards,
Thomas

#20 lore raw

PATCH 7/11 python-numpy: new package

In reply to Samuel Martin

This patch add NumPy package for python.

Since Fortran support has been deprecated in Buildroot since the 2013.11 release, and because most of the external toolchains do not provide a Fortran compiler, it is necessary to explicity disable Fortran compiler to avoid catching the one from the host system if any.

We also need to fill a site.cfg file to tell NumPy build-system where it should looking for BLAS and LAPACK libraries.

---
 package/Config.in                    |  1 +
 package/python-numpy/Config.in       | 14 ++++++++++++++
 package/python-numpy/python-numpy.mk | 31 +++++++++++++++++++++++++++++++
 3 files changed, 46 insertions(+)
 create mode 100644 package/python-numpy/Config.in
 create mode 100644 package/python-numpy/python-numpy.mk
package/Config.in +1 -0
index 5c3226e..15460a9 100644
@@ -427,6 +427,7 @@ source "package/python-meld3/Config.in"
 source "package/python-msgpack/Config.in"
 source "package/python-netifaces/Config.in"
 source "package/python-nfc/Config.in"
+source "package/python-numpy/Config.in"
 source "package/python-posix-ipc/Config.in"
 source "package/python-protobuf/Config.in"
 source "package/python-pyasn/Config.in"
package/python-numpy/Config.in new file +14 -0
new file mode 100644
index 0000000..52d8da9
@@ -0,0 +1,14 @@
+config BR2_PACKAGE_PYTHON_NUMPY
+	bool "python-numpy"
+	help
+	  NumPy is the fundamental package for scientific computing with Python.
+
+	  Note that NumPy needs fenv.h fully supported by the C-library.
+
+	  http://www.numpy.org/
+
+if BR2_PACKAGE_PYTHON_NUMPY
+config BR2_PACKAGE_PYTHON_NUMPY_BLAS_LAPACK_SUPPORT
+	bool "blas/lapack support"
+	select BR2_PACKAGE_CLAPACK
+endif
package/python-numpy/python-numpy.mk new file +31 -0
new file mode 100644
index 0000000..c082045
@@ -0,0 +1,31 @@
+################################################################################
+#
+# python-numpy
+#
+################################################################################
+
+PYTHON_NUMPY_VERSION = 1.8.0
+PYTHON_NUMPY_SOURCE = numpy-$(PYTHON_NUMPY_VERSION).tar.gz
+PYTHON_NUMPY_SITE = http://downloads.sourceforge.net/numpy
+PYTHON_NUMPY_LICENSE = BSD-3c
+PYTHON_NUMPY_LICENSE_FILES = LICENSE.txt
+PYTHON_NUMPY_SETUP_TYPE = distutils
+PYTHON_NUMPY_DEPENDENCIES = \
+	$(if BR2_PACKAGE_PYTHON_NUMPY_BLAS_LAPACK_SUPPORT,clapack)
+
+PYTHON_NUMPY_SITE_CFG_LIBS = \
+	$(if $(BR2_PACKAGE_PYTHON_NUMPY_BLAS_LAPACK_SUPPORT),blas lapack)
+
+PYTHON_NUMPY_BUILD_OPT = --fcompiler=None
+
+define PYTHON_NUMPY_CONFIGURE_CMDS
+	-rm -f $(@D)/site.cfg
+	echo "[DEFAULT]" >> $(@D)/site.cfg
+	echo "library_dirs = $(STAGING_DIR)/usr/lib" >> $(@D)/site.cfg
+	echo "include_dirs = $(STAGING_DIR)/usr/include" >> $(@D)/site.cfg
+	echo "libraries =" >> $(@D)/site.cfg
+	$(foreach lib,$(PYTHON_NUMPY_SITE_CFG_LIBS),\
+		echo "    $(lib)" >> $(@D)/site.cfg ;)
+endef
+
+$(eval $(python-package))
Signature · 1 line
1.8.5.4
#21 lore raw

PATCH 7/11 python-numpy: new package

Dear Samuel Martin,

package/python-numpy/Config.in line 14

Quoted 5 lines · Samuel Martin
package/python-numpy/Config.in new file +5 -0
+if BR2_PACKAGE_PYTHON_NUMPY
+config BR2_PACKAGE_PYTHON_NUMPY_BLAS_LAPACK_SUPPORT
+	bool "blas/lapack support"
+	select BR2_PACKAGE_CLAPACK
+endif

Any reason why we don't automatically enable blas/lapack support when available? Also, I'd prefer to have the optional blas/lapack support available as a separate patch from the package addition itself, so that python-numpy can be applied independently from blas/lapack.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#22 lore raw

PATCH 8/11 python-numpy: add install-staging command

In reply to Samuel Martin

Some packages may include headers provided by python-numpy package. So, also install it in the sysroot.

---
 package/python-numpy/python-numpy.mk | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
package/python-numpy/python-numpy.mk +17 -0
index c082045..ff70cfe 100644
@@ -28,4 +28,21 @@ define PYTHON_NUMPY_CONFIGURE_CMDS
 		echo "    $(lib)" >> $(@D)/site.cfg ;)
 endef
 
+# Some package may include few headers from NumPy, so let's install it in the
+# staging area.
+PYTHON_NUMPY_INSTALL_STAGING = YES
+
+# This install staging commands is an adjusted and simplified version of the
+# install target commands vampirized from the python-package infrastructure.
+#
+# Note that the append '--prefix=...' parameter overrides the one set by the
+# python-package infrastructure in the PYTHON_NUMPY_INSTALL_OPT variable.
+define PYTHON_NUMPY_INSTALL_STAGING_CMDS
+	(cd $(PYTHON_NUMPY_BUILDDIR)/; \
+		$(PYTHON_NUMPY_BASE_ENV) $(PYTHON_NUMPY_ENV) \
+		$(HOST_DIR)/usr/bin/python setup.py install \
+		$(PYTHON_NUMPY_BASE_INSTALL_OPT) \
+		$(PYTHON_NUMPY_INSTALL_OPT) --prefix=$(STAGING_DIR)/usr)
+endef
+
 $(eval $(python-package))
Signature · 1 line
1.8.5.4
#23 lore raw

PATCH 8/11 python-numpy: add install-staging command

Dear Samuel Martin,

Quoted 17 lines · Samuel Martin

Some packages may include headers provided by python-numpy package. So, also install it in the sysroot.

---
 package/python-numpy/python-numpy.mk | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
package/python-numpy/python-numpy.mk +1 -0
index c082045..ff70cfe 100644
@@ -28,4 +28,21 @@ define PYTHON_NUMPY_CONFIGURE_CMDS
 		echo "    $(lib)" >> $(@D)/site.cfg ;)
 endef
 
+# Some package may include few headers from NumPy, so let's install it in the

package/python-numpy/python-numpy.mk define PYTHON_NUMPY_CONFIGURE_CMDS · line 41

Quoted 10 lines
package/python-numpy/python-numpy.mk +10 -0
+# staging area.
+PYTHON_NUMPY_INSTALL_STAGING = YES
+
+# This install staging commands is an adjusted and simplified version of the
+# install target commands vampirized from the python-package infrastructure.
+#
+# Note that the append '--prefix=...' parameter overrides the one set by the
+# python-package infrastructure in the PYTHON_NUMPY_INSTALL_OPT variable.
+define PYTHON_NUMPY_INSTALL_STAGING_CMDS
+	(cd $(PYTHON_NUMPY_BUILDDIR)/; \

This can be $(@D), no ?

package/python-numpy/python-numpy.mk define PYTHON_NUMPY_CONFIGURE_CMDS · line 48

Quoted 7 lines
package/python-numpy/python-numpy.mk +6 -0
+		$(PYTHON_NUMPY_BASE_ENV) $(PYTHON_NUMPY_ENV) \
+		$(HOST_DIR)/usr/bin/python setup.py install \
+		$(PYTHON_NUMPY_BASE_INSTALL_OPT) \
+		$(PYTHON_NUMPY_INSTALL_OPT) --prefix=$(STAGING_DIR)/usr)
+endef
+
 $(eval $(python-package))

Also, any reason for having this separated from the package addition itself?

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#24 lore raw

PATCH 9/11 opencv: add python/numpy support

In reply to Samuel Martin

opencv_python module needs python-numpy because it uses some numpy headers in this wrapper.

A patch in the OpenCV's build-system is also needed to prevent it from trying to run python for numpy detection. This patch has already been integrated upstream.

---
 package/opencv/Config.in                           |  7 +-
 ...t-run-python-for-numpy-detection-when-cro.patch | 77 ++++++++++++++++++++++
 package/opencv/opencv.mk                           | 16 ++++-
 3 files changed, 97 insertions(+), 3 deletions(-)
 create mode 100644 package/opencv/opencv-0001-cmake-do-not-run-python-for-numpy-detection-when-cro.patch
package/opencv/Config.in +6 -1
index b6192dc..be0b660 100644
@@ -84,7 +84,12 @@ config BR2_PACKAGE_OPENCV_LIB_PHOTO
 	help
 	  Include opencv_photo module into the OpenCV build.
 
-comment "opencv_python module requires numpy which is not yet available."
+config BR2_PACKAGE_OPENCV_LIB_PYTHON
+	bool "python"
+	depends on BR2_PACKAGE_PYTHON
+	help
+	  Include opencv_python module into the OpenCV build.
+	  No python example is installed.
 
 config BR2_PACKAGE_OPENCV_LIB_STITCHING
 	bool "stitching"
package/opencv/opencv-0001-cmake-do-not-run-python-for-numpy-detection-when-cro.patch new file +77 -0

77 lines not on this page · raw message

package/opencv/opencv.mk +14 -2
index 51255aa..52a2b42 100644
@@ -60,7 +60,7 @@ OPENCV_CONF_OPT += \
 	-DBUILD_opencv_objdetect=$(if $(BR2_PACKAGE_OPENCV_LIB_OBJDETECT),ON,OFF) \
 	-DBUILD_opencv_ocl=OFF                                                  \
 	-DBUILD_opencv_photo=$(if $(BR2_PACKAGE_OPENCV_LIB_PHOTO),ON,OFF)       \
-	-DBUILD_opencv_python=OFF                                               \
+	-DBUILD_opencv_python=$(if $(BR2_PACKAGE_OPENCV_LIB_PYTHON),ON,OFF)     \
 	-DBUILD_opencv_stitching=$(if $(BR2_PACKAGE_OPENCV_LIB_STITCHING),ON,OFF) \
 	-DBUILD_opencv_superres=$(if $(BR2_PACKAGE_OPENCV_LIB_SUPERRES),ON,OFF) \
 	-DBUILD_opencv_ts=$(if $(BR2_PACKAGE_OPENCV_LIB_TS),ON,OFF)             \
@@ -138,7 +138,6 @@ OPENCV_CONF_OPT += \
 	-DBUILD_TIFF=OFF          \
 	-DBUILD_ZLIB=OFF          \
 	\
-	-DBUILD_NEW_PYTHON_SUPPORT=OFF \
 	-DINSTALL_C_EXAMPLES=OFF       \
 	-DINSTALL_PYTHON_EXAMPLES=OFF  \
 	-DINSTALL_TO_MANGLED_PATHS=OFF
@@ -226,6 +225,19 @@ OPENCV_CONF_OPT += \
 	-DWITH_LIBV4L=OFF
 endif
 
+ifeq ($(BR2_PACKAGE_OPENCV_LIB_PYTHON),y)
+OPENCV_CONF_OPT += \
+	-DBUILD_NEW_PYTHON_SUPPORT=ON \
+	-DPYTHON_EXECUTABLE=$(HOST_DIR)/usr/bin/python2                               \
+	-DPYTHON_INCLUDE_DIR=$(STAGING_DIR)/usr/include/python$(PYTHON_VERSION_MAJOR) \
+	-DPYTHON_LIBRARY=$(STAGING_DIR)/usr/lib/libpython$(PYTHON_VERSION_MAJOR).so   \
+	-DPYTHON_NUMPY_INCLUDE_DIR=$(STAGING_DIR)/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages/numpy/core/include \
+	-DPYTHON_NUMPY_VERSION=$(PYTHON_NUMPY_VERSION)
+OPENCV_DEPENDENCIES += python python-numpy
+else
+OPENCV_CONF_OPT += -DBUILD_NEW_PYTHON_SUPPORT=OFF
+endif
+
 # Installation hooks:
 define OPENCV_CLEAN_INSTALL_DOC
 	$(RM) -fr $(TARGET_DIR)/usr/share/OpenCV/doc
Signature · 1 line
1.8.5.4
#25 lore raw

PATCH 9/11 opencv: add python/numpy support

Samuel, All,

On 2014-02-16 23:00 +0100, Samuel Martin spake thusly:

Quoted 6 lines

opencv_python module needs python-numpy because it uses some numpy headers in this wrapper.

A patch in the OpenCV's build-system is also needed to prevent it from trying to run python for numpy detection. This patch has already been integrated upstream.

[--SNIP--]

package/opencv/opencv-0001-cmake-do-not-run-python-for-numpy-detection-when-cro.patch line 5

Quoted 11 lines
package/opencv/opencv-0001-cmake-do-not-run-python-for-numpy-detection-when-cro.patch new file +5 -0
new file mode 100644
index 0000000..bff14eb
@@ -0,0 +1,77 @@
+From 2ab6c54a6c466c3cb577cacbbace659fe55c2a4f Mon Sep 17 00:00:00 2001
+From: Samuel Martin <[email protected]>
+Date: Fri, 10 Jan 2014 23:39:59 +0100
+Subject: [PATCH] cmake: do not run python for numpy detection when
+ cross-compiling

It would be nice if you were using exactly the same patch as upstream:

    6cb90c0e976ff24af85167e71d88c9d9b2ed06c7 fix cross-compilation issue with Numpy

Yours is slightly different.

Using the same patch as upstream would help spot it in a later bump.

package/opencv/opencv.mk

Quoted 4 lines
package/opencv/opencv.mk +0 -0
index 51255aa..52a2b42 100644

[--SNIP--]

package/opencv/opencv.mk OPENCV_CONF_OPT += \ · line 231

Quoted 8 lines
package/opencv/opencv.mk +4 -0
@@ -226,6 +225,19 @@ OPENCV_CONF_OPT += \
 	-DWITH_LIBV4L=OFF
 endif
 
+ifeq ($(BR2_PACKAGE_OPENCV_LIB_PYTHON),y)
+OPENCV_CONF_OPT += \
+	-DBUILD_NEW_PYTHON_SUPPORT=ON \
+	-DPYTHON_EXECUTABLE=$(HOST_DIR)/usr/bin/python2                               \

I hope this is only needed at build time, not at runtime?

Also, you specifically use 'python2', above. what about Python 2 vs. Python 3 ? Care to shed some light on this, to the non-pythonist I am? ;-)

Regards,
Yann E. MORIN.

Signature · 6 lines
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'
#26 lore raw

PATCH 10/11 opencv: define modules inter-dependencies

In reply to Samuel Martin

OpenCV allows to enable/disable the selection of modules (a.k.a. opencv libraries). These modules depend one from the others; these dependencies are already handled by the build-system (CMake).

However, the way we handled them in Buildroot was not really clean. For each opencv module, there is a kconfig option, but we forced the corresponding cmake config option without checking for module dependencies.

This patch replicates the modules' dependency relations in the Config.in, so that the selection of the user will actually be built.

---
 package/opencv/Config.in | 75 ++++++++++++++++++++++++++++++++++++++----------
 1 file changed, 60 insertions(+), 15 deletions(-)
package/opencv/Config.in +60 -15
index be0b660..74c0a38 100644
@@ -8,6 +8,8 @@ menuconfig BR2_PACKAGE_OPENCV
 	  OpenCV (Open Source Computer Vision) is a library of programming
 	  functions for real time computer vision.
 
+	  Note that the opencv_core module is automatically enabled.
+
 	  http://opencv.org/
 
 if BR2_PACKAGE_OPENCV
@@ -16,109 +18,152 @@ comment "OpenCV modules"
 
 config BR2_PACKAGE_OPENCV_LIB_CALIB3D
 	bool "calib3d"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
 	help
 	  Include opencv_calib3d module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_CONTRIB
 	bool "contrib"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_ML
+	select BR2_PACKAGE_OPENCV_LIB_OBJDETECT
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_contrib module into the OpenCV build.
 
+# opencv_core module is automatically enabled when OpenCV package is selected
+
 config BR2_PACKAGE_OPENCV_LIB_FEATURES2D
 	bool "features2d"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_FLANN
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_features2d module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_FLANN
 	bool "flann"
-	default y
+	# opencv_core dependency is already enabled
 	help
 	  Include opencv_flann module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_GPU
 	bool "gpu"
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_LEGACY
+	select BR2_PACKAGE_OPENCV_LIB_OBJDETECT
+	select BR2_PACKAGE_OPENCV_LIB_PHOTO
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_gpu module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_HIGHGUI
 	bool "highgui"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_highgui module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	bool "imgproc"
-	default y
+	# opencv_core dependency is already enabled
 	help
 	  Include opencv_imgproc module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_LEGACY
 	bool "legacy"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_ML
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_legacy module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_ML
 	bool "ml (machine learning)"
-	default y
+	# opencv_core dependency is already enabled
 	help
 	  Include opencv_ml module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_NONFREE
 	bool "nonfree"
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_nonfree module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_OBJDETECT
 	bool "objdetect"
-	default y
+	# opencv_core dependency is already enabled
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_objdetect module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_PHOTO
 	bool "photo"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_photo module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_PYTHON
 	bool "python"
 	depends on BR2_PACKAGE_PYTHON
+	# opencv_core dependency is already enabled
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_CONTRIB
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+	select BR2_PACKAGE_OPENCV_LIB_FLANN
+	select BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_LEGACY
+	select BR2_PACKAGE_OPENCV_LIB_ML
+	select BR2_PACKAGE_OPENCV_LIB_OBJDETECT
+	select BR2_PACKAGE_OPENCV_LIB_PHOTO
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_python module into the OpenCV build.
 	  No python example is installed.
 
 config BR2_PACKAGE_OPENCV_LIB_STITCHING
 	bool "stitching"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_OBJDETECT
 	help
 	  Include opencv_stitching module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_SUPERRES
 	bool "superres"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_superres "super resolution" - module into the OpenCV
 	  build.
 
 config BR2_PACKAGE_OPENCV_LIB_TS
 	bool "ts (touchscreen)"
-	default y
+	# opencv_core dependency is already enabled
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
 	help
 	  Include opencv_ts module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_VIDEO
 	bool "video"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
 	help
 	  Include opencv_video module into the OpenCV build.
 
 config BR2_PACKAGE_OPENCV_LIB_VIDEOSTAB
 	bool "videostab"
-	default y
+	select BR2_PACKAGE_OPENCV_LIB_CALIB3D
+	select BR2_PACKAGE_OPENCV_LIB_FEATURES2D
+	select BR2_PACKAGE_OPENCV_LIB_HIGHGUI
+	select BR2_PACKAGE_OPENCV_LIB_IMGPROC
+	select BR2_PACKAGE_OPENCV_LIB_PHOTO
+	select BR2_PACKAGE_OPENCV_LIB_VIDEO
 	help
 	  Include opencv_videostab module into the OpenCV build.
 
Signature · 1 line
1.8.5.4
#27 lore raw

PATCH 11/11 vlc: add opencv support

In reply to Samuel Martin

opencv support for video filter in vlc requires a couple of opencv features to be enabled.

---
 package/vlc/vlc.mk | 7 +++++++
 1 file changed, 7 insertions(+)
package/vlc/vlc.mk +7 -0
index ad7d9ff..14d6538 100644
@@ -108,6 +108,13 @@ else
 VLC_CONF_OPT += --disable-glx
 endif
 
+ifeq ($(BR2_PACKAGE_OPENCV_LIB_LEGACY)$(BR2_PACKAGE_OPENCV_LIB_OBJDETECT),yy)
+VCL_CONF_OPT += --with-opencv
+VLC_DEPENDENCIES += opencv
+else
+VLC_CONF_OPT += --without-opencv
+endif
+
 ifeq ($(BR2_PACKAGE_OPUS),y)
 VLC_CONF_OPT += --enable-opus
 VLC_DEPENDENCIES += opus
Signature · 1 line
1.8.5.4