tools/perf: Fix parallel-perf python script to replace new python syntax ":=" usage
authorAthira Rajeev <atrajeev@linux.vnet.ibm.com>
Sun, 23 Jun 2024 06:48:50 +0000 (12:18 +0530)
committerNamhyung Kim <namhyung@kernel.org>
Tue, 25 Jun 2024 18:06:19 +0000 (11:06 -0700)
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 <atrajeev@linux.vnet.ibm.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: akanksha@linux.ibm.com
Cc: kjain@linux.ibm.com
Cc: maddy@linux.ibm.com
Cc: disgoel@linux.vnet.ibm.com
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Link: https://lore.kernel.org/r/20240623064850.83720-3-atrajeev@linux.vnet.ibm.com
tools/perf/scripts/python/parallel-perf.py

index 21f32ec5ed46df7c20c29109a9c36cdbdb73137a..be85fd7f66320df69c2b063d051ba0ca21d876ae 100755 (executable)
@@ -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()