]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
scripts: nudge users to use 'run' script for scripts that import qemu.qmp
authorJohn Snow <jsnow@redhat.com>
Wed, 18 Feb 2026 21:34:12 +0000 (16:34 -0500)
committerJohn Snow <jsnow@redhat.com>
Tue, 24 Feb 2026 18:11:29 +0000 (13:11 -0500)
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>
13 files changed:
scripts/compare-machine-types.py
scripts/qmp/qemu-ga-client
scripts/qmp/qmp-shell
scripts/qmp/qmp-shell-wrap
scripts/qmp/qom-fuse
scripts/qmp/qom-get
scripts/qmp/qom-list
scripts/qmp/qom-set
scripts/qmp/qom-tree
scripts/qmp_helper.py
scripts/render_block_graph.py
scripts/simplebench/bench_block_job.py
tests/migration-stress/guestperf/engine.py

index b4f899082a7015a41ac4d2c8778671f8d2048829..83be361f4f6ce47396b2b6e08177072fdb5971d5 100755 (executable)
 # along with this program; if not, see <http://www.gnu.org/licenses/>.
 
 import sys
-from os import path
 from argparse import ArgumentParser, RawTextHelpFormatter, Namespace
 import pandas as pd
 from contextlib import ExitStack
 from typing import Optional, List, Dict, Generator, Tuple, Union, Any, Set
 
 try:
-    qemu_dir = path.abspath(path.dirname(path.dirname(__file__)))
-    sys.path.append(path.join(qemu_dir, 'python'))
     from qemu.machine import QEMUMachine
 except ModuleNotFoundError as exc:
-    print(f"Module '{exc.name}' not found.")
-    print("Try export PYTHONPATH=top-qemu-dir/python or run from top-qemu-dir")
+    print(f"Module '{exc.name}' not found.", file=sys.stderr)
+    print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
     sys.exit(1)
 
 
