| Submitter | Dongxiao Xu |
|---|---|
| Date | Jan. 13, 2012, 11:38 a.m. |
| Message ID | <bc6335972ec83f47469f18ac973f057b3323b46d.1326454446.git.dongxiao.xu@intel.com> |
| Download | mbox | patch |
| Permalink | /patch/19297/ |
| State | New |
| Headers | show |
Comments
Op 13 jan. 2012, om 12:38 heeft Dongxiao Xu het volgende geschreven: > packageinfo.bbclass is to pass the accurate package information to > clients (e.g. Hob), including PN, PV, RDEPENDS, PKGSIZE, etc. How many classes for package/recipe info do we actually need?
On Fri, 2012-01-13 at 13:05 +0100, Koen Kooi wrote: > Op 13 jan. 2012, om 12:38 heeft Dongxiao Xu het volgende geschreven: > > > packageinfo.bbclass is to pass the accurate package information to > > clients (e.g. Hob), including PN, PV, RDEPENDS, PKGSIZE, etc. > > How many classes for package/recipe info do we actually need? I appreciate that the number of emails on the list on this topic make it look like we have a lot of overlap. If you look carefully at this patch you'll see that what this code does is pull together information and generate a bitbake event containing that information. This is not something any other existing code does. It takes the data from an existing data store and does not create any new one. This is IMO a vast improvement over some of the earlier versions of these patches so I'm planning to take this one. Longer term we do need to reconcile buildhistory and packagedata as two stores of very similar data but this patch doesn't complicate that issue. Cheers, Richard
Patch
diff --git a/meta/classes/packageinfo.bbclass b/meta/classes/packageinfo.bbclass new file mode 100644 index 0000000..53551c4 --- /dev/null +++ b/meta/classes/packageinfo.bbclass @@ -0,0 +1,30 @@ +python packageinfo_handler () { + if isinstance(e, bb.event.RequestPackageInfo): + import oe.packagedata + pkginfolist = [] + tmpdir = e.data.getVar('TMPDIR', True) + target_vendor = e.data.getVar('TARGET_VENDOR', True) + target_os = e.data.getVar('TARGET_OS', True) + package_archs = e.data.getVar('PACKAGE_ARCHS', True) + packaging = e.data.getVar('PACKAGE_CLASSES', True).split()[0].split('_')[1] + deploy_dir = e.data.getVar('DEPLOY_DIR', True) + '/' + packaging + for arch in package_archs.split(): + pkgdata_dir = tmpdir + '/pkgdata/' + arch + target_vendor + '-' + target_os + '/runtime/' + if os.path.exists(pkgdata_dir): + for root, dirs, files in os.walk(pkgdata_dir): + for pkgname in files: + if pkgname.endswith('.packaged'): + continue + sdata = oe.packagedata.read_pkgdatafile(root + pkgname) + sdata['PKG'] = pkgname + pkgrename = sdata['PKG_%s' % pkgname] + pkgv = sdata['PKGV'] + pkgr = sdata['PKGR'] + pkgname_path = deploy_dir + '/' + arch + '/' + pkgname + '-' + pkgv + '-' + pkgr + '.' + arch + '.' + packaging + pkgrename_path = deploy_dir + '/' + arch + '/' + pkgrename + '-' + pkgv + '-' + pkgr + '.' + arch + '.' + packaging + if os.path.exists(pkgname_path) or os.path.exists(pkgrename_path): + pkginfolist.append(sdata) + bb.event.fire(bb.event.PackageInfo(pkginfolist), e.data) +} + +addhandler packageinfo_handler
packageinfo.bbclass is to pass the accurate package information to clients (e.g. Hob), including PN, PV, RDEPENDS, PKGSIZE, etc. Signed-off-by: Dongxiao Xu <dongxiao.xu@intel.com> --- meta/classes/packageinfo.bbclass | 30 ++++++++++++++++++++++++++++++ 1 files changed, 30 insertions(+), 0 deletions(-) create mode 100644 meta/classes/packageinfo.bbclass