@samitouri / QOSamiQemu / commits / b08e111b1e

scripts: nudge users to use 'run' script for scripts that import qemu.qmp

Now that qmp has to be installed and isn't local, we can no longer offer a simple forwarder for these scripts (nor path hacks) and hope that it works. Encourage users to use the 'run' script to use these scripts instead. Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Message-ID: <20260218213416.674483-18-jsnow@redhat.com> Signed-off-by: John Snow <jsnow@redhat.com>

John Snow committed Feb 18, 2026 at 16:34 UTC b08e111b1e1dd553828360efebd4775abac5fbaf
13 files changed +78 -77
scripts/compare-machine-types.py
+2 -5
@@ -27,19 +27,16 @@
27 # along with this program; if not, see <http://www.gnu.org/licenses/>.
28
29 import sys
30 -from os import path
30 from argparse import ArgumentParser, RawTextHelpFormatter, Namespace
31 import pandas as pd
32 from contextlib import ExitStack
33 from typing import Optional, List, Dict, Generator, Tuple, Union, Any, Set
34
35 try:
37 - qemu_dir = path.abspath(path.dirname(path.dirname(__file__)))
38 - sys.path.append(path.join(qemu_dir, 'python'))
36 from qemu.machine import QEMUMachine
37 except ModuleNotFoundError as exc:
41 - print(f"Module '{exc.name}' not found.")
42 - print("Try export PYTHONPATH=top-qemu-dir/python or run from top-qemu-dir")
38 + print(f"Module '{exc.name}' not found.", file=sys.stderr)
39 + print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
40 sys.exit(1)
41
42
scripts/qmp/qemu-ga-client
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils import qemu_ga_client
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(qemu_ga_client.main())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qemu-ga-client [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qmp-shell
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.qmp import qmp_shell
8 -
9 -
10 -if __name__ == '__main__':
11 - qmp_shell.main()
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qmp-shell [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qmp-shell-wrap
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.qmp import qmp_shell
8 -
9 -
10 -if __name__ == '__main__':
11 - qmp_shell.main_wrap()
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qmp-shell-wrap [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qom-fuse
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils.qom_fuse import QOMFuse
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(QOMFuse.entry_point())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qom-fuse [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qom-get
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils.qom import QOMGet
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(QOMGet.entry_point())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qom-get [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qom-list
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils.qom import QOMList
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(QOMList.entry_point())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qom-list [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qom-set
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils.qom import QOMSet
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(QOMSet.entry_point())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qom-set [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp/qom-tree
+6 -7
@@ -1,11 +1,10 @@
1 #!/usr/bin/env python3
2
3 -import os
3 import sys
4
6 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
7 -from qemu.utils.qom import QOMTree
8 -
9 -
10 -if __name__ == '__main__':
11 - sys.exit(QOMTree.entry_point())
5 +print(
6 + "This script has moved; after running configure,"
7 + " please use '$builddir/run qom-tree [...]' instead.",
8 + file=sys.stderr
9 +)
10 +sys.exit(1)
scripts/qmp_helper.py
+2 -7
@@ -13,17 +13,12 @@ import json
13 import sys
14
15 from datetime import datetime
16 -from os import path as os_path
16
17 try:
19 - qemu_dir = os_path.abspath(os_path.dirname(os_path.dirname(__file__)))
20 - sys.path.append(os_path.join(qemu_dir, 'python'))
21 -
18 from qemu.qmp.legacy import QEMUMonitorProtocol
23 -
19 except ModuleNotFoundError as exc:
25 - print(f"Module '{exc.name}' not found.")
26 - print("Try export PYTHONPATH=top-qemu-dir/python or run from top-qemu-dir")
20 + print(f"Module '{exc.name}' not found.", file=sys.stderr)
21 + print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
22 sys.exit(1)
23
24 from base64 import b64encode
scripts/render_block_graph.py
+7 -3
@@ -24,9 +24,13 @@ import subprocess
24 import json
25 from graphviz import Digraph
26
27 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'python'))
28 -from qemu.qmp import QMPError
29 -from qemu.qmp.legacy import QEMUMonitorProtocol
27 +try:
28 + from qemu.qmp import QMPError
29 + from qemu.qmp.legacy import QEMUMonitorProtocol
30 +except ModuleNotFoundError as exc:
31 + print(f"Module '{exc.name}' not found.", file=sys.stderr)
32 + print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
33 + sys.exit(1)
34
35
36 def perm(arr):
scripts/simplebench/bench_block_job.py
+7 -3
@@ -25,9 +25,13 @@ import subprocess
25 import socket
26 import json
27
28 -sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
29 -from qemu.machine import QEMUMachine
30 -from qemu.qmp import ConnectError
28 +try:
29 + from qemu.machine import QEMUMachine
30 + from qemu.qmp import ConnectError
31 +except ModuleNotFoundError as exc:
32 + print(f"Module '{exc.name}' not found.", file=sys.stderr)
33 + print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
34 + sys.exit(1)
35
36
37 def bench_block_job(cmd, cmd_args, qemu_args):
tests/migration-stress/guestperf/engine.py
+12 -3
@@ -27,9 +27,18 @@ from guestperf.progress import Progress, ProgressStats
27 from guestperf.report import Report, ReportResult
28 from guestperf.timings import TimingRecord, Timings
29
30 -sys.path.append(os.path.join(os.path.dirname(__file__),
31 - '..', '..', '..', 'python'))
32 -from qemu.machine import QEMUMachine
30 +try:
31 + from qemu.machine import QEMUMachine
32 +except ModuleNotFoundError as exc:
33 + print(
34 + f"Module '{exc.name}' not found.\n"
35 + "It should be installed as part of the configure-time "
36 + "virtual environment in $builddir/pyvenv.\n"
37 + "Try re-running this script as:\n"
38 + f"> $builddir/run {' '.join(sys.argv)}",
39 + file=sys.stderr
40 + )
41 + sys.exit(1)
42
43 # multifd supported compression algorithms
44 MULTIFD_CMP_ALGS = ("zlib", "zstd", "qpl", "uadk")