aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@kernel.org>2019-09-27 13:39:40 -0700
committerAndy Lutomirski <luto@kernel.org>2019-09-27 13:39:40 -0700
commit1a0c124b4f7eb1e0d7c08ed00f401e2485fc1cbb (patch)
treeda16d10a23b652a8712516fc0fd5d1d965337534
parent9a8d4477ea68a191ffd3140b8f149d88bf1a58e4 (diff)
downloadvirtme-1a0c124b4f7eb1e0d7c08ed00f401e2485fc1cbb.tar.gz
Print a less awful error message when virtme-prep-kdir-mods fails
Signed-off-by: Andy Lutomirski <luto@kernel.org>
-rw-r--r--virtme/commands/run.py24
1 files changed, 20 insertions, 4 deletions
diff --git a/virtme/commands/run.py b/virtme/commands/run.py
index 53a86ed..16422d1 100644
--- a/virtme/commands/run.py
+++ b/virtme/commands/run.py
@@ -18,6 +18,7 @@ import shlex
import re
import itertools
import pkg_resources
+import subprocess
from .. import virtmods
from .. import modfinder
from .. import mkinitramfs
@@ -27,6 +28,9 @@ from .. import guest_tools
uname = os.uname()
+class SilentError(Exception):
+ pass
+
def make_parser():
parser = argparse.ArgumentParser(
description='Virtualize your system (or another) under a kernel image',
@@ -180,8 +184,11 @@ def find_kernel_and_mods(arch, args):
arg_fail("please run virtme-prep-kdir-mods to update virtme's kernel modules directory or use --mods=auto", show_usage=False)
else:
# Auto-refresh virtme's kernel modules directory
- guest_tools.run_script('virtme-prep-kdir-mods')
- kernel.moddir = os.path.join(virtme_mods, 'lib/modules', '0.0.0')
+ try:
+ guest_tools.run_script('virtme-prep-kdir-mods')
+ except subprocess.CalledProcessError:
+ raise SilentError()
+ kernel.moddir = os.path.join(virtme_mods, 'lib/modules', '0.0.0')
kernel.modfiles = modfinder.find_modules_from_install(
virtmods.MODALIASES, root=virtme_mods, kver='0.0.0')
else:
@@ -227,7 +234,7 @@ _SAFE_PATH_PATTERN = '[a-zA-Z0-9_+ /.-]+'
_RWDIR_RE = re.compile('^(%s)(?:=(%s))?$' %
(_SAFE_PATH_PATTERN, _SAFE_PATH_PATTERN))
-def main():
+def do_it():
args = _ARGPARSER.parse_args()
arch = architectures.get(args.arch)
@@ -540,5 +547,14 @@ def main():
if not args.dry_run:
os.execv(qemu.qemubin, qemuargs)
+def main():
+ try:
+ do_it()
+ except SilentError:
+ return 1
+
if __name__ == '__main__':
- exit(main())
+ try:
+ exit(main())
+ except SilentError:
+ exit(1)