diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2013-12-05 11:11:47 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-12-05 14:25:30 +0000 |
commit | 5c69ae26cd71fa3fdda31c9e7d112c26c9653fd8 (patch) | |
tree | 2a240e287e06a9d4c3486d382fd371834ffb00b9 | |
parent | b2a9b9152bf6d4f48fc4d97e0f1ae18144707486 (diff) | |
download | poky-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.bbclass | 25 |
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 | } |