index 56edd0234a62cc25a069bb6a65dc552a2949f8c6..7ea01b9a11d70c0d0f02b69d464b3417ac75fa95 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils import qemu_ga_client
-
-
-if __name__ == '__main__':
-    sys.exit(qemu_ga_client.main())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qemu-ga-client [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 4a20f97db708b74ebfed715e38ea325d52edd411..436c4940c263d603baef8132c4a58872c5296082 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.qmp import qmp_shell
-
-
-if __name__ == '__main__':
-    qmp_shell.main()
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qmp-shell [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 9e94da114f5f87588639f6b2cc636391e80c3864..f63dadad1eda8c3e240037444592649772290eda 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.qmp import qmp_shell
-
-
-if __name__ == '__main__':
-    qmp_shell.main_wrap()
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qmp-shell-wrap [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index d453807b273f5576c90c8809df2bbf9e3ef94118..7d4724a371004d8465bfa4e4277bb69b5932cd52 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils.qom_fuse import QOMFuse
-
-
-if __name__ == '__main__':
-    sys.exit(QOMFuse.entry_point())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qom-fuse [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 04ebe052e82a97bbadde1dfc76c485fc575212ff..96363539624857bf48520f116e60c6ba13ddadc0 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils.qom import QOMGet
-
-
-if __name__ == '__main__':
-    sys.exit(QOMGet.entry_point())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qom-get [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 853b85a8d3fc4e032f40747c3c082943bc8845b6..e988274d1e753e070e114f39f17dbe7d568916ce 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils.qom import QOMList
-
-
-if __name__ == '__main__':
-    sys.exit(QOMList.entry_point())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qom-list [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 06820feec424ecd30235c6ed90065fba541e097c..c2569afdcd7b60d86c32eb8982ee3b7f843fc448 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils.qom import QOMSet
-
-
-if __name__ == '__main__':
-    sys.exit(QOMSet.entry_point())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qom-set [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index 760e172277e9b66ff2a6d770b526847369f2fdb4..b3cd5ab6f82a7240156ef7fc08fe9db105107639 100755 (executable)
@@ -1,11 +1,10 @@
 #!/usr/bin/env python3
 
-import os
 import sys
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.utils.qom import QOMTree
-
-
-if __name__ == '__main__':
-    sys.exit(QOMTree.entry_point())
+print(
+    "This script has moved; after running configure,"
+    " please use '$builddir/run qom-tree [...]' instead.",
+    file=sys.stderr
+)
+sys.exit(1)
index c1e7e0fd80ce3b8d7a45326af68c8f04d7ee9714..521612fb9461bd352f0d79cb94f72d6658d3dee8 100755 (executable)
@@ -13,17 +13,12 @@ import json
 import sys
 
 from datetime import datetime
-from os import path as os_path
 
 try:
-    qemu_dir = os_path.abspath(os_path.dirname(os_path.dirname(__file__)))
-    sys.path.append(os_path.join(qemu_dir, 'python'))
-
     from qemu.qmp.legacy import QEMUMonitorProtocol
-
 except ModuleNotFoundError as exc:
-    print(f"Module '{exc.name}' not found.")
-    print("Try export PYTHONPATH=top-qemu-dir/python or run from top-qemu-dir")
+    print(f"Module '{exc.name}' not found.", file=sys.stderr)
+    print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
     sys.exit(1)
 
 from base64 import b64encode
index 3e1a2e3fa717bdd39c492026b3d259abbe21fa5f..b9079bbed52e1becfdeff98de5dcf77d9859669c 100755 (executable)
@@ -24,9 +24,13 @@ import subprocess
 import json
 from graphviz import Digraph
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'python'))
-from qemu.qmp import QMPError
-from qemu.qmp.legacy import QEMUMonitorProtocol
+try:
+    from qemu.qmp import QMPError
+    from qemu.qmp.legacy import QEMUMonitorProtocol
+except ModuleNotFoundError as exc:
+    print(f"Module '{exc.name}' not found.", file=sys.stderr)
+    print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
+    sys.exit(1)
 
 
 def perm(arr):
index e575a3af10e3a762340502f0a78ef870941600ad..541a47e586d693ab30b577d646463fb2ef31b95f 100755 (executable)
@@ -25,9 +25,13 @@ import subprocess
 import socket
 import json
 
-sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))
-from qemu.machine import QEMUMachine
-from qemu.qmp import ConnectError
+try:
+    from qemu.machine import QEMUMachine
+    from qemu.qmp import ConnectError
+except ModuleNotFoundError as exc:
+    print(f"Module '{exc.name}' not found.", file=sys.stderr)
+    print(f"Try $builddir/run {' '.join(sys.argv)}", file=sys.stderr)
+    sys.exit(1)
 
 
 def bench_block_job(cmd, cmd_args, qemu_args):
index d8462db76534ef988236f8910482c2c9f1b7083a..8d2ed757af3a5c701e644b166130d079d13d7aaa 100644 (file)
@@ -27,9 +27,18 @@ from guestperf.progress import Progress, ProgressStats
 from guestperf.report import Report, ReportResult
 from guestperf.timings import TimingRecord, Timings
 
-sys.path.append(os.path.join(os.path.dirname(__file__),
-                             '..', '..', '..', 'python'))
-from qemu.machine import QEMUMachine
+try:
+    from qemu.machine import QEMUMachine
+except ModuleNotFoundError as exc:
+    print(
+        f"Module '{exc.name}' not found.\n"
+        "It should be installed as part of the configure-time "
+        "virtual environment in $builddir/pyvenv.\n"
+        "Try re-running this script as:\n"
+        f"> $builddir/run {' '.join(sys.argv)}",
+        file=sys.stderr
+    )
+    sys.exit(1)
 
 # multifd supported compression algorithms
 MULTIFD_CMP_ALGS = ("zlib", "zstd", "qpl", "uadk")