[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