psamolysov created this revision. psamolysov added reviewers: dergachev.a, clang. psamolysov added a project: clang. Herald added a subscriber: cfe-commits.
When I run the 'exploded-graph-rewriter.py' tool on Windows using Python 3.5 and above, the following error and stack trace occurs: Traceback (most recent call last): File "C:\Work\Dev\llvm\llvm-monorepo\clang\utils\analyzer\exploded-graph-rewriter.py", line 1061, in <module> main() File "C:\Work\Dev\llvm\llvm-monorepo\clang\utils\analyzer\exploded-graph-rewriter.py", line 1057, in main explorer.explore(graph, visitor) File "C:\Work\Dev\llvm\llvm-monorepo\clang\utils\analyzer\exploded-graph-rewriter.py", line 911, in explore visitor.visit_end_of_graph() File "C:\Work\Dev\llvm\llvm-monorepo\clang\utils\analyzer\exploded-graph-rewriter.py", line 879, in visit_end_of_graph svg = graphviz.pipe('dot', 'svg', self.output()) File "C:\Program Files\Python37\lib\site-packages\graphviz\backend.py", line 229, in pipe out, _ = run(cmd, input=data, capture_output=True, check=True, quiet=quiet) File "C:\Program Files\Python37\lib\site-packages\graphviz\backend.py", line 166, in run out, err = proc.communicate(input) File "C:\Program Files\Python37\lib\subprocess.py", line 920, in communicate stdout, stderr = self._communicate(input, endtime, timeout) File "C:\Program Files\Python37\lib\subprocess.py", line 1238, in _communicate self._stdin_write(input) File "C:\Program Files\Python37\lib\subprocess.py", line 854, in _stdin_write self.stdin.write(input) TypeError: a bytes-like object is required, not 'str' Due to work with Unicode in Python begin from 3.5, the output string must be encoded, so I put the code to detect whether the script works on Python 3.5+ and use the encode() method if so. After this manipulations, the exploded-graph-rewriter.py script works fine on Windows and Python 3.7. I haven't tried the script on Python 2 Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D71746 Files: clang/utils/analyzer/exploded-graph-rewriter.py Index: clang/utils/analyzer/exploded-graph-rewriter.py =================================================================== --- clang/utils/analyzer/exploded-graph-rewriter.py +++ clang/utils/analyzer/exploded-graph-rewriter.py @@ -18,6 +18,7 @@ import logging import os import re +import sys #===-----------------------------------------------------------------------===# @@ -425,7 +426,10 @@ def output(self): assert not self._dump_dot_only - return ''.join(self._output) + if sys.version_info[0] > 2 and sys.version_info[1] >= 5: + return ''.join(self._output).encode() + else: + return ''.join(self._output) def _dump(self, s): s = s.replace('&', '&') \
Index: clang/utils/analyzer/exploded-graph-rewriter.py =================================================================== --- clang/utils/analyzer/exploded-graph-rewriter.py +++ clang/utils/analyzer/exploded-graph-rewriter.py @@ -18,6 +18,7 @@ import logging import os import re +import sys #===-----------------------------------------------------------------------===# @@ -425,7 +426,10 @@ def output(self): assert not self._dump_dot_only - return ''.join(self._output) + if sys.version_info[0] > 2 and sys.version_info[1] >= 5: + return ''.join(self._output).encode() + else: + return ''.join(self._output) def _dump(self, s): s = s.replace('&', '&') \
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits