d7fd737bf4
Meson tries to run scripts via the shebang line if they files are
marked as executable. If "python3" is not in the $PATH, or if it
is a version that is too old, then the script execution fails.
We should make sure to run scripts via the python3 interpreter
that is used for Meson itself. For this, the files need to be marked
as non-executable, then meson will use the python3 binary that has
been used to run itself.
Fixes: 956af7daad
("gdbstub: Introduce GDBFeature structure")
Signed-off-by: Thomas Huth <thuth@redhat.com>
Message-ID: <20231016094917.19044-1-thuth@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
49 lines
1.3 KiB
Python
49 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
|
|
import os, sys
|
|
|
|
def writeliteral(indent, bytes):
|
|
sys.stdout.write(' ' * indent)
|
|
sys.stdout.write('"')
|
|
quoted = True
|
|
|
|
for c in bytes:
|
|
if not quoted:
|
|
sys.stdout.write('\n')
|
|
sys.stdout.write(' ' * indent)
|
|
sys.stdout.write('"')
|
|
quoted = True
|
|
|
|
if c == b'"'[0]:
|
|
sys.stdout.write('\\"')
|
|
elif c == b'\\'[0]:
|
|
sys.stdout.write('\\\\')
|
|
elif c == b'\n'[0]:
|
|
sys.stdout.write('\\n"')
|
|
quoted = False
|
|
elif c >= 32 and c < 127:
|
|
sys.stdout.write(c.to_bytes(1, 'big').decode())
|
|
else:
|
|
sys.stdout.write(f'\{c:03o}')
|
|
|
|
if quoted:
|
|
sys.stdout.write('"')
|
|
|
|
sys.stdout.write('#include "qemu/osdep.h"\n' \
|
|
'#include "exec/gdbstub.h"\n' \
|
|
'\n'
|
|
'const GDBFeature gdb_static_features[] = {\n')
|
|
|
|
for input in sys.argv[1:]:
|
|
with open(input, 'rb') as file:
|
|
read = file.read()
|
|
|
|
sys.stdout.write(' {\n')
|
|
writeliteral(8, bytes(os.path.basename(input), 'utf-8'))
|
|
sys.stdout.write(',\n')
|
|
writeliteral(8, read)
|
|
sys.stdout.write('\n },\n')
|
|
|
|
sys.stdout.write(' { NULL }\n};\n')
|