perf test "perf script tests" fails as below in systems
with python 3.6

        File 
"/home/athira/linux/tools/perf/tests/shell/../../scripts/python/parallel-perf.py",
 line 442
        if line := p.stdout.readline():
             ^
        SyntaxError: invalid syntax
        --- Cleaning up ---
        ---- end(-1) ----
        92: perf script tests: FAILED!

This happens because ":=" is a new syntax that assigns values
to variables as part of a larger expression. This is introduced
from python 3.8 and hence fails in setup with python 3.6
Address this by splitting the large expression and check the
value in two steps:
Previous line: if line := p.stdout.readline():
Current change:
        line = p.stdout.readline()
        if line:

With patch

        ./perf test "perf script tests"
         93: perf script tests:  Ok

Signed-off-by: Athira Rajeev <atraj...@linux.vnet.ibm.com>
Acked-by: Adrian Hunter <adrian.hun...@intel.com>
---
Changelog:
v1 -> v2
Added "Acked-by" from Adrian

 tools/perf/scripts/python/parallel-perf.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/tools/perf/scripts/python/parallel-perf.py 
b/tools/perf/scripts/python/parallel-perf.py
index 21f32ec5ed46..be85fd7f6632 100755
--- a/tools/perf/scripts/python/parallel-perf.py
+++ b/tools/perf/scripts/python/parallel-perf.py
@@ -439,7 +439,8 @@ def ProcessCommandOutputLines(cmd, per_cpu, fn, *x):
        pat = re.compile(r"\s*\[[0-9]+\]")
        p = subprocess.Popen(cmd, stdout=subprocess.PIPE)
        while True:
-               if line := p.stdout.readline():
+               line = p.stdout.readline()
+               if line:
                        line = line.decode("utf-8")
                        if pat.match(line):
                                line = line.split()
-- 
2.35.3

Reply via email to