There are three paths for running the core checkpatch path: From a file, from stdin, or reading from git output. Currently, the file version of this calls the "email" library's decode routine which translates the stream into a bytes array, which we later call decode() to turn it back into a regular string. This works on python2 and python3, but the other paths don't work in python3 due to the following error:
$ utilities/checkpatch.py -1 == Checking HEAD~0 == Traceback (most recent call last): File "utilities/checkpatch.py", line 491, in <module> if ovs_checkpatch_parse(patch, revision): File "utilities/checkpatch.py", line 324, in ovs_checkpatch_parse for line in text.decode().split('\n'): AttributeError: 'str' object has no attribute 'decode' Rather than performing this extra encode/decode, strip these out from this path so that the stdin and git variants of checkpatch can work in python3. Signed-off-by: Joe Stringer <j...@ovn.org> --- utilities/checkpatch.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utilities/checkpatch.py b/utilities/checkpatch.py index b45a255ceb4b..dbbab3d11021 100755 --- a/utilities/checkpatch.py +++ b/utilities/checkpatch.py @@ -320,7 +320,7 @@ def ovs_checkpatch_parse(text, filename): is_co_author = re.compile(r'(\s*(Co-authored-by: )(.*))$', re.I | re.M | re.S) - for line in text.decode(errors='ignore').split('\n'): + for line in text.split('\n'): if current_file != previous_file: previous_file = current_file @@ -418,7 +418,7 @@ def ovs_checkpatch_file(filename): for part in mail.walk(): if part.get_content_maintype() == 'multipart': continue - result = ovs_checkpatch_parse(part.get_payload(decode=True), filename) + result = ovs_checkpatch_parse(part.get_payload(decode=False), filename) if result < 0: print("Lines checked: %d, Warnings: %d, Errors: %d" % (total_line, __warnings, __errors)) -- 2.12.2 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev