summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2013-12-05 11:11:47 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-05 14:25:30 +0000
commit5c69ae26cd71fa3fdda31c9e7d112c26c9653fd8 (patch)
tree2a240e287e06a9d4c3486d382fd371834ffb00b9
parentb2a9b9152bf6d4f48fc4d97e0f1ae18144707486 (diff)
downloadpoky-5c69ae26cd71fa3fdda31c9e7d112c26c9653fd8.tar.gz
classes/buildhistory: fix reading of package-specific values from pkgdata
When writing out variable values to pkgdata, if the value has been set in the datastore with an override for the package, we use the package name override in the pkgdata key as well; however the recently added code to read pkgdata in buildhistory.bbclass was just using the override where we normally expect to have it. However, if a recipe overrides one of the values that is normally set for the recipe on a per-package basis (e.g. the external-sourcery-toolchain recipe sets PKGV this way) then this led to KeyErrors. Re-write the pkgdata loading code to always strip off the package name override if it is present. (From OE-Core rev: e40e8e574b3688400a668d3ad76b6cef1920e3e0) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/classes/buildhistory.bbclass25
1 files changed, 14 insertions, 11 deletions
diff --git a/meta/classes/buildhistory.bbclass b/meta/classes/buildhistory.bbclass
index d25496d0da..1e6d968520 100644
--- a/meta/classes/buildhistory.bbclass
+++ b/meta/classes/buildhistory.bbclass
@@ -187,7 +187,10 @@ python buildhistory_emit_pkghistory() {
187 with open(os.path.join(pkgdata_dir, 'runtime', pkg)) as f: 187 with open(os.path.join(pkgdata_dir, 'runtime', pkg)) as f:
188 for line in f.readlines(): 188 for line in f.readlines():
189 item = line.rstrip('\n').split(': ', 1) 189 item = line.rstrip('\n').split(': ', 1)
190 pkgdata[item[0]] = item[1].decode('string_escape') 190 key = item[0]
191 if key.endswith('_' + pkg):
192 key = key[:-len(pkg)-1]
193 pkgdata[key] = item[1].decode('string_escape')
191 194
192 pkge = pkgdata.get('PKGE', '0') 195 pkge = pkgdata.get('PKGE', '0')
193 pkgv = pkgdata['PKGV'] 196 pkgv = pkgdata['PKGV']
@@ -211,19 +214,19 @@ python buildhistory_emit_pkghistory() {
211 pkginfo.pe = pkgdata.get('PE', '0') 214 pkginfo.pe = pkgdata.get('PE', '0')
212 pkginfo.pv = pkgdata['PV'] 215 pkginfo.pv = pkgdata['PV']
213 pkginfo.pr = pkgdata['PR'] 216 pkginfo.pr = pkgdata['PR']
214 pkginfo.pkg = pkgdata['PKG_%s' % pkg] 217 pkginfo.pkg = pkgdata['PKG']
215 pkginfo.pkge = pkge 218 pkginfo.pkge = pkge
216 pkginfo.pkgv = pkgv 219 pkginfo.pkgv = pkgv
217 pkginfo.pkgr = pkgr 220 pkginfo.pkgr = pkgr
218 pkginfo.rprovides = sortpkglist(squashspaces(pkgdata.get('RPROVIDES_%s' % pkg, ""))) 221 pkginfo.rprovides = sortpkglist(squashspaces(pkgdata.get('RPROVIDES', "")))
219 pkginfo.rdepends = sortpkglist(squashspaces(pkgdata.get('RDEPENDS_%s' % pkg, ""))) 222 pkginfo.rdepends = sortpkglist(squashspaces(pkgdata.get('RDEPENDS', "")))
220 pkginfo.rrecommends = sortpkglist(squashspaces(pkgdata.get('RRECOMMENDS_%s' % pkg, ""))) 223 pkginfo.rrecommends = sortpkglist(squashspaces(pkgdata.get('RRECOMMENDS', "")))
221 pkginfo.rsuggests = sortpkglist(squashspaces(pkgdata.get('RSUGGESTS_%s' % pkg, ""))) 224 pkginfo.rsuggests = sortpkglist(squashspaces(pkgdata.get('RSUGGESTS', "")))
222 pkginfo.rreplaces = sortpkglist(squashspaces(pkgdata.get('RREPLACES_%s' % pkg, ""))) 225 pkginfo.rreplaces = sortpkglist(squashspaces(pkgdata.get('RREPLACES', "")))
223 pkginfo.rconflicts = sortpkglist(squashspaces(pkgdata.get('RCONFLICTS_%s' % pkg, ""))) 226 pkginfo.rconflicts = sortpkglist(squashspaces(pkgdata.get('RCONFLICTS', "")))
224 pkginfo.files = squashspaces(pkgdata.get('FILES_%s' % pkg, "")) 227 pkginfo.files = squashspaces(pkgdata.get('FILES', ""))
225 for filevar in pkginfo.filevars: 228 for filevar in pkginfo.filevars:
226 pkginfo.filevars[filevar] = pkgdata.get('%s_%s' % (filevar, pkg), "") 229 pkginfo.filevars[filevar] = pkgdata.get(filevar, "")
227 230
228 # Gather information about packaged files 231 # Gather information about packaged files
229 val = pkgdata.get('FILES_INFO', '') 232 val = pkgdata.get('FILES_INFO', '')
@@ -232,7 +235,7 @@ python buildhistory_emit_pkghistory() {
232 filelist.sort() 235 filelist.sort()
233 pkginfo.filelist = " ".join(filelist) 236 pkginfo.filelist = " ".join(filelist)
234 237
235 pkginfo.size = int(pkgdata['PKGSIZE_%s' % pkg]) 238 pkginfo.size = int(pkgdata['PKGSIZE'])
236 239
237 write_pkghistory(pkginfo, d) 240 write_pkghistory(pkginfo, d)
238} 241}