diff options
author | Andy Lutomirski <luto@kernel.org> | 2019-11-13 13:10:23 -0800 |
---|---|---|
committer | Andy Lutomirski <luto@kernel.org> | 2019-11-13 13:10:23 -0800 |
commit | 7a5257bc978bc26637c7d6a8fa75851beba0bd80 (patch) | |
tree | 0e9f23023448116a4c519f387b167abcb9383c0b | |
parent | 73bb57a4e1b08e61bc290c282c787d8e0719135e (diff) | |
download | virtme-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.py | 6 | ||||
-rw-r--r-- | virtme/util.py | 7 |
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 |