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.

(From OE-Core rev: a7f1435c4c26237cdb55066c9f5408b4fdf016aa)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ed Bartosh 2016-08-24 13:16:15 +03:00 committed by Richard Purdie
parent 94646f4828
commit a81b326933

View File

@ -482,32 +482,32 @@ def check_repo_clean(repodir):
sys.exit(1) sys.exit(1)
def check_patch(patchfile): def check_patch(patchfile):
f = open(patchfile) f = open(patchfile, 'rb')
ln = f.readline() ln = f.readline()
of = None of = None
in_patch = False in_patch = False
beyond_msg = False beyond_msg = False
pre_buf = '' pre_buf = b''
while ln: while ln:
if not beyond_msg: if not beyond_msg:
if ln == '---\n': if ln == b'---\n':
if not of: if not of:
break break
in_patch = False in_patch = False
beyond_msg = True beyond_msg = True
elif ln.startswith('--- '): elif ln.startswith(b'--- '):
# We have a diff in the commit message # We have a diff in the commit message
in_patch = True in_patch = True
if not of: if not of:
print('WARNING: %s contains a diff in its commit message, indenting to avoid failure during apply' % patchfile) 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) of.write(pre_buf)
pre_buf = '' pre_buf = b''
elif in_patch and not ln[0] in '+-@ \n\r': elif in_patch and not ln[0] in b'+-@ \n\r':
in_patch = False in_patch = False
if of: if of:
if in_patch: if in_patch:
of.write(' ' + ln) of.write(b' ' + ln)
else: else:
of.write(ln) of.write(ln)
else: else: