[OE-core] [PATCH 2/3] package.bbclass: trigger event when collecting package info

Alex DAMIAN alexandru.damian at intel.com
Tue Sep 24 16:36:06 UTC 2013


From: Alexandru DAMIAN <alexandru.damian at intel.com>

Adding an event that contains the package details,
which is triggered when the emit_pkgdata runs.
This is used to collect package information in the UI clients.

Slight rewrite of the file-writing section as to make
the code easier to maintain.

Signed-off-by: Alexandru DAMIAN <alexandru.damian at intel.com>
---
 meta/classes/package.bbclass | 41 +++++++++++++----------------------------
 1 file changed, 13 insertions(+), 28 deletions(-)

diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index fbb6839..624a1ab 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1106,10 +1106,11 @@ python emit_pkgdata() {
         val = d.getVar('%s_%s' % (var, pkg), True)
         if val:
             f.write('%s_%s: %s\n' % (var, pkg, encode(val)))
-            return
+            return encode(val)
         val = d.getVar('%s' % (var), True)
         if val:
             f.write('%s: %s\n' % (var, encode(val)))
+            return encode(val)
         return
 
     def get_directory_size(dir):
@@ -1175,41 +1176,25 @@ python emit_pkgdata() {
 
         d.setVar('FILES_INFO', str(items))
 
+        lpkgdata = {}
+
         sf = open(subdata_file, 'w')
-        write_if_exists(sf, pkg, 'PN')
-        write_if_exists(sf, pkg, 'PV')
-        write_if_exists(sf, pkg, 'PR')
-        write_if_exists(sf, pkg, 'PKGV')
-        write_if_exists(sf, pkg, 'PKGR')
-        write_if_exists(sf, pkg, 'LICENSE')
-        write_if_exists(sf, pkg, 'DESCRIPTION')
-        write_if_exists(sf, pkg, 'SUMMARY')
-        write_if_exists(sf, pkg, 'RDEPENDS')
-        write_if_exists(sf, pkg, 'RPROVIDES')
-        write_if_exists(sf, pkg, 'RRECOMMENDS')
-        write_if_exists(sf, pkg, 'RSUGGESTS')
-        write_if_exists(sf, pkg, 'RREPLACES')
-        write_if_exists(sf, pkg, 'RCONFLICTS')
-        write_if_exists(sf, pkg, 'SECTION')
-        write_if_exists(sf, pkg, 'PKG')
-        write_if_exists(sf, pkg, 'ALLOW_EMPTY')
-        write_if_exists(sf, pkg, 'FILES')
-        write_if_exists(sf, pkg, 'pkg_postinst')
-        write_if_exists(sf, pkg, 'pkg_postrm')
-        write_if_exists(sf, pkg, 'pkg_preinst')
-        write_if_exists(sf, pkg, 'pkg_prerm')
-        write_if_exists(sf, pkg, 'FILERPROVIDESFLIST')
-        write_if_exists(sf, pkg, 'FILES_INFO')
+        for vn in ('PN',  'PV',  'PR',  'PKGV',  'PKGR',  'LICENSE',  'DESCRIPTION',  'SUMMARY',  'RDEPENDS',  'RPROVIDES',  'RRECOMMENDS',  'RSUGGESTS',  'RREPLACES',  'RCONFLICTS',  'SECTION',  'PKG',  'ALLOW_EMPTY',  'FILES',  'pkg_postinst',  'pkg_postrm',  'pkg_preinst',  'pkg_prerm',  'FILERPROVIDESFLIST',  'FILES_INFO', 'FILERDEPENDSFLIST'):
+            lpkgdata[vn] = write_if_exists(sf, pkg, vn)
+
         for dfile in (d.getVar('FILERPROVIDESFLIST_' + pkg, True) or "").split():
-            write_if_exists(sf, pkg, 'FILERPROVIDES_' + dfile)
+            lpkgdata['FILERDEPENDSFLIST_'+dfile] = write_if_exists(sf, pkg, 'FILERPROVIDES_' + dfile)
 
-        write_if_exists(sf, pkg, 'FILERDEPENDSFLIST')
         for dfile in (d.getVar('FILERDEPENDSFLIST_' + pkg, True) or "").split():
-            write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile)
+            lpkgdata['FILERDEPENDS_'+dfile] = write_if_exists(sf, pkg, 'FILERDEPENDS_' + dfile)
 
         sf.write('%s_%s: %s\n' % ('PKGSIZE', pkg, get_directory_size(pkgdest + "/%s" % pkg)))
         sf.close()
 
+        # Fire an event containing the pkg data
+        bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d)
+
+
         # Symlinks needed for reverse lookups (from the final package name)
         subdata_sym = pkgdatadir + "/runtime-reverse/%s" % pkgval
         oe.path.symlink("../runtime/%s" % pkg, subdata_sym, True)
-- 
1.8.1.2




More information about the Openembedded-core mailing list