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 48bb9828f5..cce2499122 100644 --- a/meta/classes/package.bbclass +++ b/meta/classes/package.bbclass | |||
@@ -1110,6 +1110,7 @@ PKGDESTWORK = "${WORKDIR}/pkgdata" | |||
1110 | 1110 | ||
1111 | python emit_pkgdata() { | 1111 | python emit_pkgdata() { |
1112 | from glob import glob | 1112 | from glob import glob |
1113 | import json | ||
1113 | 1114 | ||
1114 | def write_if_exists(f, pkg, var): | 1115 | def write_if_exists(f, pkg, var): |
1115 | def encode(str): | 1116 | def encode(str): |
@@ -1173,22 +1174,20 @@ python emit_pkgdata() { | |||
1173 | workdir = d.getVar('WORKDIR', True) | 1174 | workdir = d.getVar('WORKDIR', True) |
1174 | 1175 | ||
1175 | for pkg in packages.split(): | 1176 | for pkg in packages.split(): |
1176 | items = {} | ||
1177 | for files_list in pkgfiles[pkg]: | ||
1178 | item_name = os.path.basename(files_list) | ||
1179 | item_path = os.path.dirname(files_list) | ||
1180 | if item_path not in items: | ||
1181 | items[item_path] = [] | ||
1182 | items[item_path].append(item_name) | ||
1183 | subdata_file = pkgdatadir + "/runtime/%s" % pkg | ||
1184 | |||
1185 | pkgval = d.getVar('PKG_%s' % pkg, True) | 1177 | pkgval = d.getVar('PKG_%s' % pkg, True) |
1186 | if pkgval is None: | 1178 | if pkgval is None: |
1187 | pkgval = pkg | 1179 | pkgval = pkg |
1188 | d.setVar('PKG_%s' % pkg, pkg) | 1180 | d.setVar('PKG_%s' % pkg, pkg) |
1189 | 1181 | ||
1190 | d.setVar('FILES_INFO', str(items)) | 1182 | pkgdestpkg = os.path.join(pkgdest, pkg) |
1183 | files = {} | ||
1184 | for f in pkgfiles[pkg]: | ||
1185 | relpth = os.path.relpath(f, pkgdestpkg) | ||
1186 | fstat = os.lstat(f) | ||
1187 | files[os.sep + relpth] = fstat.st_size | ||
1188 | d.setVar('FILES_INFO', json.dumps(files)) | ||
1191 | 1189 | ||
1190 | subdata_file = pkgdatadir + "/runtime/%s" % pkg | ||
1192 | sf = open(subdata_file, 'w') | 1191 | sf = open(subdata_file, 'w') |
1193 | write_if_exists(sf, pkg, 'PN') | 1192 | write_if_exists(sf, pkg, 'PN') |
1194 | write_if_exists(sf, pkg, 'PV') | 1193 | write_if_exists(sf, pkg, 'PV') |
diff --git a/meta/classes/toaster.bbclass b/meta/classes/toaster.bbclass index 7dbb3844d7..8dc1663165 100644 --- a/meta/classes/toaster.bbclass +++ b/meta/classes/toaster.bbclass | |||
@@ -39,8 +39,7 @@ python toaster_package_dumpdata() { | |||
39 | 39 | ||
40 | 40 | ||
41 | # scan and send data for each package | 41 | # scan and send data for each package |
42 | import ast | 42 | import json |
43 | import fnmatch | ||
44 | 43 | ||
45 | lpkgdata = {} | 44 | lpkgdata = {} |
46 | for pkg in packages.split(): | 45 | for pkg in packages.split(): |
@@ -54,28 +53,11 @@ python toaster_package_dumpdata() { | |||
54 | (n, v) = line.rstrip().split(":", 1) | 53 | (n, v) = line.rstrip().split(":", 1) |
55 | if pkg in n: | 54 | if pkg in n: |
56 | n = n.replace("_" + pkg, "") | 55 | n = n.replace("_" + pkg, "") |
57 | lpkgdata[n] = v.strip() | ||
58 | line = sf.readline() | ||
59 | pkgsplitname = os.path.join(pkgdest, pkg) | ||
60 | # replace FILES_INFO data with a dictionary of file name - file size | ||
61 | if n == 'FILES_INFO': | 56 | if n == 'FILES_INFO': |
62 | filesizedata = {} | 57 | lpkgdata[n] = json.loads(v) |
63 | val = v.strip().replace('\\\'', '\'') | 58 | else: |
64 | dictval = ast.literal_eval(val) | 59 | lpkgdata[n] = v.strip() |
65 | for parent, dirlist in dictval.items(): | 60 | line = sf.readline() |
66 | idx = parent.find(pkgsplitname) | ||
67 | if idx > -1: | ||
68 | parent = parent[idx+len(pkgsplitname):] | ||
69 | else: | ||
70 | bb.error("Invalid path while looking for file ", parent) | ||
71 | for basename in dirlist: | ||
72 | fullpath = os.path.join(parent, basename) | ||
73 | try: | ||
74 | filesizedata[fullpath] = os.stat(pkgsplitname + fullpath).st_size | ||
75 | except OSError: | ||
76 | # we may hit a symlink that is not pointing correctly over package-split | ||
77 | filesizedata[fullpath] = 0 | ||
78 | lpkgdata[n] = filesizedata | ||
79 | 61 | ||
80 | # Fire an event containing the pkg data | 62 | # Fire an event containing the pkg data |
81 | bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d) | 63 | bb.event.fire(bb.event.MetadataEvent("SinglePackageInfo", lpkgdata), d) |