summaryrefslogtreecommitdiffstats
path: root/scripts/runqemu
diff options
context:
space:
mode:
authorJoshua Lock <joshua.g.lock@intel.com>2016-09-18 00:39:23 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2016-09-19 09:07:06 +0100
commit87cfb5165490cd4e7a8c2570ef5a62898db8395e (patch)
treed8c5d94897bcf64c874579d2b55b455315bf604a /scripts/runqemu
parente010d9be3709cf3c607ffc03c3188abe4e1e9eb4 (diff)
downloadopenembedded-core-contrib-87cfb5165490cd4e7a8c2570ef5a62898db8395e.tar.gz
runqemu: add guidance to resolve issues with missing files
When a required binary cannot be found print some guidance pointing to using a sourced OE build environment or a qemuboot.conf file, based on a similar message from the previous shell-based runqemu. Signed-off-by: Joshua Lock <joshua.g.lock@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/runqemu')
-rwxr-xr-xscripts/runqemu19
1 files changed, 16 insertions, 3 deletions
diff --git a/scripts/runqemu b/scripts/runqemu
index 380568560bd..6526536c25e 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -28,6 +28,16 @@ import shutil
import glob
import configparser
+class OEPathError(Exception):
+ """Custom Exception to give better guidance on missing binaries"""
+ def __init__(self, message):
+ self.message = "In order for this script to dynamically infer paths\n \
+kernels or filesystem images, you either need bitbake in your PATH\n \
+or to source oe-init-build-env before running this script.\n\n \
+Dynamic path inference can be avoided by passing a *.qemuboot.conf to\n \
+runqemu, i.e. `runqemu /path/to/my-image-name.qemuboot.conf`\n\n %s" % message
+
+
def create_logger():
logger = logging.getLogger('runqemu')
logger.setLevel(logging.INFO)
@@ -537,7 +547,7 @@ class BaseConfig(object):
elif os.getenv('DEPLOY_DIR_IMAGE'):
deploy_dir_image = os.getenv('DEPLOY_DIR_IMAGE')
else:
- raise Exception("DEPLOY_DIR_IMAGE is NULL!")
+ raise OEPathError("DEPLOY_DIR_IMAGE is NULL!")
if self.rootfs and not os.path.exists(self.rootfs):
# Lazy rootfs
@@ -691,7 +701,7 @@ class BaseConfig(object):
lockdir = "/tmp/qemu-tap-locks"
if not (self.qemuifup and self.qemuifdown and ip):
- raise Exception("runqemu-ifup, runqemu-ifdown or ip not found")
+ raise OEPathError("runqemu-ifup, runqemu-ifdown or ip not found")
if not os.path.exists(lockdir):
# There might be a race issue when multi runqemu processess are
@@ -808,7 +818,7 @@ class BaseConfig(object):
qemu_bin = '%s/%s' % (self.get('STAGING_BINDIR_NATIVE'), qemu_system)
if not os.access(qemu_bin, os.X_OK):
- raise Exception("No QEMU binary '%s' could be found" % qemu_bin)
+ raise OEPathError("No QEMU binary '%s' could be found" % qemu_bin)
check_libgl(qemu_bin)
@@ -923,6 +933,9 @@ def main():
if __name__ == "__main__":
try:
ret = main()
+ except OEPathError as err:
+ ret = 1
+ logger.error(err.message)
except Exception as esc:
ret = 1
import traceback