From bb9377a20559de07e1dbe91399902c70cfafccea Mon Sep 17 00:00:00 2001 From: Olaf Hering Date: Thu, 1 Jul 2021 11:56:01 +0200 Subject: [PATCH] tools/python: fix Python3.4 TypeError in format string MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Using the first element of a tuple for a format specifier fails with python3.4 as included in SLE12: b = b"string/%x" % (i, ) TypeError: unsupported operand type(s) for %: 'bytes' and 'tuple' It happens to work with python 2.7 and 3.6. To support older Py3, format as strings and explicitly encode as ASCII. Signed-off-by: Olaf Hering Reviewed-by: Andrew Cooper Acked-by: Marek Marczykowski-Górecki (cherry picked from commit a27976a1080d537fb1f212a8f9133d60daa0025b) --- tools/python/scripts/convert-legacy-stream | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/python/scripts/convert-legacy-stream b/tools/python/scripts/convert-legacy-stream index 227e1b5c3f..7fe375a668 100755 --- a/tools/python/scripts/convert-legacy-stream +++ b/tools/python/scripts/convert-legacy-stream @@ -346,9 +346,9 @@ def read_libxl_toolstack(vm, data): if bytearray(name)[-1] != 0: raise StreamError("physmap name not NUL terminated") - root = b"physmap/%x" % (phys, ) - kv = [root + b"/start_addr", b"%x" % (start, ), - root + b"/size", b"%x" % (size, ), + root = ("physmap/%x" % (phys, )).encode('ascii') + kv = [root + b"/start_addr", ("%x" % (start, )).encode('ascii'), + root + b"/size", ("%x" % (size, )).encode('ascii'), root + b"/name", name[:-1]] for key, val in zip(kv[0::2], kv[1::2]): -- 2.39.5