[oe] [PATCH] opencv: Fix broken deps for opencv meta package

Jacob Stiffler j-stiffler at ti.com
Wed May 4 15:15:41 UTC 2016


* The opencv meta package's RDEPENDS list is blindly populated with
  all non *-dev, *-dbg, and *-doc packages

* This includes the non-existent opencv-locale package which is added
  to the list by default in oe-core/meta/conf/bitbake.conf
* This issue was hidden as late as jethro as the distutils class was
  overwriting the PACKAGES list
* Therefore add opencv-locale to the opencv meta package blacklist,
  and filter out all packages which contain "locale" in the package
  name to be safe.

* Another issue with the meta package dependency generation logic is
  that it may add other empty, non-existent packages.
* The existence of the opencv-java package depends on the
  PACKAGECONFIG, though it is added as a meta package dependency in
  all cases.
* Therefore check the contents of PKGDEST to only add non-empty
  packages as RDEPENDS for the opencv meta package.

Signed-off-by: Jacob Stiffler <j-stiffler at ti.com>
---
 meta-oe/recipes-support/opencv/opencv_3.1.bb | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/meta-oe/recipes-support/opencv/opencv_3.1.bb b/meta-oe/recipes-support/opencv/opencv_3.1.bb
index c1f9802..f168550 100644
--- a/meta-oe/recipes-support/opencv/opencv_3.1.bb
+++ b/meta-oe/recipes-support/opencv/opencv_3.1.bb
@@ -101,11 +101,22 @@ python populate_packages_prepend () {
     d.setVar('RRECOMMENDS_' + metapkg, ' '.join(metapkg_rdepends))
 
     metapkg =  pn
-    blacklist = [ metapkg ]
+    blacklist = [ metapkg, pn + '-locale' ]
     metapkg_rdepends = [ ]
+    pkgdest = d.getVar('PKGDEST', True)
     for pkg in packages[1:]:
-        if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.endswith('-doc') :
-            metapkg_rdepends.append(pkg)
+        if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.endswith('-dbg') and not pkg.endswith('-doc') and not pkg.count('local') :
+            # See if the package is empty by looking at the contents of its PKGDEST subdirectory.
+            # If this subdirectory is empty, then the package is.
+            # Empty packages do not get added to the meta package's RDEPENDS
+            pkgdir = os.path.join(pkgdest, pkg)
+            if os.path.exists(pkgdir):
+                dir_contents = os.listdir(pkgdir) or []
+            else:
+                dir_contents = []
+            is_empty = len(dir_contents) == 0
+            if not is_empty:
+                metapkg_rdepends.append(pkg)
     bb.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d)
 
 }
@@ -145,4 +156,3 @@ do_install_append() {
     install -d ${D}${datadir}/OpenCV/samples/bin/
     cp -f bin/*-tutorial-* bin/*-example-* ${D}${datadir}/OpenCV/samples/bin/
 }
-
-- 
2.7.4




More information about the Openembedded-devel mailing list