aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Lutomirski <luto@kernel.org>2019-11-13 13:10:23 -0800
committerAndy Lutomirski <luto@kernel.org>2019-11-13 13:10:23 -0800
commit7a5257bc978bc26637c7d6a8fa75851beba0bd80 (patch)
tree0e9f23023448116a4c519f387b167abcb9383c0b
parent73bb57a4e1b08e61bc290c282c787d8e0719135e (diff)
downloadvirtme-7a5257bc978bc26637c7d6a8fa75851beba0bd80.tar.gz
modfinder: Use find_binary_or_raise() to find modprobe
This should fix #53. Signed-off-by: Andy Lutomirski <luto@kernel.org>
-rw-r--r--virtme/modfinder.py6
-rw-r--r--virtme/util.py7
2 files changed, 10 insertions, 3 deletions
diff --git a/virtme/modfinder.py b/virtme/modfinder.py
index d0269b0..88f7df57 100644
--- a/virtme/modfinder.py
+++ b/virtme/modfinder.py
@@ -14,16 +14,16 @@ everything. The idea is to require very few modules.
from typing import List
import re
-import shutil
import subprocess
-import os, os.path
+import os
import itertools
+from . import util
_INSMOD_RE = re.compile('insmod (.*[^ ]) *$')
def resolve_dep(modalias, root=None, kver=None, moddir=None):
# /usr/sbin might not be in the path, and modprobe is usually in /usr/sbin
- modprobe = shutil.which('modprobe') or '/usr/sbin/modprobe'
+ modprobe = util.find_binary_or_raise(['modprobe'])
args = [modprobe, '--show-depends']
args += ['-C', '/var/empty']
if root is not None:
diff --git a/virtme/util.py b/virtme/util.py
index 16b7ef7..cc1787b 100644
--- a/virtme/util.py
+++ b/virtme/util.py
@@ -31,3 +31,10 @@ def find_binary(names: Sequence[str], root: str = '/',
# We give up.
return None
+
+def find_binary_or_raise(names: Sequence[str], root: str = '/',
+ use_path: bool = True) -> str:
+ ret = find_binary(names, root=root, use_path=use_path)
+ if ret is None:
+ raise RuntimeError('Could not find %r' % names)
+ return ret