diff options
Diffstat (limited to 'meta')
-rw-r--r-- | meta/classes/package.bbclass | 19 | ||||
-rw-r--r-- | meta/classes/toaster.bbclass | 28 |
2 files changed, 14 insertions, 33 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass index 48bb982..cce2499 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass @@ -1110,6 +1110,7 @@ PKGDESTWORK = "${WORKDIR}/pkgdata" python emit_pkgdata() { from glob import glob + import json def write_if_exists(f, pkg, var): def encode(str): @@ -1173,22 +1174,20 @@ python emit_pkgdata() { workdir = d.getVar('WORKDIR', True) for pkg in packages.split(): - items = {} - for files_list in pkgfiles[pkg]: - item_name = os.path.basename(files_list) - item_path = os.path.dirname(files_list) - if item_path not in items: - items[item_path] = [] - items[item_path].append(item_name) - subdata_file = pkgdatadir + "/runtime/%s" % pkg - pkgval = d.getVar('PKG_%s' % pkg, True) if pkgval is None: pkgval = pkg d.setVar('PKG_%s' % pkg, pkg) - d.setVar('FILES_INFO', str(items)) + pkgdestpkg = os.path.join(pkgdest, pkg) + files = {} + for f in pkgfiles[pkg]: + relpth = os.path.relpath(f, pkgdestpkg) + fstat = os.lstat(f) + files[os.sep + relpth] = fstat.st_size + d.setVar('FILES_INFO', json.dumps(files)) + subdata_file = pkgdatadir + "/runtime/%s" % pkg sf = open(subdata_file, 'w') write_if_exists(sf, pkg, 'PN') write_if_exists(sf, pkg, 'PV') diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass index 7dbb384..8dc1663 100644 --- a/meta/classes/toaster.bbclass +++ b/meta/classes/toaster.bbclass @@ -39,8 +39,7 @@ python toaster_package_dumpdata() { # scan and send data for each package - import ast - import fnmatch + import json lpkgdata = {} for pkg in packages.split(): @@ -54,28 +53,11 @@ python toaster_package_dumpdata() { (n, v) = line.rstrip().split(":", 1) if pkg in n: n = n.replace("_" + pkg, "") - lpkgdata[n] = v.strip() - line = sf.readline() - pkgsplitname = os.path.join(pkgdest, pkg) - # replace FILES_INFO data with a dictionary of file name - file size if n == 'FILES_INFO': - filesizedata = {} - val = v.strip().replace('\\\'', '\'') - dictval = ast.literal_eval(val) - for parent, dirlist in dictval.items(): - idx = parent.find(pkgsplitname) - if idx > -1: - parent = parent[idx+len(pkgsplitname):] - else: - bb.error("Invalid path while looking for file ", parent) - for basename in dirlist: - fullpath = os.path.join(parent, basename) - try: - filesizedata[fullpath] = os.stat(pkgsplitname + fullpath).st_size - except OSError: - # we may hit a symlink that is not pointing correctly over package-split - filesizedata[fullpath] = 0 - lpkgdata[n] = filesizedata + lpkgdata[n] = json.loads(v) + else: + lpkgdata[n] = v.strip() + line = sf.readline() # Fire an event containing the pkg data bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d) |