From: Ed Bartosh Date: Wed, 24 Aug 2016 10:16:15 +0000 (+0300) Subject: combo-layer: python3: fix UnicodeDecodeError X-Git-Tag: uninative-1.4~455 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=a7f1435c4c26237cdb55066c9f5408b4fdf016aa;p=openembedded-core.git combo-layer: python3: fix UnicodeDecodeError check_patch function opens patch file in text mode. This causes python3 to throw exception when calling readline(): UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa7 in position NNNN: invalid start byte Opening file in binary mode and using binary type instead of strings should fix this. Signed-off-by: Ed Bartosh Signed-off-by: Richard Purdie --- diff --git a/scripts/combo-layer b/scripts/combo-layer index 8f57ba58cf..b90bfc8800 100755 --- a/scripts/combo-layer +++ b/scripts/combo-layer @@ -482,32 +482,32 @@ def check_repo_clean(repodir): sys.exit(1) def check_patch(patchfile): - f = open(patchfile) + f = open(patchfile, 'rb') ln = f.readline() of = None in_patch = False beyond_msg = False - pre_buf = '' + pre_buf = b'' while ln: if not beyond_msg: - if ln == '---\n': + if ln == b'---\n': if not of: break in_patch = False beyond_msg = True - elif ln.startswith('--- '): + elif ln.startswith(b'--- '): # We have a diff in the commit message in_patch = True if not of: print('WARNING: %s contains a diff in its commit message, indenting to avoid failure during apply' % patchfile) - of = open(patchfile + '.tmp', 'w') + of = open(patchfile + '.tmp', 'wb') of.write(pre_buf) - pre_buf = '' - elif in_patch and not ln[0] in '+-@ \n\r': + pre_buf = b'' + elif in_patch and not ln[0] in b'+-@ \n\r': in_patch = False if of: if in_patch: - of.write(' ' + ln) + of.write(b' ' + ln) else: of.write(ln) else: