[OE-core] [PATCH] buildhistory.bbclass: Specify lang in decoding strings
Paul Eggleton
paul.eggleton at linux.intel.com
Sat Dec 28 22:52:18 UTC 2013
On Friday 06 December 2013 16:11:54 Khem Raj wrote:
> On systems where default locale is utf-8 we get errors like
>
> File: 'buildhistory.bbclass', lineno: 38, function: write_pkghistory
> 0034: if pkginfo.rconflicts:
> 0035: f.write("RCONFLICTS = %s\n" % pkginfo.rconflicts)
> 0036: f.write("PKGSIZE = %d\n" % pkginfo.size)
> 0037: f.write("FILES = %s\n" % pkginfo.files)
> *** 0038: f.write("FILELIST = %s\n" % pkginfo.filelist)
> 0039:
> 0040: for filevar in pkginfo.filevars:
> 0041: filevarpath = os.path.join(pkgpath, "latest.%s" % filevar)
> 0042: val = pkginfo.filevars[filevar]
> Exception: UnicodeEncodeError: 'ascii' codec can't encode character
> u'\xed' in position 337: ordinal not in range(128)
>
> This patch specifies decode to use utf-8 so ascii and utf-8 based
> locales both work
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
> meta/classes/buildhistory.bbclass | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/meta/classes/buildhistory.bbclass
> b/meta/classes/buildhistory.bbclass index 1e6d968..4ff39a0 100644
> --- a/meta/classes/buildhistory.bbclass
> +++ b/meta/classes/buildhistory.bbclass
> @@ -190,7 +190,7 @@ python buildhistory_emit_pkghistory() {
> key = item[0]
> if key.endswith('_' + pkg):
> key = key[:-len(pkg)-1]
> - pkgdata[key] = item[1].decode('string_escape')
> + pkgdata[key] = item[1].decode('utf-8', 'string_escape')
>
> pkge = pkgdata.get('PKGE', '0')
> pkgv = pkgdata['PKGV']
Khem, did you test that this actually works? Here it does not - I get strings
with \n \t in them; reverting this change makes it interpret these as it
should.
Cheers,
Paul
--
Paul Eggleton
Intel Open Source Technology Centre
More information about the Openembedded-core
mailing list